{"id":23413157,"url":"https://github.com/permaleaks/torweave","last_synced_at":"2026-06-16T16:32:07.455Z","repository":{"id":62585022,"uuid":"329748184","full_name":"PermaLeaks/torweave","owner":"PermaLeaks","description":"privacy protocol built on the blockweave + permaleaks SDK","archived":false,"fork":false,"pushed_at":"2021-01-17T22:08:33.000Z","size":84,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-19T19:58:28.483Z","etag":null,"topics":["arweave","privacy","python","tor"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PermaLeaks.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-01-14T22:20:20.000Z","updated_at":"2024-01-19T10:27:59.000Z","dependencies_parsed_at":"2022-11-03T21:38:30.755Z","dependency_job_id":null,"html_url":"https://github.com/PermaLeaks/torweave","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/PermaLeaks/torweave","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PermaLeaks%2Ftorweave","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PermaLeaks%2Ftorweave/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PermaLeaks%2Ftorweave/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PermaLeaks%2Ftorweave/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PermaLeaks","download_url":"https://codeload.github.com/PermaLeaks/torweave/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PermaLeaks%2Ftorweave/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281324168,"owners_count":26481666,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-27T02:00:05.855Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arweave","privacy","python","tor"],"created_at":"2024-12-22T19:25:33.174Z","updated_at":"2025-10-27T19:05:38.874Z","avatar_url":"https://github.com/PermaLeaks.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# torweave\n\n\u003ch1\u003erequirements\u003c/h1\u003e\nTo run torweave as intended, it's required to install Tor (software not the browser) on your system and run a Tor circuit\n\nIf you're using Debian, just run as root:\n\n```\n\u003e apt-get install tor\n\u003e tor\n```\n\n\u003ch1\u003eInstall\u003c/h1\u003e\n\n```\n\u003e python -m pip install torweave\n```\n\nif any error occured while building wheels of required packages, please try the following:\n```\n\u003e sudo pip install torweave\n```\n\n\u003ch1\u003ePlain English\u003c/h1\u003e\n\n\u003ch2\u003eWhy Tor?\u003c/h2\u003e\n\nOnion routing is implemented by encryption in the application layer of a communication protocol stack, nested like the layers of an onion. Tor encrypts the data, including the next node destination IP address, multiple times and sends it through a virtual circuit comprising successive, random-selection Tor relays. Each relay decrypts a layer of encryption to reveal the next relay in the circuit to pass the remaining encrypted data on to it. The final relay decrypts the innermost layer of encryption and sends the original data to its destination without revealing or knowing the source IP address [wikipedia]\n\u003cbr\u003e\nAnd as the Arweave protocol is based on HTTP, it was possible to mask your requests IP address before sending any request/query to the node.\n\u003cbr\u003e\n\u003ch2\u003eArweave Over Tor\u003c/h2\u003e\n\u003cbr\u003e\n\ntorweave is a python package built over Arweave HTTP api to make anonymous requests assuring `sender` privacy. we used `arweave-python-client` package to accelerate the developments. And since that package miss several essential functionalities like generating wallets, `/last_tx` issues and more, we have fixed it in torweave.\n\u003cbr\u003e\n\nit's not required to use `torweave` in intention to post/publish leaks on \u003ca href=\"https://permaleaks.org\"\u003epermaleaks.org\u003c/a\u003e, but if you are a user who cares about his ultimate anonymoty, `torweave` fits yoy. For non-technical users, permaleaks UI provide an easy way to publish files in the blockweave (protocol compatible).\n\u003cbr\u003e\n\n\u003cb\u003eDNS Leakage\u003c/b\u003e\n\ntorweave protects users from DNS leakage. Sending HTTP requests may ***(not always)*** leak your DNS to the public.\nInformation that might be leaked:\n- Your IP: xxx.xxx.xx\n- DNS IP: xxx.xxx.xx.xx\n- Hostname: xxx.xxx.xx.xx\n- ISP: ISP registred name\n- Country: ...\n- City: ...\n\n\u003ch2\u003eWhy not just using VPN?\u003c/h2\u003e\n\nIn principle, ***VPNs emphasize privacy, and Tor emphasizes anonymity***. While there’s some overlap between these two concepts, think of it this way: anonymity hides who you are, and privacy hides what you do.\n\nSo, A VPN encrypts your connection and routes it through an intermediary server in another location of the user’s choosing. This server is operated by the VPN provider which is a centralised private third service which holds users information: e-mails, phone numbers, payments data, and more. Over this decade, many VPN services have been over-taken by governements or got servers hacked.\n\nIn contracts, Tor encrypts your internet connection and routes it through a random sequence of servers run by volunteers (decentralised). The network sends your data through no less than three relays at random. Your data is encrypted once for each relay, including the IP address of the next relay in the sequence. A layer of encryption is removed at each relay, revealing the next relay in the sequence while hiding it from previous relays in the chain. No one relay can see the contents, source, and destination of internet traffic, making it extremely difficult to trace. \n\nUsing Tor you achieve:\n\n* Anonymous HTTP requests\n* Untraceable communication – Journalists and their sources, whistleblowers, activists, dissidents, and victims of crime who wish to remain anonymous can use Tor to securely communicate without being tracked or leaving behind a trail of evidence | PermaLeaks will launch later an enhanced version of weavemail protocol to add more anonymoty for on-chain communication.\n\n**VPN point of failure:** \u003cbr\u003e\nA VPN can hide your IP address, but the VPN provider can still see connection data and traffic passing through its servers. Although most VPN providers say they don’t keep logs of this information, using them for anonymity still requires trusting the VPN provider, whereas Tor uses a trustless system.\n\n\u003ch1\u003eHow torweave works?\u003c/h1\u003e\n\ntorweave is a wrapper of Arweave HTTP api which simply make HTTP requests via a proxy that happens to be Tor's local SOCKS proxy. The package is used to be written in python due the language performance in networking and large Tor's support.\n\n\u003ch2\u003eusage\u003c/h2\u003e\nCurrent torweave release isn't more than Arweave initialization over Tor, so it doesn't provide more than few functions: more extended than other python packages.\n\u003ch2\u003etraction\u003c/h2\u003e\nAfter finishing PermaLeaks platform development, torweave development will be continued. it will start *from* providing a SDK to interact with PermaLeaks locally, *to* build a privacy protocol for Arweave network.\n\u003ch2\u003eexamples\u003c/h2\u003e\nfirst you need to import the package:\n\n```\nfrom torweave.api import Torweave\n\n# creat a Tor circuit\nTorweave().get_tor()\n\n#get your real ip\nmy_ip = Torweave().get_real_ip()\nprint(my_ip)\n\n#get your masking ip\nexit_router_ip = Torweave().current_ip()\nprint(exit_router_ip)\n```\n\n**zero index start**\nbe anonymous from the start, create, and make your first transaction over Tor\n\n```\nwallet_jwk = Torweave().generate_wallet()\nprint(wallet_jwk)\n```\n\n**upload a .txt file**\n```\ntags = {\n        \"nickname\": \"required\",\n        \"category\": choose(\"hack\", \"leaks\", \"breach\", \"imported\")\n        \"type\": \"free\",\n        \"tags\": \"optional, words, acts, as, hashtags\"\n        }\n        \nTorweave().upload_txt(tags=tags, \"path/to/wallet.json\", \"path/filename.txt\")\n```\n\n\u003ch1\u003eLicense\u003c/h1\u003e\nMIT\n\n\u003ch1\u003eFollow us\u003c/h1\u003e\n* \u003ca href=\"https://twitter.com/permaleaks\"\u003eTwitter\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpermaleaks%2Ftorweave","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpermaleaks%2Ftorweave","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpermaleaks%2Ftorweave/lists"}