{"id":13446271,"url":"https://github.com/edsu/anon","last_synced_at":"2025-05-15T12:06:32.190Z","repository":{"id":18444883,"uuid":"21635629","full_name":"edsu/anon","owner":"edsu","description":"tweet about anonymous Wikipedia edits from particular IP address ranges","archived":false,"fork":false,"pushed_at":"2023-01-11T19:31:22.000Z","size":326,"stargazers_count":977,"open_issues_count":13,"forks_count":150,"subscribers_count":49,"default_branch":"master","last_synced_at":"2025-04-14T22:19:24.133Z","etag":null,"topics":["twitter","wikipedia"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/edsu.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":"2014-07-09T01:58:56.000Z","updated_at":"2025-03-17T22:46:20.000Z","dependencies_parsed_at":"2023-01-13T19:50:09.293Z","dependency_job_id":null,"html_url":"https://github.com/edsu/anon","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edsu%2Fanon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edsu%2Fanon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edsu%2Fanon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edsu%2Fanon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/edsu","download_url":"https://codeload.github.com/edsu/anon/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254337613,"owners_count":22054253,"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","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":["twitter","wikipedia"],"created_at":"2024-07-31T05:00:50.200Z","updated_at":"2025-05-15T12:06:27.163Z","avatar_url":"https://github.com/edsu.png","language":"JavaScript","funding_links":[],"categories":["JavaScript","CoffeeScript"],"sub_categories":[],"readme":"# anon\n\n[![Build Status](https://secure.travis-ci.org/edsu/anon.svg)](http://travis-ci.org/edsu/anon)\n[![Gitter chat](https://badges.gitter.im/edsu/anon.svg)](https://gitter.im/edsu/anon)\n\nanon will watch Wikipedia for *anonymous* edits from a set of named IP ranges\nand will tweet when it notices one. It was inspired by\n[@parliamentedits](https://twitter.com/parliamentedits) and was used to make\n[@congressedits](https://twitter.com/congressedits) available until the account\nwas suspended by Twitter in 2018. An archive of the @congressedits tweets up\nuntil that point is [available](https://edsu.github.io/congressedits-archive/).\nFor more about why the @congressedits accounts was suspended see [this\narticle](http://thewikipedian.net/2019/01/17/congressedits-twitter-suspended/)\nfrom The Wikipedian. anon is now being used by a [community](#community) of\nusers to post selected Wikipedia edits to Twitter.\n\nanon can also send updates on [GNU Social /\nMastodon](https://github.com/tootsuite/mastodon) (see below)\n\n## Run\n\nTo run anon you will need to:\n\n1. install [Node](http://nodejs.org) (v6 or higher)\n1. `git clone https://github.com/edsu/anon.git`\n1. `cd anon`\n1. `npm install`\n1. `cp config.json.template config.json`\n1. add twitter credentials for your bot to `config.json` (make sure the Twitter\napp you create has read/write permission so it can tweet)\n1. add IP ranges/names to `config.json`\n1. modify status template if desired\n1. `./anon.js\n\n### IP Ranges\n\nYou will notice in the example `config.json.template` that you can configure\nip address ranges using a netmask:\n\n    \"143.231.0.0/16\"\n\nor with an array of start/end IP addresses:\n\n    [\"143.231.0.0\", \"143.231.255.255\"]\n\nThese two are equivalent, but the former is a bit faster, and easier to read.\nThe latter is convenient if your range is difficult to express using a netmask.\n\nIf you would like your configuration file to reference the IP addresses in \nthe external file just use the filename. So instead of:\n\n```javascript\n{\n  \"nick\": \"anon1234\",\n  \"accounts\": [\n    {\n      \"consumer_key\": \"\",\n      \"consumer_secret\": \"\",\n      \"access_token\": \"\",\n      \"access_token_secret\": \"\",\n      \"template\": \"{{page}} Wikipedia article edited anonymously from {{name}} {{\u0026url}}\",\n      \"ranges\": {\n        \"Home Network\": [\n          [\"192.168.1.1\", \"192.168.255.255\"]\n        ]\n      }\n    }\n  ]\n}\n```\n\nyou would have:\n\n```javascript\n{\n  \"nick\": \"anon1234\",\n  \"accounts\": [\n    {\n      \"consumer_key\": \"\",\n      \"consumer_secret\": \"\",\n      \"access_token\": \"\",\n      \"access_token_secret\": \"\",\n      \"template\": \"{{page}} Wikipedia article edited anonymously from {{name}} {{\u0026url}}\",\n      \"ranges\": \"ranges.json\"\n    }\n  ]\n}\n```\n\n### Mastodon\n\nIf you want to send messages on Mastodon you'll need to create an application\nand then get an access token for the account you want to send on. A utility is\nincluded to help you do that:\n\n    npm run mastodon\n\n### Debugging\n\nIf you would like to test without tweeting you can run anon with the\n`--noop` flag, which will cause the tweet to be written to the console\nbut not actually sent to Twitter.\n\n    ./anon.js --noop\n\nIf you would like to see all the change activity (URLs for each change) to test\nthat it is actually listening, use the `--verbose` flag:\n\n    ./anon.js --verbose\n\n### Alternate Configuration Files\n\nBy default anon will look for a `config.json` file in your current working\ndirectory. If you would like to specify the location of the configuration\nfile, use the `--config` parameter:\n\n    ./anon.js --config test.config\n\n## With Docker\n\n### Build image\n\n1. git clone the repo\n1. `cd anon`\n1. `docker build . -t anon`\n\n### Run image\n\n1. create your `config.json` file\n1. `docker run -v $PWD/config.json:/opt/anon/config.json anon`\n\n## Develop\n\nThere is not much to anon but there is a small test suite, which might\ncome in handy if you want to add functionality.\n\n    npm test\n\n## Which Wikipedias?\n\nanon uses the [wikichanges](https://github.com/edsu/wikichanges) module\nto listen to 38 language Wikipedias. wikichanges achieves this by logging\nin to the Wikimedia IRC server and listening to the\n[recent changes](https://meta.wikimedia.org/wiki/IRC/Channels#Recent_changes)\nchannels for each Wikipedia. So if you plan on running wikichanges be sure\nyour network supports IRC (it can sometimes be blocked).\n\nHere are the Wikipedias that it currently supports:\n\n* [Arabic](https://ar.wikipedia.org)\n* [Bulgarian](https://bg.wikipedia.org)\n* [Catalan](https://ca.wikipedia.org)\n* [Chinese](https://zh.wikipedia.org)\n* [Czech](https://cs.wikipedia.org)\n* [Danish](https://da.wikipedia.org)\n* [Dutch](https://nl.wikipedia.org)\n* [English](https://en.wikipedia.org)\n* [Esperanto](https://eo.wikipedia.org)\n* [Euskara](https://eu.wikipedia.org)\n* [Farsi](https://fa.wikipedia.org)\n* [Finnish](https://fi.wikipedia.org)\n* [French](https://fr.wikipedia.org)\n* [German](https://de.wikipedia.org)\n* [Greek](https://el.wikipedia.org)\n* [Hebrew](https://he.wikipedia.org)\n* [Hungarian](https://hu.wikipedia.org)\n* [Indonesian](https://id.wikipedia.org)\n* [Italian](https://it.wikipedia.org)\n* [Japanese](https://ja.wikipedia.org)\n* [Korean](https://ko.wikipedia.org)\n* [Lithuanian](https://lt.wikipedia.org)\n* [Malaysian](https://ms.wikipedia.org)\n* [Norwegian](https://no.wikipedia.org)\n* [Polish](https://pl.wikipedia.org)\n* [Portuguese](https://pt.wikipedia.org)\n* [Romanian](https://ro.wikipedia.org)\n* [Russian](https://ru.wikipedia.org)\n* [Slovak](https://sk.wikipedia.org)\n* [Slovene](https://sl.wikipedia.org)\n* [Spanish](https://es.wikipedia.org)\n* [Swedish](https://sv.wikipedia.org)\n* [Turkish](https://tr.wikipedia.org)\n* [Ukrainian](https://uk.wikipedia.org)\n* [Vietnamese](https://vi.wikipedia.org)\n* [Volapük](https://vo.wikipedia.org)\n\nAdditionally, the following miscellaneous Wikimedia sites: \n* [Wikidata](https://wikidata.org)\n* [Wikimedia Commons](https://commons.wikimedia.org)\n\nIf you would like to have another one added please add a ticket to the\n[wikichanges](https://github.com/edsu/wikichanges/issues)\nissue tracker.\n\n## Community\n\nBelow is a list of known anon instances. Please feel free to add, in an alphabetic order, your\nown by sending a pull request.\n\n* [@2dekameredits](https://twitter.com/2dekameredits)\n* [@5thEstateWiki](https://twitter.com/5thEstateWiki)\n* [@academyedits](https://twitter.com/academyedits)\n* [@AnonGoIWPEdits](https://twitter.com/anongoiwpedits)\n* [@atWikiEdits](https://twitter.com/atWikiEdits)\n* [@AUSgovEdits](https://twitter.com/AUSgovEdits)\n* [@AussieParlEdits](https://twitter.com/AussieParlEdits)\n* [@bankedits](https://twitter.com/bankedits)\n* [@bcgovedits](https://twitter.com/bcgovedits)\n* [@bclegedits](https://twitter.com/bclegedits)\n* [@beehive_edits](https://twitter.com/beehive_edits)\n* [@berlinEDUedits](https://twitter.com/berlinEDUedits)\n* [@BotDetectorCamb](https://twitter.com/BotDetectorCamb)\n* [@BrockWikiEdits](https://twitter.com/BrockWikiEdits)\n* [@brwikiedits](https://twitter.com/brwikiedits)\n* [@ciaedits](https://twitter.com/ciaedits)\n* [@cmuedits](https://twitter.com/cmuedits)\n* [@congresseditors](https://twitter.com/congresseditors)\n* [@congressedits](https://edsu.github.io/congressedits-archive/) **Banned** \n  * [@congressedits on mastodon](https://botsin.space/@congressedits)\n* [@CPDWikiEdits](https://twitter.com/CPDWikiEdits)\n* [@DailEireannEdit](https://twitter.com/DailEireannEdit)\n* [@DoDEdits](https://twitter.com/DoDEdits)\n* [@EagleWikiEdits](https://twitter.com/EagleWikiEdits)\n* [@EduskuntaEdit](https://twitter.com/EduskuntaEdit)\n* [@EstadoEdita](https://twitter.com/EstadoEdita)\n* [@FinlandEdits](https://twitter.com/FinlandEdits)\n* [@FloridaEdits](https://twitter.com/FloridaEdits)\n* [@FTingetWikiEdit](https://twitter.com/FTingetWikiEdit)\n* [@gamingedits](https://twitter.com/gamingeditsbot)\n* [@gccaedits](https://twitter.com/gccaedits)\n* [@goldmanedits](https://twitter.com/goldmanedits)\n* [@gruedits](https://twitter.com/gruedits)\n* [@harvardedits](https://twitter.com/harvardedits)\n* [@hgbedit](https://twitter.com/hgbedit)\n* [@IEGoveEdits](https://twitter.com/IEGovEdits)\n* [@IrishGovEdits](https://twitter.com/IrishGovEdits)\n* [@israeledits](https://twitter.com/israeledits)\n* [@ItaGovEdits](https://twitter.com/ItaGovEdits)\n* [@kameredits](https://twitter.com/kameredits)\n* [@LAGovEdits](https://twitter.com/lagovedits)\n* [@LATechEdits](https://twitter.com/LATechEdits)\n* [@lc_edits](https://twitter.com/lc_edits)\n* [@LRSwikiedits](https://twitter.com/LRSwikiedits)\n* [@michigan_edits](https://twitter.com/michigan_edits)\n* [@MinistEditor](https://twitter.com/MinistEditor)\n* [@MITedits](https://twitter.com/MITedits)\n* [@monsantoedits](https://twitter.com/monsantoedits)\n* [@NATOedits](https://twitter.com/NATOedits)\n* [@NCGAedits](https://twitter.com/NCGAedits)\n* [@nsaedits](https://twitter.com/nsaedits)\n* [@nsgovedits](https://twitter.com/nsgovedits)\n* [@NYPDedits](https://twitter.com/NYPDedits)\n* [@ODTUedits](https://twitter.com/ODTUedits)\n* [@oiledits](https://twitter.com/oiledits)\n* [@ONgovEdits](https://twitter.com/ONgovEdits)\n* [@OverheidEdits](https://twitter.com/OverheidEdits)\n* [@PakistanEdits](https://twitter.com/PakistanEdits)\n* [@Parlamento_Wiki](https://twitter.com/Parlamento_Wiki)\n* [@parliamentedits](https://twitter.com/parliamentedits)\n* [@parlizaedits](https://twitter.com/parlizaedits)\n* [@pentagon-edits](https://twitter.com/pentagonedits)\n* [@phrmaedits](https://twitter.com/phrmaedits)\n* [@rcmp_edits](https://twitter.com/rcmp_edits)\n* [@Regierungsedits](https://twitter.com/Regierungsedits)\n* [@reichstagedits](https://twitter.com/reichstagedits)\n* [@RialtasWatch](https://twitter.com/RialtasWatch)\n* [@RiksdagWikiEdit](https://twitter.com/RiksdagWikiEdit)\n* [@RuGovEdits_en](https://twitter.com/RuGovEdits_en)\n* [@RuGovEdits](https://twitter.com/RuGovEdits)\n* [@stanfordedits](https://twitter.com/stanfordedits)\n* [@swissgovedit](https://twitter.com/swissgovedit)\n* [@TBMMedits](https://twitter.com/TBMMedits)\n* [@TSKedits](https://twitter.com/TSKedits)\n* [@UaGovEdits_en](https://twitter.com/UaGovEdits_en)\n* [@UaGovEdits](https://twitter.com/UaGovEdits)\n* [@UaGoveEdits_ru](https://twitter.com/UaGovEdits_ru)\n* [@UBCEdits](https://twitter.com/UBCEdits)\n* [@uc_wiki_edits](https://twitter.com/uc_wiki_edits)\n* [@UChicago_edits](https://twitter.com/UChicago_edits)\n* [@UGAediting](https://twitter.com/UGAediting)\n* [@un_edits](https://twitter.com/un_edits)\n* [@valleyedits](https://twitter.com/valleyedits)\n* [@WhitehallEdits](https://twitter.com/WhitehallEdits)\n* [@whitehousedits](https://twitter.com/whitehousedits)\n* [@wikiAssemblee](https://twitter.com/wikiAssemblee)\n* [@WikiCreeperEdit](https://twitter.com/WikiCreeperEdit)\n* [@wikistorting](https://twitter.com/wikistorting)\n* [@zagovedits](https://twitter.com/zagovedits)\n\n## License:\n\n* [CC0](LICENSE) public domain dedication\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedsu%2Fanon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fedsu%2Fanon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedsu%2Fanon/lists"}