<?xml version="1.0" encoding="UTF-8" ?> <?xml-stylesheet type="text/xsl" href="rss.xsl"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/"> <channel> <title>anoni.net Docs — Sinophone Asia-Pacific Networked Freedom Observatory</title><description>Taiwan-anchored volunteer observatory tracking networked freedom across the Sinophone Asia-Pacific region — OONI measurements, Tor relay monitoring, and on-the-ground community context.</description><link>https://ipfs.anoni.net/en/</link><atom:link href="https://ipfs.anoni.net/en/feed_rss_updated.xml" rel="self" type="application/rss+xml" /> <managingEditor>anoni.net Volunteer</managingEditor><docs>https://github.com/anoni-net/docs</docs><language>en</language> <pubDate>Wed, 26 Aug 2026 09:24:12 -0000</pubDate> <lastBuildDate>Wed, 26 Aug 2026 09:24:12 -0000</lastBuildDate> <ttl>1440</ttl> <generator>MkDocs RSS plugin - v1.19.0</generator> <image> <url>None</url> <title>anoni.net Docs — Sinophone Asia-Pacific Networked Freedom Observatory</title> <link>https://ipfs.anoni.net/en/</link> </image> <item> <title>The Anonymity Networks Community Is Going to Global Gathering 2026</title> <author>anoni.net Community</author> <category>Community</category> <category>News</category> <description>&lt;h1 id=&#34;The-Anonymity-Networks-Community-Is-Going-to-Global-Gathering-2026&#34;&gt;The Anonymity Networks Community Is Going to Global Gathering 2026&lt;a class=&#34;headerlink&#34; href=&#34;#The-Anonymity-Networks-Community-Is-Going-to-Global-Gathering-2026&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt; &lt;p&gt;Global Gathering 2026, hosted by Team CommUNITY, runs from 4 to 6 September in Estoril, Portugal. We applied for a booth and the slot is now confirmed.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Date and time: 6 September, &lt;code&gt;13:00&lt;/code&gt; to &lt;code&gt;15:00&lt;/code&gt; WEST (UTC+1, Portugal local time during the event)&lt;/li&gt; &lt;li&gt;Location: Booth &lt;code&gt;6&lt;/code&gt; in the Regional Perspectives Village, 3 x 3 meters&lt;/li&gt; &lt;li&gt;Booth title: anoni.net Hub: Sinophone Asia-Pacific Networked Freedom&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Event details are at &lt;a href=&#34;https://wiki.digitalrights.community/index.php?title=2026_Global_Gathering_Programming&#34; target=&#34;_blank&#34;&gt;Global Gathering 2026&lt;/a&gt;.&lt;/p&gt; &lt;h2 id=&#34;What-the-Global-Gathering-is&#34;&gt;What the Global Gathering is&lt;a class=&#34;headerlink&#34; href=&#34;#What-the-Global-Gathering-is&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;The Global Gathering is an annual event hosted by Team CommUNITY. It draws people from around the world whose work covers digital rights, internet freedom, and protecting civil society from digital attacks.&lt;/p&gt; &lt;p&gt;There is no main stage and no keynote, and the three days are built out of Circles, Meetups that bring together a region or a shared topic, and Booths open to anyone walking past. Villages then group those activities by theme, such as Circumvention Tech, Digital Security, and Regional Perspectives. Our booth sits in the Regional Perspectives Village.&lt;/p&gt; &lt;h2 id=&#34;Why-we-are-taking-part&#34;&gt;Why we are taking part&lt;a class=&#34;headerlink&#34; href=&#34;#Why-we-are-taking-part&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;This is our first time at the Global Gathering, and the main hope is to meet more people, both technologists developing anonymity networks and other circumvention tools, and others working across the Asia region.&lt;/p&gt; &lt;p&gt;We are a group of volunteers who care about anonymity networks and internet freedom, starting from Taiwan, and what we do covers keeping journalists&#39; sources protected, letting activists organize without leaving traces, and helping people support sensitive causes without exposing who they are. All three rest on having an anonymity network that works. We run the Matrix home server &lt;code&gt;im.anoni.net&lt;/code&gt; and this docs site, which keeps our observations and discussions somewhere they can be checked.&lt;/p&gt; &lt;p&gt;The community counts from the &lt;a href=&#34;../../../../event-workshop-2025/&#34;&gt;anonymity network workshop&lt;/a&gt; we ran in August 2025, where the first group of members came together. Three threads are open in 2026, with practical privacy guides sorted by scenario for everyday life, sensitive work, and high risk, campus Tor relays pushed forward together with EFF and the Tor Project and one already running at National Taiwan Normal University, and the anonymous payment work we are bringing to the booth.&lt;/p&gt; &lt;p&gt;Others across the Asia-Pacific work on the same problems, and so far each side has not known the other exists. Sinophone communities are spread across Taiwan, Hong Kong, China, Japan, and Southeast Asia, the situations they run into are connected, and opportunities to compare experiences are rare.&lt;/p&gt; &lt;p&gt;The other purpose is taking part in coordination across the region, since internet freedom work is rarely something a single community can finish, what any one of us can observe and maintain has limits, and most of these problems need more than one region to cover them properly. Establishing contact first is what makes working together possible later.&lt;/p&gt; &lt;p&gt;For the 30 minutes of mobile throttling in northern Taiwan on 13 August, we turned OONI&#39;s public data into &lt;a href=&#34;../ooni-mobile-throttle-drill-results/&#34;&gt;a guided tour of what it recorded&lt;/a&gt;. Taiwan logged 238 connection speed tests from 47 devices that day, one of which saw its median download fall from &lt;code&gt;132,096&lt;/code&gt; kbit/s to &lt;code&gt;1,223&lt;/code&gt; kbit/s, and every query in the write-up runs without a key so anyone can recheck it. That record comes along to Estoril, and if anyone there is working on shutdowns or throttling, it is available for comparison.&lt;/p&gt; &lt;h2 id=&#34;We-are-bringing-anonymous-payment-to-the-booth&#34;&gt;We are bringing anonymous payment to the booth&lt;a class=&#34;headerlink&#34; href=&#34;#We-are-bringing-anonymous-payment-to-the-booth&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;The agenda went up in late August, and across the three days it covers shutdown response, circumvention tools, platform accountability, AI governance, and journalist safety. Having gone through the Circles, Villages, and Booths one by one, we found no session that takes financial privacy as its subject. Donor anonymity, cross-border disbursement, and what sanctions and currency controls do to civil society appear in no session title or description. A few sessions do take fundraising strategy and grant applications as their subject, where the focus is getting money in. How a payment reaches its recipient without exposing them goes unaddressed.&lt;/p&gt; &lt;p&gt;Sanctions lists, banks refusing to do business, donation records being subpoenaed: these are day-to-day realities for many organizations, with no matching discussion anywhere on the agenda.&lt;/p&gt; &lt;p&gt;We are making anonymous payment the main topic at our booth. As a community we are still at the research stage, gathering real situations, including who needs an anonymous money trail and under what circumstances, where current practice breaks down, and what limits regulation and compliance impose.&lt;/p&gt; &lt;p&gt;The people we would especially like to talk to:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Operators with cross-border disbursement experience&lt;/strong&gt;: particularly where the recipient sits in a high-risk or sanctioned region.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Organisations that have dealt with donor anonymity&lt;/strong&gt;: who know where the current tools fall short.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Projects blocked by financial controls&lt;/strong&gt;: unable to receive support because a bank refused them or currency rules got in the way.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Anyone following the topic in research or advocacy&lt;/strong&gt;: the regulatory side included.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Please just walk up during the booth slot, with no appointment and no prepared topic needed, and topics other than anonymous payment are just as welcome. The booth is meant to work as a regional meeting point, so that people in the room can find each other.&lt;/p&gt; &lt;h2 id=&#34;Another-team-from-Taiwan-is-at-the-Gathering&#34;&gt;Another team from Taiwan is at the Gathering&lt;a class=&#34;headerlink&#34; href=&#34;#Another-team-from-Taiwan-is-at-the-Gathering&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Cofacts is here too, at Booth &lt;code&gt;10&lt;/code&gt; on 6 September, &lt;code&gt;13:00&lt;/code&gt; to &lt;code&gt;15:00&lt;/code&gt; WEST, the same two hours as our own slot. They are showing &lt;a href=&#34;https://cofacts.ai/&#34; target=&#34;_blank&#34;&gt;Cofacts.ai&lt;/a&gt;, a multi-agent AI framework built on top of the crowdsourced fact-checking community and chatbot they have run for years.&lt;/p&gt; &lt;p&gt;The two subjects meet in the same place. A public sphere needs information that can be checked, and it needs a network that carries that information without exposing the people passing it along. Both booths are open the same afternoon, so please come to both.&lt;/p&gt; &lt;h2 id=&#34;Sessions-on-the-agenda-that-overlap-with-our-work&#34;&gt;Sessions on the agenda that overlap with our work&lt;a class=&#34;headerlink&#34; href=&#34;#Sessions-on-the-agenda-that-overlap-with-our-work&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;On anonymity and circumvention:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Technologist Meetup (4 September, &lt;code&gt;13:30&lt;/code&gt; to &lt;code&gt;14:30&lt;/code&gt;) is where technologists working in digital rights and public interest technology get to know each other, hosted in the Circumvention Tech Village, and we are looking for people with experience maintaining measurement tools or self-hosted services.&lt;/li&gt; &lt;li&gt;Cross-Borders Storytelling: Device Searches, Metadata, and Collective Preparation compares experiences of device searches and metadata scrutiny across regions, and covers digital, legal, physical, and psychosocial preparation. Sinophone journalists cross jurisdictions often, and how others prepare is something we can put to use.&lt;/li&gt; &lt;li&gt;Can Signal Become Phishing-Resistant? addresses phishing aimed at journalists and activists, where the attacks abuse Signal&#39;s legitimate account recovery and device-linking workflows, with no software vulnerability required. How to write the risk in account recovery into a privacy guide is what we are after in this session.&lt;/li&gt; &lt;li&gt;Lights in the Tunnel: Co-Creating an Accountability Framework for VPN Transparency starts drafting a methodology for assessing VPN transparency and accountability, along with the providers to be evaluated. People keep asking us which VPN they can trust, so we want to know how that methodology turns into advice a user can act on.&lt;/li&gt; &lt;li&gt;Age Verification and Digital Identity Systems runs across two sessions, mapping how these systems are being rolled out and by whom, and discussing the harm-reduction pathways civil society can push for.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;On measurement and regional coordination:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Strengthening Rapid Response Efforts to Censorship Events covers how groups around the world coordinate when censorship events emerge, including OONI&#39;s tools and methods for rapid response. We work with OONI&#39;s public data, and the August throttling write-up came out of the same methods.&lt;/li&gt; &lt;li&gt;Asia Meetup (4 September, &lt;code&gt;12:00&lt;/code&gt; to &lt;code&gt;13:00&lt;/code&gt;) is a connection point for people working across the Asia region, and it is where we hope to meet others nearby working on adjacent problems.&lt;/li&gt; &lt;li&gt;Internet Shutdown Contingency Planning Help Desk builds a shutdown contingency plan around your own threat model, using the BRACE framework. Taiwan runs drills every year that give us something to compare against, and which parts of the framework connect is what we need to work out.&lt;/li&gt; &lt;li&gt;We See, We Archive, We Remember addresses how public-interest information can be preserved when it is being erased, drawing on archival work from Hong Kong, China, Iran, and Palestine.&lt;/li&gt; &lt;/ul&gt; &lt;h2 id=&#34;Booths-we-plan-to-visit&#34;&gt;Booths we plan to visit&lt;a class=&#34;headerlink&#34; href=&#34;#Booths-we-plan-to-visit&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;The Onion Odyssey Cryptographic Universe is run by the Tor Project together with the Guardian Project (Orbot, Onion Browser), at Booth &lt;code&gt;22&lt;/code&gt; in the Circumvention Tech Village, open all three days, and we want to hear about the friction Sinophone users hit with Orbot and Onion Browser.&lt;/li&gt; &lt;li&gt;Lockdown Systems brings OnionShare, which shares files, hosts websites, and runs chat anonymously over the Tor network, alongside Cyd for backing up and deleting social media history, and where a source gets stuck the first time they use it is exactly the kind of detail our privacy guides need.&lt;/li&gt; &lt;li&gt;Air Messenger is built on the MLS protocol, combining end-to-end encryption, low metadata, and a federated architecture, and since we run a Matrix home server ourselves, we want to know how far a federated setup can push metadata down.&lt;/li&gt; &lt;li&gt;Amnezia VPN shows their research on VPN blocking and DPI filtering, along with Amnezia Pulse for tracking shutdowns, and we want to compare our August throttling data against how they decide a shutdown is happening.&lt;/li&gt; &lt;li&gt;LEAP&#39;s MANTA measures tunnel health in censored environments, and we want to find out whether the same measurement approach fits the connectivity we see in Taiwan. Their booth (Booth &lt;code&gt;21&lt;/code&gt;) is open on 4 September only, &lt;code&gt;15:30&lt;/code&gt; to &lt;code&gt;17:30&lt;/code&gt;, and a MANTA session runs in the Circumvention Tech Village earlier that day, &lt;code&gt;15:00&lt;/code&gt; to &lt;code&gt;16:00&lt;/code&gt;.&lt;/li&gt; &lt;li&gt;po1ytech&#39;s polymorphic is an automated mirror system that keeps blocked independent media reachable, and we want to ask how much staffing it takes to keep running, because a volunteer community has limited capacity and sustainability comes first when choosing tools.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;The full agenda is at &lt;a href=&#34;https://wiki.digitalrights.community/index.php?title=2026_Global_Gathering_Programming&#34; target=&#34;_blank&#34;&gt;Global Gathering 2026&lt;/a&gt;, and it runs far wider than what is listed here.&lt;/p&gt; &lt;h2 id=&#34;For-those-attending&#34;&gt;For those attending&lt;a class=&#34;headerlink&#34; href=&#34;#For-those-attending&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Our booth is on the final day, which leaves no fixed spot for the first two days. Any of the following will reach us.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;The Matrix room set up for the event is the most reliable, at &lt;a href=&#34;https://matrix.to/#/%23gg2026:im.anoni.net&#34; target=&#34;_blank&#34;&gt;&lt;code&gt;#gg2026:im.anoni.net&lt;/code&gt;&lt;/a&gt;, where a message is enough to arrange a time and place, no phone numbers need to change hands, and we will reply as soon as we can during the event. Any Matrix account can join, so a free &lt;code&gt;matrix.org&lt;/code&gt; account works and takes a couple of minutes to set up. Times in that room are in WEST unless someone says otherwise. Accounts on &lt;code&gt;im.anoni.net&lt;/code&gt; are issued by a person and take a day or two, which is too slow for meeting someone at the venue, so do not wait on one.&lt;/li&gt; &lt;li&gt;Two sessions on 4 September are ones we will be attending, the Asia Meetup (&lt;code&gt;12:00&lt;/code&gt; to &lt;code&gt;13:00&lt;/code&gt; WEST) and the Technologist Meetup (&lt;code&gt;13:30&lt;/code&gt; to &lt;code&gt;14:30&lt;/code&gt; WEST), so meeting there works directly.&lt;/li&gt; &lt;li&gt;We will most likely be around for the Networking Hour, &lt;code&gt;12:00&lt;/code&gt; to &lt;code&gt;13:00&lt;/code&gt; WEST each day, though plans may still shift, so checking that room before you leave for Estoril helps. On 4 September that hour is where the Asia Meetup above sits, so it is one slot rather than two.&lt;/li&gt; &lt;li&gt;We will be at the venue for most of the three days, with anoni.net and a handle on our badges, so please do say hello.&lt;/li&gt; &lt;li&gt;The booth slot on 6 September, &lt;code&gt;13:00&lt;/code&gt; to &lt;code&gt;15:00&lt;/code&gt; WEST, is the easiest place to find us, and giving the name you go by is enough.&lt;/li&gt; &lt;/ul&gt; &lt;h2 id=&#34;Taking-part-without-travelling&#34;&gt;Taking part without travelling&lt;a class=&#34;headerlink&#34; href=&#34;#Taking-part-without-travelling&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Most people will not be travelling to Portugal, and there are still two things we can do together.&lt;/p&gt; &lt;p&gt;Please write down a coordination gap you have run into and send it to us, and we will take it along to compare against what other regions are seeing. Observations from Taiwan do not surface often at international events, and describing one concrete situation carries further than an abstract overview.&lt;/p&gt; &lt;p&gt;We would also like to hear real experiences of anonymous payment, so if you or an organization you know has dealt with small cross-border support, the trade-off between donation receipts and identity disclosure, or a recipient put at risk because a money trail identified them, that experience is what the booth needs. Anything you would rather not attach your name to can go to the anonymous mailbox below. We check it within a few hours across the three days of the Gathering, and reply within a day or two the rest of the time.&lt;/p&gt; &lt;p&gt;Beyond the event, all three threads for 2026 are short of hands. The privacy guides need people to sort scenarios and proofread, campus Tor relays need someone willing to ask about feasibility at their own institution, and the anonymous payment work needs more real cases. If you have compared the August throttling write-up against the raw OONI data and have something to add or correct, that is welcome too. Say which part interests you in the Matrix room.&lt;/p&gt; &lt;h2 id=&#34;Help-pass-this-along&#34;&gt;Help pass this along&lt;a class=&#34;headerlink&#34; href=&#34;#Help-pass-this-along&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;The booth runs for one slot only, and whether the right people walk past depends a great deal on how far word travels. If you know someone heading to Estoril, or there are journalists and open source community members around you working on these topics, please forward this to them, and there is no need to tell us first. If someone responds after you do, sharing that in the Matrix room helps us connect with them before we set off.&lt;/p&gt; &lt;h2 id=&#34;After-the-event&#34;&gt;After the event&lt;a class=&#34;headerlink&#34; href=&#34;#After-the-event&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Whatever the booth collects will be written up and published in a later newsletter and on this docs site. We look at the situation a case arose in, and the people and the region involved stay out of anything published. Both the list of coordination gaps and the anonymous payment cases are de-identified first.&lt;/p&gt; &lt;h2 id=&#34;Channels&#34;&gt;Channels&lt;a class=&#34;headerlink&#34; href=&#34;#Channels&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;During the event: Matrix room &lt;a href=&#34;https://matrix.to/#/%23gg2026:im.anoni.net&#34; target=&#34;_blank&#34;&gt;&lt;code&gt;#gg2026:im.anoni.net&lt;/code&gt;&lt;/a&gt;, for the three days of the Global Gathering&lt;/li&gt; &lt;li&gt;Live discussion: &lt;a href=&#34;../../../../community/tools/&#34;&gt;public Matrix room&lt;/a&gt; (home server &lt;code&gt;im.anoni.net&lt;/code&gt;)&lt;/li&gt; &lt;li&gt;Anonymous tips: whisper@anoni.net (&lt;a href=&#34;../../../../contact/&#34;&gt;GPG key&lt;/a&gt;), checked within a few hours during the Gathering&lt;/li&gt; &lt;/ul&gt;</description> <link>https://ipfs.anoni.net/en/blog/2026/08/2026-anoni-net-global-gathering/</link> <pubDate>Mon, 24 Aug 2026 20:53:34 +0000</pubDate> <source url="https://ipfs.anoni.net/en/feed_rss_updated.xml">anoni.net Docs — Sinophone Asia-Pacific Networked Freedom Observatory</source><guid isPermaLink="true">https://ipfs.anoni.net/en/blog/2026/08/2026-anoni-net-global-gathering/</guid> <enclosure url="https://ipfs.anoni.net/en/assets/images/social/blog/2026/08/2026-anoni-net-global-gathering.png" type="image/png" length="49583" /> </item> <item> <title>From Discord’s Age Verification to Why We Self-Host Matrix</title> <author>anoni.net Community</author> <category>Community</category> <category>News</category> <description>&lt;h1 id=&#34;From-Discords-Age-Verification-to-Why-We-Self-Host-Matrix&#34;&gt;From Discord’s Age Verification to Why We Self-Host Matrix&lt;a class=&#34;headerlink&#34; href=&#34;#From-Discords-Age-Verification-to-Why-We-Self-Host-Matrix&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt; &lt;p&gt;&lt;img alt=&#34;From Discord&#39;s age verification to why we self-host Matrix&#34; src=&#34;https://assets.anoni.net/blog/2026-discord-matrix-statement.png&#34; style=&#34;border-radius: 5px;&#34; /&gt;&lt;/p&gt; &lt;p&gt;On 2026/02/09, &lt;a href=&#34;https://discord.com/press-releases/discord-launches-teen-by-default-settings-globally&#34; target=&#34;_blank&#34;&gt;Discord announced a global “teen-by-default” rollout&lt;/a&gt; and stronger age verification (English coverage: &lt;a href=&#34;https://www.bbc.com/news/articles/c1d67vdlk1ko&#34; target=&#34;_blank&#34;&gt;BBC&lt;/a&gt;, &lt;a href=&#34;https://www.medianama.com/2026/02/223-discord-teen-by-default-settings-globally-next-month/&#34; target=&#34;_blank&#34;&gt;Medianama&lt;/a&gt;). New and existing users will default to a teen-oriented experience; to relax content filters or access age-gated spaces, users must complete verification via facial age estimation or by submitting ID. Discord frames this as a commitment to teen safety and Safer Internet Day, and will use an “age inference model” in the background to help assign age groups.&lt;/p&gt; &lt;p&gt;We are not dismissing Discord’s intent—youth protection and compliance are serious. But such measures also mean one thing: &lt;strong&gt;large platforms will need more personal data and behavioral signals to “classify” users&lt;/strong&gt;. Whether via face scans, ID documents, or algorithmic inference, the result is handing over “who you are, how old you are, where you are” to the platform and its partners. For many people who just want to chat, game, or collaborate, that may be an acceptable trade-off; for others, it raises the question: is there another way?&lt;/p&gt; &lt;h2 id=&#34;The-rules-and-the-data-belong-to-whoever-runs-the-server&#34;&gt;The rules and the data belong to whoever runs the server&lt;a class=&#34;headerlink&#34; href=&#34;#The-rules-and-the-data-belong-to-whoever-runs-the-server&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Commercial chat platforms have their own rules: terms of service, product direction, what data is retained, how algorithms and policies work—mostly driven by the company and shareholders, with little say for ordinary users and little visibility into how their data is used. This isn’t about “who is worse”; it’s about &lt;strong&gt;who gets to decide&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;The anoni.net community has chosen a different path: &lt;strong&gt;self-hosting a Matrix homeserver&lt;/strong&gt;. We run &lt;a href=&#34;https://github.com/matrix-construct/tuwunel&#34; target=&#34;_blank&#34;&gt;tuwunel&lt;/a&gt;, a high-performance Matrix homeserver implemented in Rust, on &lt;code&gt;im.anoni.net&lt;/code&gt; for community discussion and 2026 theme collaboration. Server configuration, retention policy, and channel rules are decided by operators and the community together—smaller scope, more predictable, and more transparent. Our focus is clear: &lt;strong&gt;internet freedom, anonymous networks, and privacy in practice&lt;/strong&gt;, not “anyone can join and talk about anything.” This is a themed, consensus-oriented workspace.&lt;/p&gt; &lt;!-- more --&gt; &lt;h2 id=&#34;Why-we-self-host-Matrix-tuwunel--imanoninet&#34;&gt;Why we self-host Matrix (tuwunel + im.anoni.net)&lt;a class=&#34;headerlink&#34; href=&#34;#Why-we-self-host-Matrix-tuwunel--imanoninet&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;&lt;a href=&#34;https://matrix.org/&#34;&gt;Matrix&lt;/a&gt; is an open, decentralised real-time communication protocol and ecosystem, enabling different platforms worldwide to communicate and interoperate securely. Anyone can run their own Matrix homeserver and set their own server rules, retention, and verification policy. We therefore self-host &lt;code&gt;im.anoni.net&lt;/code&gt; and use &lt;a href=&#34;https://github.com/matrix-construct/tuwunel&#34; target=&#34;_blank&#34;&gt;tuwunel&lt;/a&gt; (a high-performance Matrix homeserver written in Rust) to serve the community.&lt;/p&gt; &lt;p&gt;We use a &lt;strong&gt;registration-code system&lt;/strong&gt;: you obtain a registration code by emailing &lt;code&gt;whisper@anoni.net&lt;/code&gt; or through another trusted channel, then use that code to register on Matrix. &lt;strong&gt;At registration time&lt;/strong&gt; we do not require an email address; you choose your own username, and the server does not store identity-linked registration records. Codes are &lt;strong&gt;reusable (not single-use)&lt;/strong&gt;, so they cannot be used to infer who registered or when. So: there is one point of contact when obtaining a code, but &lt;strong&gt;inside the system&lt;/strong&gt;, registration and usage are not tied to email or real name—we keep “who is who” to the minimum needed to run the service.&lt;/p&gt; &lt;p&gt;The benefits of self-hosting and this flow are straightforward:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Minimal logging and tracking&lt;/strong&gt;: we keep “who did what when” to the smallest scope we can, and delete when we can.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;No real-name or verification requirement&lt;/strong&gt;: no mandatory ID upload, no phone or email—just a registration code to sign up.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Policies designed for sensitive topics and anonymous research&lt;/strong&gt;: whether you work on anonymous networks, censorship measurement, or other high-sensitivity areas, you don’t have to worry about account exposure; we will adjust policy as the community needs.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;So &lt;strong&gt;we chose Matrix not simply because Discord is “bad”&lt;/strong&gt;—rather, large platforms must serve business and the general public, while we need a space where we decide the rules, minimize data collection, and prioritize anonymity and privacy.&lt;/p&gt; &lt;h2 id=&#34;Accounts-need-a-registration-code-and-that-is-a-deliberate-trade-off&#34;&gt;Accounts need a registration code, and that is a deliberate trade-off&lt;a class=&#34;headerlink&#34; href=&#34;#Accounts-need-a-registration-code-and-that-is-a-deliberate-trade-off&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;So &lt;strong&gt;Matrix (im.anoni.net) and &lt;a href=&#34;https://cryptpad.anoni.net/&#34;&gt;Cryptpad&lt;/a&gt; accounts both require a registration code&lt;/strong&gt;, which you get by emailing &lt;code&gt;whisper@anoni.net&lt;/code&gt; or through another trusted channel. We (or that channel) reply with instructions or the code, and you then complete registration in the client. We do not allow open one-click signup, so we can reduce abuse while keeping “no identity stored at registration” as above.&lt;/p&gt; &lt;p&gt;A brief note on Cryptpad: &lt;strong&gt;Cryptpad is an end-to-end encrypted, privacy-focused collaborative platform&lt;/strong&gt; for shared pads, real-time notes, documents, to-do lists, whiteboards, and more. Content is encrypted throughout; only participants can access it. Unlike Google Docs and similar tools, Cryptpad has no server-side decryption and does not require trusting the operator—well suited to confidential or privacy-sensitive collaboration. We self-host Cryptpad so the community can discuss, co-edit, and collaborate with minimal risk of third-party collection or surveillance.&lt;/p&gt; &lt;p&gt;Why an application process:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;To avoid abuse&lt;/strong&gt;: open registration would quickly attract bots and bad actors; for a small self-hosted service, moderation would become unsustainable.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;So everyone who joins knows what this space is&lt;/strong&gt;: applicants understand that this is for themes like “personal privacy guidelines,” “Tor relays on campus,” and “anonymous payments”—not a general-purpose chat. People who write in for a code usually already have some interest in these topics.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;We’re protecting the space, not excluding people&lt;/strong&gt;: we don’t ask for real names or ID documents, only that you take a moment to write and briefly say what you’re interested in. If these themes matter to you, we welcome you to get in touch.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;For how to request accounts and get started, see &lt;a href=&#34;../../../../community/&#34;&gt;Community&lt;/a&gt;.&lt;/p&gt; &lt;h2 id=&#34;A-word-to-people-who-use-Discord&#34;&gt;A word to people who use Discord&lt;a class=&#34;headerlink&#34; href=&#34;#A-word-to-people-who-use-Discord&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;We don’t want this to feel like an either/or: many people need to stay on Discord for communities, games, or projects, and that’s fine. We’re saying: &lt;strong&gt;when you need to discuss sensitive topics or want higher privacy and a predictable environment, there is a small, stable Matrix space here&lt;/strong&gt;.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;If you want to dive into the 2026 themes (personal privacy guidelines, Tor Relay on campus, anonymous payments) or run experiments around anonymous networks, you’re welcome to do that on &lt;a href=&#34;../../../../community/&#34;&gt;Matrix and Cryptpad&lt;/a&gt;.&lt;/li&gt; &lt;li&gt;If you only want to follow along occasionally, staying on your current platform is fine. We’ll keep sharing progress on the site and at events; you can decide later whether to go further.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;anoni.net’s door stays open. The difference is that we think about this path in terms of &lt;strong&gt;who decides the rules and who holds the data&lt;/strong&gt;, and we use a self-hosted Matrix and an application-based account process to balance privacy and quality in a way we can live with.&lt;/p&gt;</description> <link>https://ipfs.anoni.net/en/blog/2026/02/2026-discord-matrix-statement/</link> <pubDate>Mon, 24 Aug 2026 20:53:34 +0000</pubDate> <source url="https://ipfs.anoni.net/en/feed_rss_updated.xml">anoni.net Docs — Sinophone Asia-Pacific Networked Freedom Observatory</source><guid isPermaLink="true">https://ipfs.anoni.net/en/blog/2026/02/2026-discord-matrix-statement/</guid> <enclosure url="https://ipfs.anoni.net/en/assets/images/post-update.png" type="image/png" length="81353" /> </item> <item> <title>Retracting what we published, and what changed on the docs site in the past two weeks</title> <author>anoni.net Community</author> <category>Community</category> <category>News</category> <description>&lt;h1 id=&#34;Retracting-what-we-published-and-what-changed-on-the-docs-site-in-the-past-two-weeks&#34;&gt;Retracting what we published, and what changed on the docs site in the past two weeks&lt;a class=&#34;headerlink&#34; href=&#34;#Retracting-what-we-published-and-what-changed-on-the-docs-site-in-the-past-two-weeks&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt; &lt;p&gt;&lt;img alt=&#34;What changed on the docs site&#34; src=&#34;../../../assets/images/post-update.png&#34; style=&#34;border-radius: 10px;box-shadow:1px 1px 0.6rem #00aeff;&#34; /&gt;&lt;/p&gt; &lt;p&gt;Several pages changed over the past two weeks, and in most cases the change was to withdraw a passage rather than extend it. Hong Kong moved from medium to high risk for device inspection, the exemption for eSIMs bought outside Japan came out, a 2FA app we recommended turned out to have changed owners, and a blocking distribution drawn from 40 samples was recomputed over all 22,105. The site merged 50 pull requests between 27 July and 10 August, and a sizeable share of them went into corrections of this kind. What follows is page by page: what changed, what the evidence was, and a checklist in the middle for anyone who already prepared using the old guidance.&lt;/p&gt; &lt;!-- more --&gt; &lt;h2 id=&#34;Three-claims-withdrawn-from-the-Asia-travel-guidance&#34;&gt;Three claims withdrawn from the Asia travel guidance&lt;a class=&#34;headerlink&#34; href=&#34;#Three-claims-withdrawn-from-the-Asia-travel-guidance&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;We re-verified the Asia travel guidance in early August, and six independent fact-checking passes led us to withdraw three claims from the Traditional Chinese edition. The English edition is a separately curated article, &lt;a href=&#34;../../../../scenarios/asia-travel/&#34;&gt;Device minimization and border crossings in Asia&lt;/a&gt;, which received the Hong Kong correction and its footnote.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;A Hong Kong border unlocking power effective 30 March &#34;without requiring national security suspicion.&#34;&lt;/strong&gt; What we withdrew is the scope qualifier. The claim appeared only on travel-information aggregators, which contradicted each other on the effective date (28 vs 30 March) and the penalty (6 months vs 1 year), and the government gazette, Department of Justice materials and primary news reporting had no matching text. The 23 March national security amendment (&lt;code&gt;Legal Notice 27 of 2026&lt;/code&gt;) itself is verifiable: in a national security investigation the authorities can demand a device password, refusal is a criminal offence, and travellers who merely clear immigration while transiting Hong Kong are covered.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;eSIMs bought outside Japan falling outside the new rules&lt;/strong&gt;: Mori Hamada &amp;amp; Matsumoto explicitly notes that this point is &#34;not stated in the documents,&#34; and we had written it up as advice a reader could rely on. The page now says that whether overseas providers are covered is left to a future ministerial ordinance, and that no one should travel on the assumption that an eSIM bought abroad is exempt.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Malaysia&#39;s ONSA processing more than 1,500 posts in its first week&lt;/strong&gt;: The 1,583 figure in the original source is the total of hate-content takedown requests from 1 January to 30 November 2025, which predates ONSA coming into force. The number was wrong, the law is not: the page keeps the Online Safety Act&#39;s January 2026 commencement, its scope over platform operators, and the practical effect of faster content removal.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;The same pass replaced the source for the South Korea section. The Cybernews article originally cited carries no byline and no citations, and the site has a disclosed relationship with a VPN alliance. We replaced it with Lumen Database &lt;code&gt;#73101162&lt;/code&gt; and The Korea Times, and an outdated &#34;200,000 cases&#34; figure became 356,945 cases reviewed in 2024.&lt;/p&gt; &lt;p&gt;Hong Kong also moved from medium to high risk for device inspection, on the strength of the same verifiable decryption obligation. Withdrawing an exaggerated claim while raising the risk level looks contradictory, and points at one thing: the obligation is real, only its scope was overstated.&lt;/p&gt; &lt;h2 id=&#34;A-2FA-app-we-recommended-had-changed-owners&#34;&gt;A 2FA app we recommended had changed owners&lt;a class=&#34;headerlink&#34; href=&#34;#A-2FA-app-we-recommended-had-changed-owners&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;&lt;a href=&#34;../../../../basics/multiple-identities/&#34;&gt;Maintaining multiple online identities&lt;/a&gt; recommended Raivo as a replacement for Authy. Raivo was acquired by Mobime in July 2023, and the acquirer&#39;s privacy policy introduced advertising trackers and log collection. The same line also explained that Authy&#39;s desktop client had been discontinued and therefore needed replacing, so the page argued against itself. The revision keeps only Aegis and 2FAS, and replaces the brand list with three durable criteria: open source, exportable backups, and no change of ownership.&lt;/p&gt; &lt;p&gt;Two more changes landed on the same page. &#34;Open a fresh account in your existing Gmail without linking a phone&#34; is not achievable in practice. The page now explains that mainstream free mail providers require phone verification at sign-up, and that accounts opened from the same device and IP may be linked by the provider anyway. The virtual number section warned only about WhatsApp bans, and now adds two decisive risks: paying by card reconnects the two layers, and recycled numbers get reassigned to someone who can then reset your accounts by SMS.&lt;/p&gt; &lt;p&gt;&lt;a href=&#34;../../../../basics/platform-tracking/&#34;&gt;How platforms collect your data&lt;/a&gt; stated that large-scale research had found no evidence of covert recording, which is easily read as proof that it does not happen. The page now says plainly that finding no evidence and proving absence are separate things, and adds the 2024 Cox Media Group Active Listening pitch deck (Google subsequently removed Cox Media Group from its advertising partner programme, and the company denied any actual listening).&lt;/p&gt; &lt;p&gt;Two further problems were conflicts across pages. &lt;a href=&#34;../../../../scenarios/activist/&#34;&gt;Activists and protest digital safety&lt;/a&gt; advised against buying prepaid SIMs under a real identity, which contradicted the per-jurisdiction SIM registration guidance newly expanded on the travel page, a page the new section pointed readers to twice. &lt;a href=&#34;../../../../scenarios/journalist/&#34;&gt;Journalists and source protection&lt;/a&gt; framed the landline-and-SMS trade-off as permission, and now notes that a case can escalate to the level where call records are obtainable, and that call records are typically retained longer than a case runs.&lt;/p&gt; &lt;p&gt;All six came out of eight pages answering reader questions that went up between late July and early August. A review pass followed, with three reviewers working in parallel on structure, line editing and the target reader.&lt;/p&gt; &lt;h2 id=&#34;If-you-followed-the-old-guidance&#34;&gt;If you followed the old guidance&lt;a class=&#34;headerlink&#34; href=&#34;#If-you-followed-the-old-guidance&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Five of the items above change preparations a reader may already have made. Here is the current position and the action for each.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Travel to Hong Kong&lt;/strong&gt;: Device inspection moved from medium to high risk, and refusing to hand over a password during a national security investigation is itself a criminal offence. If you prepared at the medium-risk level, raise it to a clean device, and note that this applies even if you are only transiting through Hong Kong.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Japanese eSIMs bought abroad&lt;/strong&gt;: Drop the assumption that buying outside Japan puts you outside the rules. The law bringing data-only SIMs and eSIMs under identity verification has been published, its commencement is set by ordinance and falls no later than May 2027, and whether overseas providers are covered is still unsettled.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;If you are already using Raivo&lt;/strong&gt;: Move to Aegis or 2FAS. TOTP secrets cannot be transferred directly, so you need to re-enrol each service through its own two-factor settings. Keep the old app until the new one produces correct codes, and confirm your recovery codes are still to hand.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Prepaid SIMs&lt;/strong&gt;: The registration layer cannot be avoided. What you can do is avoid registering the SIM under the same name as your main number, and decide what that number is used for on that basis.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Accounts registered with a virtual number&lt;/strong&gt;: Go through those accounts and check their SMS recovery settings, remove any number you no longer hold, and switch to TOTP or recovery codes.&lt;/li&gt; &lt;/ul&gt; &lt;h2 id=&#34;Taiwans-blocking-determination-recomputed-over-the-full-dataset&#34;&gt;Taiwan&#39;s blocking determination, recomputed over the full dataset&lt;a class=&#34;headerlink&#34; href=&#34;#Taiwans-blocking-determination-recomputed-over-the-full-dataset&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;&lt;a href=&#34;../../../../community/ooni-blocking-determination/&#34;&gt;How OONI decides a site is blocked&lt;/a&gt; draws on OONI, a public measurement project for internet censorship in which volunteers around the world run tests and every result is published. The page had reported a sample of 40 anomalous measurements (31 &lt;code&gt;dns&lt;/code&gt;, 6 &lt;code&gt;tcp_ip&lt;/code&gt;, 3 &lt;code&gt;http-failure&lt;/code&gt;, 0 &lt;code&gt;http-diff&lt;/code&gt;) and concluded from that sample that Taiwan showed no block-page redirection pattern. Recomputing over the full 24 hours preceding 2026-08-05 (22,105 measurements) broke both the distribution and the sampling method behind it:&lt;/p&gt; &lt;table&gt; &lt;thead&gt; &lt;tr&gt; &lt;th&gt;Determination&lt;/th&gt; &lt;th style=&#34;text-align: right;&#34;&gt;Count&lt;/th&gt; &lt;th style=&#34;text-align: right;&#34;&gt;Share&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;21,029&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;95.13%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;none&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;512&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;2.32%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;tcp_ip&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;312&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;1.41%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;dns&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;150&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;0.68%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;http-failure&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;67&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;0.30%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;http-diff&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;35&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;0.16%&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt;&lt;code&gt;tcp_ip&lt;/code&gt; is more than twice as common as &lt;code&gt;dns&lt;/code&gt;, and &lt;code&gt;http-diff&lt;/code&gt; does occur, 35 times. The fault was in where those 40 rows came from: the anomaly listing of the measurements API, which has its own ordering and is unreliable as a random sample. The page now carries a warning box recording the correction, because the same trap is easy for anyone else to fall into.&lt;/p&gt; &lt;p&gt;What the recomputation overturned was the distribution and the sampling method. The conclusion itself, that Taiwan shows no block pages, still holds. Fifteen of those 35 &lt;code&gt;http-diff&lt;/code&gt; cases were sampled from a four-hour window, and &lt;code&gt;body_proportion&lt;/code&gt; (how much of the content the Probe received matches the control) fell between &lt;code&gt;0.004&lt;/code&gt; and &lt;code&gt;0.21&lt;/code&gt;. The Probe received far less content than the control, the opposite of a block page approaching &lt;code&gt;1&lt;/code&gt;. Establishing the cause requires going through the evidence layer measurement by measurement, so the page reports the observed pattern without drawing a conclusion.&lt;/p&gt; &lt;p&gt;The recomputation became possible because the field tally was finally implemented. &lt;a href=&#34;../../../../community/ooni-data-format/&#34;&gt;Reading an OONI measurement&lt;/a&gt; had said from day one that the smallest useful step was to also read &lt;code&gt;test_keys.blocking&lt;/code&gt; during line-by-line parsing, which would extend the statistics from measurement counts to per-ASN anomaly distributions. (An ASN, or autonomous system number, identifies a block of IPs run by one operator or organisation.) The code never did it, and that was the one place where our documentation described something we had only written down. Adding it in early August contradicted the page above as soon as the first results came out.&lt;/p&gt; &lt;h2 id=&#34;Seven-corrections-on-the-Interactive-overview-page&#34;&gt;Seven corrections on the Interactive overview page&lt;a class=&#34;headerlink&#34; href=&#34;#Seven-corrections-on-the-Interactive-overview-page&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;The overview page of the &lt;a href=&#34;../../../../games/&#34;&gt;Interactive&lt;/a&gt; section was fact-checked the day after launch, and seven problems turned up: four factual errors and three overstatements.&lt;/p&gt; &lt;p&gt;In two of the four, the document disagreed with itself. The text described meteors in the globe view, when &lt;code&gt;buildSky()&lt;/code&gt; draws only a static starfield and a Milky Way band and searching for &lt;code&gt;meteor&lt;/code&gt; and &lt;code&gt;comet&lt;/code&gt; returned nothing. The bright-headed comets belong to a different piece, onion-rendezvous, and the document had written the two up as one. Elsewhere it presented &#34;two circuits meeting at a middle relay&#34; as a general property of Tor, when it applies only to connections to .onion services, while a project card on the same page described it correctly.&lt;/p&gt; &lt;p&gt;The other two were disagreements between the document and the data. &#34;Every data file carries four fields&#34; was false because &lt;code&gt;cables.json&lt;/code&gt; lacked &lt;code&gt;sourceUrl&lt;/code&gt; and &lt;code&gt;licenseUrl&lt;/code&gt;. We chose to complete the data and amend &lt;code&gt;tools/gen_cables.py&lt;/code&gt; rather than soften the claim. &#34;&lt;code&gt;tools/&lt;/code&gt; uses only the Python standard library plus curl&#34; had missed that &lt;code&gt;fix_trunk_land.mjs&lt;/code&gt; is Node and &lt;code&gt;publish_games_data.sh&lt;/code&gt; is shell.&lt;/p&gt; &lt;p&gt;Three statements were overstated:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;&#34;If any step is out of order, anonymity fails.&#34;&lt;/strong&gt; Anonymity can break through traffic correlation or exit monitoring, neither of which involves ordering, while a broken Tor ordering usually just results in a failed connection. The original narrowed the failure conditions to ordering alone, and now reads more carefully.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;An ASN being &#34;operated by a single provider.&#34;&lt;/strong&gt; The claim was contradicted by a comment in the project&#39;s own snapshot generator, which notes that an ASN can be registered by an individual.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;&#34;Eighty countries.&#34;&lt;/strong&gt; Hard-coding an exact integer goes stale whenever the snapshot is regenerated, so it now reads as approximately eighty with the source snapshot noted.&lt;/li&gt; &lt;/ul&gt; &lt;h2 id=&#34;Most-English-readers-never-reached-an-article&#34;&gt;Most English readers never reached an article&lt;a class=&#34;headerlink&#34; href=&#34;#Most-English-readers-never-reached-an-article&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Cloudflare data for the trailing 90 days, excluding subdomains and bots, showed the English edition at 25.9% of docs traffic. Of 440 pageviews, only 70 (16%) reached an actual article, 290 landed on section index pages, and 80 were 404s.&lt;/p&gt; &lt;p&gt;Three causes turned up, two in the redirect configuration and one in an earlier navigation restructure. Four &lt;code&gt;redirect_maps&lt;/code&gt; rules had existing English pages as their source, and the build tool generates a stub at that path which overwrites the real page, so all four were serving nothing but a redirect screen in production. Three more redirects pointed to section indexes even though the English content existed. The third cause was the navigation restructure of 2026-05-09, whose commit deleted 17 files from &lt;code&gt;docs/en/&lt;/code&gt; and added none, roughly 115,000 characters, with a configuration comment stating that dropped pages redirect to the nearest live section index.&lt;/p&gt; &lt;p&gt;Five pages were restored based on measured traffic, raising the share of English pageviews reaching a real article from 16% to 64%. The four stub-covered pages were the smallest part of the problem, with index pages and 404s accounting for most of it, and twelve more deleted pages and the remaining 18% of 404s are still outstanding.&lt;/p&gt; &lt;h2 id=&#34;Six-new-automated-checks-on-the-writing-standards&#34;&gt;Six new automated checks on the writing standards&lt;a class=&#34;headerlink&#34; href=&#34;#Six-new-automated-checks-on-the-writing-standards&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;The errors in the sections above share an upstream cause: when a standard is written but nothing enforces it, the content keeps drifting until someone reads it. Our writing standards say colloquial words should be rewritten in a formal register, while &lt;code&gt;docs_style_lint.py&lt;/code&gt; had implemented that rule for exactly one character. A site-wide scan found 605 further instances of other colloquial words, and our own tooling reported &lt;code&gt;0 errors&lt;/code&gt; and &lt;code&gt;0 warnings&lt;/code&gt; on that state. (The full standard is maintained in the &lt;a href=&#34;/community/contributor-handbook/&#34; target=&#34;_blank&#34;&gt;Traditional Chinese contributor handbook&lt;/a&gt;.)&lt;/p&gt; &lt;p&gt;Counting the one character the tool already caught, the late-July sweep handled 669 instances across 158 files and added six linter rules, all of them warnings, because the right replacement depends on context and a machine should not apply it directly. Two mechanical replacements caused real damage during that sweep, both fixed and added to the exception list: 20 speaker introductions on the schedule page were mangled across two language editions, and a phrase meaning &#34;had not understood&#34; was turned into one meaning &#34;had not handled cleanly.&#34;&lt;/p&gt; &lt;p&gt;While closing another pull request the same week, we found that the matching rule covered only traditional characters, leaving the simplified equivalent unchecked, which meant zh-CN effectively had no such rule. Scanning the whole site showed less debt than expected, with only 3 instances needing review and all of them legitimate. The real gain was the first regression test suite, since this linter was the only automated check on the site&#39;s writing standards and had no tests at all. Incomplete coverage is invisible to manual sampling, because every sample drawn happens to fall inside the covered range.&lt;/p&gt; &lt;p&gt;An earlier site-wide clean-up had already rewritten 266 paragraphs across 99 files for overuse of the character 這. In early August we added the density standard behind it, because the criteria actually used during copy-editing existed only in a commit message and would not apply the next time someone wrote a new page. They went into the contributor handbook, and the machine-checkable part became the &lt;code&gt;zhe-repeat&lt;/code&gt; rule. The 8-character distance threshold was calibrated against 429 pages, widening it to 10 would start catching legitimate usage, and whole-document density needs semantic judgement and was deliberately left to humans.&lt;/p&gt; &lt;h2 id=&#34;Two-pages-had-drifted-from-their-own-current-state&#34;&gt;Two pages had drifted from their own current state&lt;a class=&#34;headerlink&#34; href=&#34;#Two-pages-had-drifted-from-their-own-current-state&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;The &lt;a href=&#34;/community/privacy-guide/&#34; target=&#34;_blank&#34;&gt;personal privacy guide&lt;/a&gt; (the Mandarin edition) gained a &#34;related articles&#34; index on 6 August, and the progress section further down was never updated to match, so one page said two different things. The index listed eight concept-layer articles while the section below still read &#34;five concept-layer articles published&#34; and listed only the original five. The per-layer indexes had fallen behind as well: 18 tools articles with 7 listed, 10 scenario articles with 5, 5 advanced articles with 2. Fourteen were added back.&lt;/p&gt; &lt;p&gt;The same page lists four common misconceptions in a way that reads as though none had been started. Two were already written and simply never linked: &#34;VPN ≠ anonymity&#34; has a full article in the &lt;a href=&#34;../../../../tools/vpn-guide/&#34;&gt;VPN guide&lt;/a&gt;, and &#34;decentralised ≠ anonymous&#34; is covered for IPFS, Yggdrasil, DN42 and I2P in &lt;a href=&#34;../../../../advanced/mistaken-for-anonymity/&#34;&gt;Networks mistaken for anonymity&lt;/a&gt;. The other two have genuinely not been started, and the page now says so.&lt;/p&gt; &lt;p&gt;&lt;a href=&#34;../../../../community/pin-ipfs-mirror/&#34;&gt;Help pin the site&#39;s IPFS mirror&lt;/a&gt; had three passages that no longer matched reality, two of them found by readers who actually followed the instructions.&lt;/p&gt; &lt;p&gt;The macOS section said &lt;code&gt;brew install ipfs&lt;/code&gt;. The Homebrew formula has since been renamed to &lt;code&gt;kubo&lt;/code&gt;. The old name still installs it, but &lt;code&gt;brew services&lt;/code&gt; matches on the real formula name, so anyone who installed via the old instructions and then tried to set up a persistent daemon hit a name mismatch. The persistence advice said only &#34;use &lt;code&gt;brew services&lt;/code&gt; or launchd&#34; without giving a command, when the formula itself already defines a service and &lt;code&gt;brew services start kubo&lt;/code&gt; keeps it resident and starts it at login.&lt;/p&gt; &lt;p&gt;The second was a contributor who wanted to configure the community node as a fixed peer and put the page&#39;s IPNS name into kubo&#39;s &lt;code&gt;Peering.Peers&lt;/code&gt;, which the tool rejected outright. The page explained CID and IPNS names and never mentioned the node&#39;s own Peer ID. All three identifiers look alike: the base36 form of the node Peer ID shares its first 12 characters with the site&#39;s IPNS name, both being public-key fingerprints in the same encoding, one pointing at content that changes and the other at a machine. The page now carries a comparison table for all three, plus an optional peering section.&lt;/p&gt; &lt;p&gt;The third was the opening line, &#34;right now only the community&#39;s own node does&#34;. A DHT lookup found another provider serving the site&#39;s content from a third-party network, either someone else&#39;s mirror or a public gateway that had fetched the content and announced it. Either way the sentence no longer held, and it now reads that few nodes currently serve the mirror, with the community&#39;s own carrying most of it. No exact count is given, because &lt;code&gt;findprovs&lt;/code&gt; is best-effort and returns whatever it finds before the query times out, so &#34;only N&#34; would be its own kind of inaccuracy.&lt;/p&gt; &lt;h2 id=&#34;A-white-strip-on-narrow-screens-traced-back-to-the-language-switcher&#34;&gt;A white strip on narrow screens traced back to the language switcher&lt;a class=&#34;headerlink&#34; href=&#34;#A-white-strip-on-narrow-screens-traced-back-to-the-language-switcher&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;A reader reported a blank strip appearing to the right of the pinned announcement. Measurement showed the announcement was not the cause: with it hidden entirely, &lt;code&gt;documentElement.scrollWidth&lt;/code&gt; still exceeded the viewport by 14px. Hiding candidate elements one at a time located the language switcher in the header, where the Chinese labels give the collapsed menu a width of 177px. On narrow screens the button sits close to the right edge, so the menu pushes the layout outwards. The announcement&#39;s dark background and the header&#39;s blue are only as wide as the viewport, so scrolling right exposes white underneath. The breakpoint falls exactly at 960px, where the header switches to its desktop layout. The fix anchors the menu to the button&#39;s right edge below that breakpoint and leaves the desktop centring alone. The same change raised the contrast of links inside the pinned announcement in light theme, previously &lt;code&gt;2.79:1&lt;/code&gt; against the dark background.&lt;/p&gt; &lt;p&gt;Separately, two GitHub Actions were still on the Node 20 runtime, and the runner printed a deprecation warning on every run. &lt;code&gt;actions/cache&lt;/code&gt; went from v4 to v6 and &lt;code&gt;actions/setup-node&lt;/code&gt; from v4 to v7, with the release notes read version by version first to confirm that neither set of breaking changes reaches how this project uses them.&lt;/p&gt; &lt;h2 id=&#34;Thanks-to-two-community-contributors&#34;&gt;Thanks to two community contributors&lt;a class=&#34;headerlink&#34; href=&#34;#Thanks-to-two-community-contributors&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Two of the 50 pull requests came from community members.&lt;/p&gt; &lt;p&gt;&lt;a href=&#34;https://github.com/wu858430049&#34; target=&#34;_blank&#34;&gt;wu858430049&lt;/a&gt; contributed the Simplified Chinese edition of the &lt;a href=&#34;/zh-cn/community/become-anoni/&#34; target=&#34;_blank&#34;&gt;BECOME_ANONI&lt;/a&gt; protocol. The canonical file sits in the repository root mirroring the zh-TW layout, the docs page embeds it through snippets to keep a single source, and the same pull request fixed two configuration problems that were preventing the page from rendering. Translation is a long-standing gap here, with many pages still missing a Simplified Chinese or English counterpart.&lt;/p&gt; &lt;p&gt;&lt;a href=&#34;https://github.com/ChihChengLiang&#34; target=&#34;_blank&#34;&gt;ChihChengLiang&lt;/a&gt; updated the description of the privacy payments workshop at &lt;a href=&#34;../../../../activity/coscup-2026/&#34;&gt;COSCUP 2026&lt;/a&gt;. It had said that no laptop was needed and attendees could simply follow along, so anyone who intended to take part would have arrived under-prepared. A simulated network and simulated chain are in fact provided on site, and participants are encouraged to bring a laptop and work through it. That contribution required no code at all, only knowing what the workshop actually looks like and being willing to rewrite a paragraph.&lt;/p&gt; &lt;p&gt;Both pull requests removed content that would have led readers to a wrong decision. The lowest-effort way in is to open an issue naming the sentence that is wrong and the source you found. To change the content yourself, &lt;a href=&#34;../../../../community/how-to-contribute/&#34;&gt;How to contribute&lt;/a&gt; covers choosing and claiming a topic, the pull request process, and what a good pull request looks like.&lt;/p&gt; &lt;h2 id=&#34;The-part-you-cannot-check-for-yourself&#34;&gt;The part you cannot check for yourself&lt;a class=&#34;headerlink&#34; href=&#34;#The-part-you-cannot-check-for-yourself&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;The site is about privacy and security, and readers change their behaviour based on what it says, so the cost of a wrong sentence lands on the reader. The harder part is that readers cannot check for themselves: a distribution drawn from a sample, written up as a general rule, reads exactly like one computed over everything, and no reader can tell whether the conclusion came from 40 measurements or 22,105. So the corrections are published with their reasoning, including the original wording of what was withdrawn and why we did not accept it.&lt;/p&gt; &lt;p&gt;The same period also added a Taiwan infrastructure layer in the &lt;a href=&#34;../../../../games/&#34;&gt;Interactive&lt;/a&gt; section, four &lt;a href=&#34;../../../../community/ooni-data-format/&#34;&gt;OONI technical documents&lt;/a&gt;, and a .onion build variant in CI. If you find something that does not match the facts, open an issue on &lt;a href=&#34;https://github.com/anoni-net/docs/issues&#34; target=&#34;_blank&#34;&gt;GitHub&lt;/a&gt; or send a pull request, and we will verify and update.&lt;/p&gt; &lt;h2 id=&#34;Related-reading&#34;&gt;Related reading&lt;a class=&#34;headerlink&#34; href=&#34;#Related-reading&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&#34;../../../../community/ooni-blocking-determination/&#34;&gt;How OONI decides a site is blocked&lt;/a&gt;: the page the full dataset overturned, now carrying a warning box about this correction&lt;/li&gt; &lt;li&gt;&lt;a href=&#34;../../../../community/ooni-data-format/&#34;&gt;Reading an OONI measurement&lt;/a&gt;: the version after the field tally was completed&lt;/li&gt; &lt;li&gt;&lt;a href=&#34;../../../../scenarios/asia-travel/&#34;&gt;Device minimization and border crossings in Asia&lt;/a&gt;: current guidance after the Hong Kong correction&lt;/li&gt; &lt;li&gt;&lt;a href=&#34;../../../../basics/multiple-identities/&#34;&gt;Maintaining multiple online identities&lt;/a&gt;: TOTP app guidance is now criteria-based rather than brand-based&lt;/li&gt; &lt;li&gt;&lt;a href=&#34;../../../../community/pin-ipfs-mirror/&#34;&gt;Help pin the site&#39;s IPFS mirror&lt;/a&gt;: the three-identifier comparison table and the new peering section&lt;/li&gt; &lt;/ul&gt;</description> <link>https://ipfs.anoni.net/en/blog/2026/08/docs-corrections-202608/</link> <pubDate>Mon, 24 Aug 2026 20:53:34 +0000</pubDate> <source url="https://ipfs.anoni.net/en/feed_rss_updated.xml">anoni.net Docs — Sinophone Asia-Pacific Networked Freedom Observatory</source><guid isPermaLink="true">https://ipfs.anoni.net/en/blog/2026/08/docs-corrections-202608/</guid> <enclosure url="https://ipfs.anoni.net/en/assets/images/post-update.png" type="image/png" length="81353" /> </item> <item> <title>The Internet Coup documents how a Chinese company exports the Great Firewall</title> <author>anoni.net Community</author> <category>News</category> <category>Translated Article</category> <description>&lt;h1 id=&#34;The-Internet-Coup-documents-how-a-Chinese-company-exports-the-Great-Firewall&#34;&gt;The Internet Coup documents how a Chinese company exports the Great Firewall&lt;a class=&#34;headerlink&#34; href=&#34;#The-Internet-Coup-documents-how-a-Chinese-company-exports-the-Great-Firewall&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt; &lt;p&gt;&lt;img alt=&#34;&#34; src=&#34;https://assets.anoni.net/the-internet-coup/The-Internet-Coup-InterSecLab-2048x986.png&#34; style=&#34;border-radius:10px;&#34; /&gt;&lt;/p&gt; &lt;p&gt;In mid-September, you may have noticed something significant: approximately 500GB of data was &lt;a href=&#34;https://gfw.report/blog/geedge_and_mesa_leak/en/&#34; target=&#34;_blank&#34;&gt;made public&lt;/a&gt;. This data pertains to &lt;a href=&#34;https://en.wikipedia.org/wiki/Great_Firewall&#34; target=&#34;_blank&#34;&gt;China&#39;s Great Firewall (GFW)&lt;/a&gt; technology and how this system is exported and implemented in other authoritarian regimes.&lt;/p&gt; &lt;p&gt;&lt;a href=&#34;https://interseclab.org/&#34; target=&#34;_blank&#34;&gt;InterSecLab&lt;/a&gt;, a digital security-focused laboratory, became aware of this leaked data around December 2024 and promptly took action. Over the course of 10 months, they collaborated with several organizations and tech communities to verify and analyze the leaked data. The findings were published in a report released on September 12, 2025.&lt;/p&gt; &lt;p&gt;Although we (Anonymous Network Community) did not assist in the initial stages, after the report was released, we quickly reviewed its content. The report confirmed many of the long-suspected capabilities of the Great Firewall. Furthermore, the report provided a clearer picture of the teams and organizations operating behind the scenes. Their development environment is similar to that of modern startup teams, with operations and maintenance for international deployments being remotely executable. In other words, the Chinese Communist Party government and other client countries can activate customized or general rules with a single click!&lt;/p&gt; &lt;!-- more --&gt; &lt;h2 id=&#34;Details&#34;&gt;Details&lt;a class=&#34;headerlink&#34; href=&#34;#Details&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;If you read English, the primary source is InterSecLab&#39;s own report, &lt;a href=&#34;https://interseclab.org/research/the-internet-coup/&#34; target=&#34;_blank&#34;&gt;The Internet Coup&lt;/a&gt;, which covers the leaked data and the operational side of the Great Firewall in full. Our work here is the translation, not a separate analysis.&lt;/p&gt; &lt;p&gt;The &lt;a href=&#34;/reports/interseclab-network-coup/&#34; target=&#34;_blank&#34;&gt;Mandarin translation&lt;/a&gt; (Taiwanese terminology, zh-TW) is for Chinese-reading audiences. Its layout follows the INDEX section of the original, split into eight chapters so a reader can cross-reference against the source while going through it.&lt;/p&gt; &lt;h2 id=&#34;Acknowledgments&#34;&gt;Acknowledgments&lt;a class=&#34;headerlink&#34; href=&#34;#Acknowledgments&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Finally, we would like to thank &lt;strong&gt;Marla Rivera&lt;/strong&gt; from InterSecLab for accepting our proposal to participate in the translation process and for the subsequent encouragement. This report has provided us with a clearer understanding of the risks posed by China. Once again, thank you!&lt;/p&gt; &lt;h2 id=&#34;Next-Steps&#34;&gt;Next Steps&lt;a class=&#34;headerlink&#34; href=&#34;#Next-Steps&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;We have opened a discussion channel regarding this report. If you have any thoughts after reading, feel free to join the discussion and share with us. InterSecLab plans to hold a follow-up discussion meeting about the report. If you&#39;re interested in participating, please let us know via email, and we will facilitate sending out an invitation from InterSecLab.&lt;/p&gt; &lt;p&gt;Additionally, InterSecLab intends to further explore the leaked data&#39;s code. If you&#39;re interested in joining the &#34;Review Code&#34; activities, you can directly contact InterSecLab to express your interest in participating.&lt;/p&gt; &lt;p&gt;Thank you for supporting us (Anonymous Network Community)!&lt;/p&gt;</description> <link>https://ipfs.anoni.net/en/blog/2025/10/report-the-internet-coup/</link> <pubDate>Mon, 24 Aug 2026 20:53:34 +0000</pubDate> <source url="https://ipfs.anoni.net/en/feed_rss_updated.xml">anoni.net Docs — Sinophone Asia-Pacific Networked Freedom Observatory</source><guid isPermaLink="true">https://ipfs.anoni.net/en/blog/2025/10/report-the-internet-coup/</guid> <enclosure url="https://ipfs.anoni.net/en/assets/images/post-update.png" type="image/png" length="81353" /> </item> <item> <title>Eight new tools on the docs site, all running in the reader&#39;s own browser</title> <author>anoni.net Community</author> <category>Community</category> <category>Privacy</category> <category>Technology</category> <description>&lt;h1 id=&#34;Eight-new-tools-on-the-docs-site-all-running-in-the-readers-own-browser&#34;&gt;Eight new tools on the docs site, all running in the reader&#39;s own browser&lt;a class=&#34;headerlink&#34; href=&#34;#Eight-new-tools-on-the-docs-site-all-running-in-the-readers-own-browser&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt; &lt;p&gt;We are a group of volunteers working on anonymity networks and internet freedom, based in Taiwan. We maintain &lt;a href=&#34;../../../../&#34;&gt;this documentation site&lt;/a&gt;, a practical guide to privacy and anonymity sorted by scenario for everyday life, sensitive work and high risk.&lt;/p&gt; &lt;p&gt;The articles on this site explain how to protect yourself. The &lt;a href=&#34;../../../../utils/&#34;&gt;tools section&lt;/a&gt; holds the things you can actually press. All eight compute in the reader&#39;s browser, send nothing anywhere, and keep working with the network off once stored on a device.&lt;/p&gt; &lt;p&gt;&lt;img alt=&#34;The tools index, eight cards each naming a tool and what it is for&#34; src=&#34;https://assets.anoni.net/blog/utils-index-en.webp&#34; style=&#34;border-radius: 10px;box-shadow:1px 1px 0.6rem #00aeff;&#34; /&gt;&lt;/p&gt; &lt;!-- more --&gt; &lt;h2 id=&#34;It-started-with-photo-metadata&#34;&gt;It started with photo metadata&lt;a class=&#34;headerlink&#34; href=&#34;#It-started-with-photo-metadata&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;&lt;a href=&#34;../../../../basics/metadata/&#34;&gt;What metadata is&lt;/a&gt; covers how a photograph carries capture time, camera model and GPS coordinates, and how stripping EXIF before uploading is the cheapest protection available to anyone today.&lt;/p&gt; &lt;p&gt;Almost every online remover asks you to upload the file first, and the people who need one are the people who should least be handing over an original. Password generators, QR code readers and URL cleaners share the same contradiction: the thing you want to process is the thing that should not leave your hands.&lt;/p&gt; &lt;p&gt;Moving the computation into the reader&#39;s own browser resolves it, at the cost of staying inside what a browser can do. Anything that needs an external service to work stays out of this section. For network measurement use &lt;a href=&#34;../../../../tools/what-is-ooni/&#34;&gt;OONI Probe&lt;/a&gt;, which is built for that purpose and publishes how it handles the data.&lt;/p&gt; &lt;p&gt;The eight look unrelated, and one test decides what gets in: the thing being processed is itself something that should not leave your hands. Coordinates inside a photo, a master password just generated, a QR code nobody has checked, a document that may carry a mark, a checklist that states who you are defending against, none of them belong on someone else&#39;s server. The threat model checklist and the invisible character detector sit further from the metadata starting point, and they are in for the same reason.&lt;/p&gt; &lt;h2 id=&#34;Four-rules-that-apply-to-all-eight&#34;&gt;Four rules that apply to all eight&lt;a class=&#34;headerlink&#34; href=&#34;#Four-rules-that-apply-to-all-eight&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Computed on your device&lt;/strong&gt;: everything happens in the browser, and nothing is sent anywhere&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Works offline&lt;/strong&gt;: once stored on a device the tools run with the network off, whether the domain is blocked, the connection is cut, or there is no signal at all&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Source is public&lt;/strong&gt;: the code sits in &lt;a href=&#34;https://github.com/anoni-net/docs/tree/main/docs/zh-TW/js&#34; target=&#34;_blank&#34;&gt;anoni-net/docs&lt;/a&gt;, so anyone who reads code can verify it&lt;/li&gt; &lt;li&gt;&lt;strong&gt;JavaScript required&lt;/strong&gt;: the computation runs on the reader&#39;s device, so the pages do nothing when JavaScript is disabled&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;To check the first rule yourself, open the network panel in your browser&#39;s developer tools, run any of the tools over some data, and watch for outbound requests. It takes under a minute, which is faster than reading the source.&lt;/p&gt; &lt;h2 id=&#34;One-conflict-if-you-use-Tor-Browser&#34;&gt;One conflict if you use Tor Browser&lt;a class=&#34;headerlink&#34; href=&#34;#One-conflict-if-you-use-Tor-Browser&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Setting &lt;a href=&#34;../../../../tools/tor-browser-advanced/&#34;&gt;Tor Browser&#39;s security level&lt;/a&gt; to Safest disables JavaScript, and all eight tools stop responding. The conflict is that the same guidance recommends raising the level for phishing links of unknown origin and unfamiliar domains, and receiving a suspicious link is exactly when you would want the invisible character detector or the QR code reader.&lt;/p&gt; &lt;p&gt;Handle the two separately. Open the suspicious site at the higher level, copy out the text or image, switch back to Standard to examine it, then raise the level again. The tools make no outbound connections, so opening them at Standard adds nothing to your exposure on that site.&lt;/p&gt; &lt;h2 id=&#34;Start-by-answering-three-questions&#34;&gt;Start by answering three questions&lt;a class=&#34;headerlink&#34; href=&#34;#Start-by-answering-three-questions&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;The &lt;a href=&#34;../../../../utils/threat-model/&#34;&gt;threat model checklist&lt;/a&gt; turns &#34;what are you protecting, who from, and what will you spend&#34; into a copyable plain-text summary, along with a list of pages to read first. The tiers match &lt;a href=&#34;../../../../basics/threat-model/&#34;&gt;how to build a threat model&lt;/a&gt; exactly: four asset classes, six adversary levels, three cost levels.&lt;/p&gt; &lt;p&gt;Each answer looks reasonable on its own, and together they may not be. The checklist flags the combinations that do not add up: a state-level adversary against the lowest cost tier, protecting yourself from someone close without listing your devices, defending against casual bystanders while planning to rebuild your whole workflow.&lt;/p&gt; &lt;p&gt;&lt;img alt=&#34;The threat model checklist being filled in, with three questions covering what to protect, who to protect against, and how much to spend, each as a list of checkboxes&#34; src=&#34;https://assets.anoni.net/blog/utils-threat-model-en.webp&#34; style=&#34;border-radius: 10px;box-shadow:1px 1px 0.6rem #00aeff;&#34; /&gt;&lt;/p&gt; &lt;p&gt;Answers stay in that browser tab. Nothing is written to localStorage, IndexedDB or cookies, and reloading clears everything. &#34;The person I am protecting myself from is my partner&#34; is the last thing that should be left on a device, and that device is very likely within the other person&#39;s reach. To keep a copy, press the copy button and paste it somewhere you chose. A test in &lt;code&gt;tools/test_threatmodel.mjs&lt;/code&gt; guards that nothing is persisted, so nobody adds storage later for convenience.&lt;/p&gt; &lt;p&gt;&lt;img alt=&#34;The result the checklist produces, with two mismatches flagged at the top, suggested reading in the middle, and a plain-text summary that can be copied whole&#34; src=&#34;https://assets.anoni.net/blog/utils-threat-model-result-en.webp&#34; style=&#34;border-radius: 10px;box-shadow:1px 1px 0.6rem #00aeff;&#34; /&gt;&lt;/p&gt; &lt;p&gt;The best moment to open it is when you have just joined a group, been told to take security seriously, and have no idea where to start. Answer it again after changing jobs, moving city, taking up a new issue, or living through a security incident.&lt;/p&gt; &lt;h2 id=&#34;Things-you-hand-to-someone-else&#34;&gt;Things you hand to someone else&lt;a class=&#34;headerlink&#34; href=&#34;#Things-you-hand-to-someone-else&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;h3 id=&#34;Passphrase-and-password-generator&#34;&gt;Passphrase and password generator&lt;a class=&#34;headerlink&#34; href=&#34;#Passphrase-and-password-generator&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;The &lt;a href=&#34;../../../../utils/passphrase/&#34;&gt;passphrase and password generator&lt;/a&gt; draws from the 7776-word &lt;a href=&#34;../../../../tools/asian-diceware/&#34;&gt;asian-diceware&lt;/a&gt; list, or draws a random password from the character sets you tick. Randomness in both modes comes from &lt;code&gt;crypto.getRandomValues&lt;/code&gt;, and sampling discards the remainder that does not divide evenly and redraws, so every word has exactly the same chance. Six words is roughly 77.5 bits, and the page states the figure.&lt;/p&gt; &lt;p&gt;&lt;img alt=&#34;The passphrase generator with a six-word passphrase, showing about 77.5 bits of entropy and marking it strong enough for important accounts&#34; src=&#34;https://assets.anoni.net/blog/utils-passphrase-en.webp&#34; style=&#34;border-radius: 10px;box-shadow:1px 1px 0.6rem #00aeff;&#34; /&gt;&lt;/p&gt; &lt;p&gt;If you suspect the computer in front of you has been tampered with, switch to the physical dice mode. The word list is itself the encoding: the first word is &lt;code&gt;11111&lt;/code&gt; and the last is &lt;code&gt;66666&lt;/code&gt;. Roll five dice, press the numbers as they land, and each round looks up one word. The randomness comes from your own hands and the program is reduced to a lookup table. Downloading the full table gives you 7776 lines of plain text, after which the page is no longer needed.&lt;/p&gt; &lt;p&gt;&lt;img alt=&#34;The physical dice mode, six rounds of rolls resolving to oolong, boba, tofu, lantern, bamboo and harbor&#34; src=&#34;https://assets.anoni.net/blog/utils-passphrase-dice-en.webp&#34; style=&#34;border-radius: 10px;box-shadow:1px 1px 0.6rem #00aeff;&#34; /&gt;&lt;/p&gt; &lt;p&gt;Master passwords for a password manager and disk encryption passphrases, the ones you set once and keep for years, are what this is for. After copying, overwrite the clipboard with something unrelated, since phone clipboards are commonly shared across apps.&lt;/p&gt; &lt;h3 id=&#34;QR-code-generator&#34;&gt;QR code generator&lt;a class=&#34;headerlink&#34; href=&#34;#QR-code-generator&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;The &lt;a href=&#34;../../../../utils/qrcode/&#34;&gt;QR code generator&lt;/a&gt; turns a long, easily mistyped string into a code the person in front of you can read with a camera. A registration link, a handout URL, a one-off contact detail all work, as do a 56-character onion address and a bridge line carrying an IP and a fingerprint. Nothing passes through a server and no message history is left behind.&lt;/p&gt; &lt;p&gt;&lt;img alt=&#34;The QR code generator turning an onion address into a code, with version 5, a 37 by 37 grid and 70 bytes noted underneath&#34; src=&#34;https://assets.anoni.net/blog/utils-qrcode-en.webp&#34; style=&#34;border-radius: 10px;box-shadow:1px 1px 0.6rem #00aeff;&#34; /&gt;&lt;/p&gt; &lt;p&gt;A QR code carries plaintext. Anyone who photographs the image can read it, including the camera on the wall and the person behind you. Anything that must stay confidential belongs in an &lt;a href=&#34;../../../../tools/messaging-comparison/&#34;&gt;end-to-end encrypted channel&lt;/a&gt;. When printing, set error correction to Q or H, because paper creases and gets dirty.&lt;/p&gt; &lt;p&gt;The moment it earns its place is handing a link to someone in the room when the network is not convenient. Passing a bridge line to a workshop participant is the classic case: read it aloud and neither of you is sure whether that was a capital O or a zero, whereas showing a QR code to scan gets it right the first time.&lt;/p&gt; &lt;h2 id=&#34;When-something-arrives-from-an-unknown-source&#34;&gt;When something arrives from an unknown source&lt;a class=&#34;headerlink&#34; href=&#34;#When-something-arrives-from-an-unknown-source&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;h3 id=&#34;QR-code-reader&#34;&gt;QR code reader&lt;a class=&#34;headerlink&#34; href=&#34;#QR-code-reader&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;The &lt;a href=&#34;../../../../utils/qr-read/&#34;&gt;QR code reader&lt;/a&gt; decodes the image in your browser, and the image never leaves the device. When the payload is a URL it isolates the hostname and deliberately offers no button to open it, so you confirm the host before pasting it into a browser yourself.&lt;/p&gt; &lt;p&gt;&lt;img alt=&#34;The QR code reader decoding a set of Wi-Fi credentials, with the fields broken out into network name, encryption and password, the password masked with dots&#34; src=&#34;https://assets.anoni.net/blog/utils-qr-read-en.webp&#34; style=&#34;border-radius: 10px;box-shadow:1px 1px 0.6rem #00aeff;&#34; /&gt;&lt;/p&gt; &lt;p&gt;Wi-Fi credentials, two-factor enrolments, prefilled mail and SMS, coordinates and vCards are all recognised, the fields are broken out and labelled, and passwords are masked by default. A &lt;code&gt;nopass&lt;/code&gt; Wi-Fi network, an &lt;code&gt;otpauth:&lt;/code&gt; payload carrying a &lt;code&gt;secret&lt;/code&gt;, and anything starting with &lt;code&gt;javascript:&lt;/code&gt; each get an extra warning, because pressing those has consequences quite unlike opening an ordinary link.&lt;/p&gt; &lt;p&gt;A QR code sticker on a parking meter that looks no different from the real one, or a business card handed over by someone you just met, are both worth checking before acting on.&lt;/p&gt; &lt;h3 id=&#34;Invisible-character-detector&#34;&gt;Invisible character detector&lt;a class=&#34;headerlink&#34; href=&#34;#Invisible-character-detector&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;The &lt;a href=&#34;../../../../utils/invisible/&#34;&gt;invisible character detector&lt;/a&gt; finds zero-width characters, bidirectional controls, tag characters and homoglyphs mixed in with Latin letters, marking where they sit and explaining what each class is.&lt;/p&gt; &lt;p&gt;&lt;img alt=&#34;The invisible character detector, with two zero-width spaces, a Cyrillic letter impersonating a domain and four tag characters highlighted in orange in the sample text, each class explained underneath&#34; src=&#34;https://assets.anoni.net/blog/utils-invisible-en.webp&#34; style=&#34;border-radius: 10px;box-shadow:1px 1px 0.6rem #00aeff;&#34; /&gt;&lt;/p&gt; &lt;p&gt;An organisation sends a document to twenty people, each copy carrying a different combination of zero-width characters in different places. The copies look identical, and once one leaks, comparing them identifies which. A journalist who shows the original or pastes an exact passage while checking with the organisation hands the source straight to the people looking for them. The full scenario is in &lt;a href=&#34;../../../../scenarios/journalist/&#34;&gt;protecting journalistic sources&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;The other use of invisible characters is hiding a whole instruction inside text that reads as normal. A person cannot see it and a model can, so scanning untrusted text before pasting it into an AI assistant costs about ten seconds.&lt;/p&gt; &lt;p&gt;The result proves presence, never absence. Zero-width characters are the crudest form of marking, and synonym swaps, blank-line counts, punctuation tweaks and PDF kerning all evade detection, while colour laser printers add a yellow dot grid encoding the printer serial and the time to every page. For genuinely sensitive documents the right move is retyping or paraphrasing rather than passing the original file along.&lt;/p&gt; &lt;p&gt;The community position is to teach detection and not insertion. The same zero-width characters serve a legitimate need when an organisation protects internal documents and become an instrument of oppression when they are used to find a whistleblower, so the tool will not generate marked copies, and the sample text is fixed rather than something you can replace with your own.&lt;/p&gt; &lt;h2 id=&#34;Before-you-send-something-out&#34;&gt;Before you send something out&lt;a class=&#34;headerlink&#34; href=&#34;#Before-you-send-something-out&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;h3 id=&#34;File-metadata-stripper&#34;&gt;File metadata stripper&lt;a class=&#34;headerlink&#34; href=&#34;#File-metadata-stripper&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;The &lt;a href=&#34;../../../../utils/strip-metadata/&#34;&gt;file metadata stripper&lt;/a&gt; removes EXIF, XMP, IPTC, authoring software and comment fields. The file never leaves the device, the result is a new copy, and the original is untouched. It handles JPEG, PNG, WebP, GIF, MP4, MOV and PDF, and says so plainly when a file is not recognised rather than quietly handing back something it never processed.&lt;/p&gt; &lt;p&gt;&lt;img alt=&#34;The file metadata stripper, listing the seven formats it handles, with a sample photo going from 30.1 KB to 29.7 KB and the removed EXIF block accounted for at 392 bytes&#34; src=&#34;https://assets.anoni.net/blog/utils-strip-metadata-en.webp&#34; style=&#34;border-radius: 10px;box-shadow:1px 1px 0.6rem #00aeff;&#34; /&gt;&lt;/p&gt; &lt;p&gt;For photos and video the compressed data is copied byte for byte from a fixed offset through to the end of the file, so the result decodes identically to the original. Re-encoding tools cannot make that claim: every recompression costs quality and leaves the tool&#39;s own processing signature in the output, which is why a file cleaned with mat2 is recognisably mat2-cleaned.&lt;/p&gt; &lt;p&gt;EXIF also carries an uncropped thumbnail. Crop half the photo away, send it, and the thumbnail may still hold the original full frame. The page lists each item removed and kept, with byte counts and the segment markers used by the file format.&lt;/p&gt; &lt;p&gt;HEIC, which is what an iPhone produces by default, is not handled yet. On iOS, Settings, Camera, Formats, Most Compatible switches capture to JPEG. TIFF, RAW, MKV, WebM, AVI and Office documents are also out of scope. The tool does no face blurring, and street numbers, road signs, uniforms and the view out of the window all live in the image itself, so look at what you are sharing before you share it.&lt;/p&gt; &lt;h3 id=&#34;URL-cleaner&#34;&gt;URL cleaner&lt;a class=&#34;headerlink&#34; href=&#34;#URL-cleaner&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;The &lt;a href=&#34;../../../../utils/clean-url/&#34;&gt;URL cleaner&lt;/a&gt; picks the tracking parameters out of a URL and removes them, naming who each one reports to, and unwraps Google and Facebook redirect links.&lt;/p&gt; &lt;p&gt;&lt;img alt=&#34;The URL cleaner turning a donation link carrying five tracking parameters into a clean one, with each parameter and its owner listed underneath&#34; src=&#34;https://assets.anoni.net/blog/utils-clean-url-en.webp&#34; style=&#34;border-radius: 10px;box-shadow:1px 1px 0.6rem #00aeff;&#34; /&gt;&lt;/p&gt; &lt;p&gt;Removal works from an allowlist, handling only the parameters it recognises and keeping everything else. Doing it the other way around strips YouTube video IDs and pagination along with the tracking, and the reader ends up with a URL that opens the wrong thing without ever suspecting the cleaner, blaming whoever sent the link instead.&lt;/p&gt; &lt;p&gt;A URL copied after clicking through Facebook carries &lt;code&gt;fbclid&lt;/code&gt;. Paste it into a group chat and everyone who follows it returns to Meta carrying the same ID, which strings the whole chain of clicks together. Forwarding a newsletter link with &lt;code&gt;utm_source&lt;/code&gt; on it tells the recipient which newsletter you subscribe to, and &lt;code&gt;mc_eid&lt;/code&gt; is more direct still: it is Mailchimp&#39;s recipient identifier and maps back to an email address.&lt;/p&gt; &lt;p&gt;Short links are deliberately not expanded, because resolving one sends the URL you were trying to clean to a third-party server, which is the exact thing this tool exists to avoid.&lt;/p&gt; &lt;h2 id=&#34;What-your-browser-gives-away&#34;&gt;What your browser gives away&lt;a class=&#34;headerlink&#34; href=&#34;#What-your-browser-gives-away&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;&lt;a href=&#34;../../../../utils/leaks/&#34;&gt;What your browser gives away&lt;/a&gt; lists what any site obtains the moment a page opens, without asking and without needing consent. Each item shows what Tor Browser reports instead, with the time zone stating plainly &#34;Tor Browser shows: UTC&#34;, so opening the same page in another browser gives you a direct comparison.&lt;/p&gt; &lt;p&gt;&lt;img alt=&#34;The browser fingerprint demonstration page, with an eight-character code at the top and time zone, language preference and screen size listed below, each alongside the value Tor Browser reports&#34; src=&#34;https://assets.anoni.net/blog/utils-leaks-en.webp&#34; style=&#34;border-radius: 10px;box-shadow:1px 1px 0.6rem #00aeff;&#34; /&gt;&lt;/p&gt; &lt;p&gt;The eight-character code at the top is computed from the stable values. Open the page again on another device or in another browser and comparing that one code tells you whether anything changed. Fifteen values together are enough to identify a person, and the code condenses the set into something you can compare directly. The mechanics are in &lt;a href=&#34;../../../../basics/browser-fingerprinting/&#34;&gt;what browser fingerprinting is&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Of those fifteen items, three can actually be switched off on your own device: location permission, language preference and the Do Not Track signal. The rest have no switch, because they are capabilities the web platform hands to sites. The single action covering the most items is moving to a browser with built-in protection.&lt;/p&gt; &lt;p&gt;There is deliberately no export button, since the exported file would be a complete fingerprint and leaving it on a device is worse than not having it. There is no uniqueness percentage either, because computing one requires a population database and the community is not about to start collecting visitor data to build it. For that kind of statistic, &lt;a href=&#34;https://coveryourtracks.eff.org/&#34; target=&#34;_blank&#34;&gt;EFF&#39;s Cover Your Tracks&lt;/a&gt; does the job.&lt;/p&gt; &lt;h2 id=&#34;One-limit-each-for-video-and-PDF&#34;&gt;One limit each for video and PDF&lt;a class=&#34;headerlink&#34; href=&#34;#One-limit-each-for-video-and-PDF&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Encoders write their own version into the compressed stream itself, mixed in with picture data. That is not a descriptive field, removing it requires re-encoding, and re-encoding costs quality while only substituting one encoder&#39;s trace for another. The tool does not re-encode. It lists the strings it found instead, so nobody assumes the file came out clean.&lt;/p&gt; &lt;p&gt;A photo or a video lets you cut the descriptive section straight out, and PDF does not. Every PDF object records its own offset in the cross-reference table, cutting a section shifts everything after it, and since PDF 1.5 several objects are commonly compressed into a single stream where the contents are invisible from outside. So the tool rewrites the whole file, and the lossless guarantee does not survive that. Page content is not reflowed and renders pixel-identical in testing, but forms, digital signatures and unusual interactive elements may not survive a rewrite, so keep the original of anything that matters.&lt;/p&gt; &lt;p&gt;XMP holds one more trap. Deleting the catalogue&#39;s reference to the XMP block and saving leaves the block itself intact in the file with nothing pointing at it, so a text search still turns up the author and the location. The tool removes the object itself, and &lt;code&gt;tools/test_stripmeta.mjs&lt;/code&gt; has a test guarding exactly that.&lt;/p&gt; &lt;h2 id=&#34;The-whole-site-fits-on-a-device&#34;&gt;The whole site fits on a device&lt;a class=&#34;headerlink&#34; href=&#34;#The-whole-site-fits-on-a-device&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Opening the docs site in an ordinary browser caches the core chapters of the current language in the background, with no install step. Switching language downloads that language&#39;s chapters only then, so a device holds only what has actually been read.&lt;/p&gt; &lt;p&gt;&lt;img alt=&#34;The offline reading page, with storage totals and two automatic-storage switches at the top and pages listed by chapter below, the Tools chapter expanded to show each page with its size and tick state&#34; src=&#34;https://assets.anoni.net/blog/docs-offline-library-en.webp&#34; style=&#34;border-radius: 10px;box-shadow:1px 1px 0.6rem #00aeff;&#34; /&gt;&lt;/p&gt; &lt;p&gt;Scenario pages for journalists, activists, LGBTQ readers and domestic abuse are excluded from that prefetch and stored only if opened deliberately. Their presence on a device is itself a signal, so whether to keep them is the reader&#39;s call. To carry them offline, tick them on the &lt;a href=&#34;../../../../offline/&#34;&gt;offline reading&lt;/a&gt; page.&lt;/p&gt; &lt;p&gt;Automatically stored chapters hold text only, so images are missing offline. A switch on that page adds the images in the core chapters, roughly 7 MB more. It is off by default because most people are on mobile data and most of the content still reads fine without pictures. Pages ticked by hand ignore that switch and always store their images.&lt;/p&gt; &lt;p&gt;The site also installs as an offline app, and the steps for Android, desktop browsers and iOS are on the &lt;a href=&#34;../../../../offline/&#34;&gt;offline reading&lt;/a&gt; page. Tor Browser and the onion and IPFS versions register no background Service Worker for privacy reasons, so the pattern is installing from anoni.net in an ordinary browser for the offline copy and returning to Tor Browser for anonymous reading.&lt;/p&gt; &lt;h2 id=&#34;Whose-code-is-in-here&#34;&gt;Whose code is in here&lt;a class=&#34;headerlink&#34; href=&#34;#Whose-code-is-in-here&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Most of the code in this section is written by the community. Four things come from elsewhere, dropped in unmodified:&lt;/p&gt; &lt;table&gt; &lt;thead&gt; &lt;tr&gt; &lt;th&gt;Component&lt;/th&gt; &lt;th&gt;Used by&lt;/th&gt; &lt;th&gt;Licence&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;&lt;a href=&#34;https://github.com/kazuhikoarase/qrcode-generator&#34; target=&#34;_blank&#34;&gt;qrcode-generator&lt;/a&gt; 1.4.4&lt;/td&gt; &lt;td&gt;QR code generator&lt;/td&gt; &lt;td&gt;MIT&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href=&#34;https://github.com/cozmo/jsQR&#34; target=&#34;_blank&#34;&gt;jsQR&lt;/a&gt; 1.4.0&lt;/td&gt; &lt;td&gt;QR code reader&lt;/td&gt; &lt;td&gt;Apache-2.0&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href=&#34;https://github.com/Hopding/pdf-lib&#34; target=&#34;_blank&#34;&gt;pdf-lib&lt;/a&gt; 1.17.1&lt;/td&gt; &lt;td&gt;The PDF path of the metadata stripper&lt;/td&gt; &lt;td&gt;MIT&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;The 7776-word list from &lt;a href=&#34;https://github.com/anoni-net/asian-diceware&#34; target=&#34;_blank&#34;&gt;asian-diceware&lt;/a&gt;&lt;/td&gt; &lt;td&gt;Passphrase and password generator&lt;/td&gt; &lt;td&gt;Word data CC-BY-4.0, code MIT&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt;Leaving them unmodified is deliberate. Once patched they stop being &#34;the upstream copy&#34;, and a reader wanting to verify has only our word for it. The files sit under &lt;code&gt;utils/vendor/&lt;/code&gt;, ready to be diffed against upstream. The common reason for not writing these ourselves is that getting them wrong does not crash anything, it produces output that looks right and is not, which is harder to catch than a failure.&lt;/p&gt; &lt;h2 id=&#34;Working-on-this-with-us&#34;&gt;Working on this with us&lt;a class=&#34;headerlink&#34; href=&#34;#Working-on-this-with-us&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;The tools are plain front-end code with no build step. Each one is a single JS file under &lt;code&gt;docs/zh-TW/js/&lt;/code&gt; in &lt;a href=&#34;https://github.com/anoni-net/docs/tree/main/docs/zh-TW/js&#34; target=&#34;_blank&#34;&gt;anoni-net/docs&lt;/a&gt;, and &lt;code&gt;cd docs &amp;amp;&amp;amp; uv sync &amp;amp;&amp;amp; mkdocs serve&lt;/code&gt; gets a local copy running.&lt;/p&gt; &lt;p&gt;Each of the eight has a test, run with &lt;code&gt;node tools/test_&amp;lt;name&amp;gt;.mjs&lt;/code&gt;, with nothing to install, and every one of them runs in CI. The tests guard the failures that look fine on screen and are wrong underneath: sampling bias, a generated QR code that scans back as something else, the fingerprint page quietly sending data, the URL cleaner stripping a parameter the page needs, threat model answers reaching storage.&lt;/p&gt; &lt;p&gt;What is missing is listed as the unsupported formats on each tool page: HEIC, TIFF, RAW, MKV, WebM, AVI and Office documents all have nobody on them. Open an issue or say so in the Matrix room before starting, so two people do not build the same thing. The process is in &lt;a href=&#34;https://github.com/anoni-net/docs/blob/main/CONTRIBUTING.md&#34; target=&#34;_blank&#34;&gt;CONTRIBUTING&lt;/a&gt; and &lt;a href=&#34;../../../../community/how-to-contribute/&#34;&gt;how to take part&lt;/a&gt;.&lt;/p&gt; &lt;h2 id=&#34;What-comes-next&#34;&gt;What comes next&lt;a class=&#34;headerlink&#34; href=&#34;#What-comes-next&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;The direction is a privacy and anonymity guide that lives on the reader&#39;s own device. A blocked domain, a severed connection or somewhere with no coverage at all is when these pages matter most, and whether they open then depends on what was stored beforehand.&lt;/p&gt; &lt;p&gt;Three things that help right now:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Which pages you want to carry offline&lt;/strong&gt;: the prefetch is currently split by core chapter, and real needs may differ&lt;/li&gt; &lt;li&gt;&lt;strong&gt;What a tool lacks in your situation&lt;/strong&gt;: an unrecognised field, a format that will not open, an explanation that does not land&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Real video or PDF samples&lt;/strong&gt;: files whose metadata will not come off, or that stop opening once cleaned&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Reach us in the public Matrix room (home server &lt;code&gt;im.anoni.net&lt;/code&gt;, link on the &lt;a href=&#34;../../../../community/tools/&#34;&gt;community tools page&lt;/a&gt;), or open an issue on &lt;a href=&#34;https://github.com/anoni-net/docs/issues&#34; target=&#34;_blank&#34;&gt;anoni-net/docs&lt;/a&gt;. Anything you would rather not attach your name to can go to whisper@anoni.net (&lt;a href=&#34;../../../../contact/&#34;&gt;GPG key&lt;/a&gt;).&lt;/p&gt;</description> <link>https://ipfs.anoni.net/en/blog/2026/08/2026-browser-side-utils/</link> <pubDate>Mon, 24 Aug 2026 20:38:02 +0000</pubDate> <source url="https://ipfs.anoni.net/en/feed_rss_updated.xml">anoni.net Docs — Sinophone Asia-Pacific Networked Freedom Observatory</source><guid isPermaLink="true">https://ipfs.anoni.net/en/blog/2026/08/2026-browser-side-utils/</guid> <enclosure url="https://assets.anoni.net/blog/utils-index-en.webp" type="image/webp" length="170582" /> </item> <item> <title>Campus Tor Relay templates: proposal, SOP, and FAQ now published</title> <author>anoni.net Community</author> <category>Community</category> <category>News</category> <description>&lt;h1 id=&#34;Campus-Tor-Relay-templates-proposal-SOP-and-FAQ-now-published&#34;&gt;Campus Tor Relay templates: proposal, SOP, and FAQ now published&lt;a class=&#34;headerlink&#34; href=&#34;#Campus-Tor-Relay-templates-proposal-SOP-and-FAQ-now-published&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt; &lt;p&gt;&lt;img alt=&#34;Campus Tor Relay template kit&#34; src=&#34;../../../assets/images/post-update.png&#34; style=&#34;border-radius: 10px;box-shadow:1px 1px 0.6rem #00aeff;&#34; /&gt;&lt;/p&gt; &lt;p&gt;In November 2025, the first campus Tor Relay in Taiwan went live at National Taiwan Normal University&#39;s CSIE department. Over the past six months, community member NZ (Su En-Li) — the student who pushed the proposal through — worked with the community to turn that experience into a reusable template kit. The three documents are now published under CC-BY 4.0, with a long-form interview as the entry point.&lt;/p&gt; &lt;p&gt;The templates are ready. The next step is for more universities to take them up.&lt;/p&gt; &lt;!-- more --&gt; &lt;h2 id=&#34;The-template-kit&#34;&gt;The template kit&lt;a class=&#34;headerlink&#34; href=&#34;#The-template-kit&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Three documents cover the three roles in the rollout sequence: proposal author, technical operator, and the university administration team that gets asked questions.&lt;/p&gt; &lt;div class=&#34;admonition note&#34;&gt; &lt;p class=&#34;admonition-title&#34;&gt;All three documents are now in English&lt;/p&gt; &lt;p&gt;Each one marks its Taiwan-specific material in a separate regional note, covering TANet, the Criminal Code articles on unauthorized computer access, and the Personal Data Protection Act. Swap those notes for your own jurisdiction&#39;s equivalents. The proposal structure, the outreach emails, and the technical SOP carry over as they are. The Mandarin originals remain the authoritative source for the Taiwanese legal annotations.&lt;/p&gt; &lt;/div&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Proposal template&lt;/strong&gt; (school-facing document, four outreach email patterns, two-month administrative timeline): &lt;a href=&#34;../../../../community/campus-tor-relay-proposal/&#34;&gt;Campus Tor relay proposal template&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Deployment SOP&lt;/strong&gt; (torrc, UFW, status page architecture, monitoring runbook, IPv6, handover): &lt;a href=&#34;../../../../community/campus-tor-relay-sop/&#34;&gt;Campus Tor relay deployment SOP&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;FAQ for university administration and legal counsel&lt;/strong&gt; (eleven questions with Taiwan-specific annotations, plus two one-page summaries): &lt;a href=&#34;../../../../community/campus-relay-faq/&#34;&gt;Campus Tor relay FAQ&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;The hub page collects all three with case studies, project goals, and a backlog of external resources awaiting translation:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&#34;../../../../community/relay-on-campus/&#34;&gt;Tor relays on campus track&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;h2 id=&#34;For-readers-outside-Taiwan&#34;&gt;For readers outside Taiwan&lt;a class=&#34;headerlink&#34; href=&#34;#For-readers-outside-Taiwan&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;The case is grounded in Taiwan&#39;s TANet (the academic network) and Taiwanese legal context, but the kit transfers in pieces:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;The &lt;strong&gt;proposal template&#39;s structure&lt;/strong&gt; — scope, technical resources, operational responsibility, legal positioning, academic value — is reusable across jurisdictions&lt;/li&gt; &lt;li&gt;The &lt;strong&gt;outreach email examples&lt;/strong&gt; show the registers that worked when approaching IT departments and faculty advisors; useful as a tone reference even when the local language and legal context differ&lt;/li&gt; &lt;li&gt;The &lt;strong&gt;torrc, UFW, and monitoring setups&lt;/strong&gt; in the SOP are jurisdiction-agnostic, and the graduation-handover discussion applies to any campus where students will eventually leave&lt;/li&gt; &lt;li&gt;The &lt;strong&gt;FAQ&#39;s Taiwan-specific legal annotations&lt;/strong&gt; need to be replaced with local equivalents, but the question structure of &#34;what the university actually worries about&#34; is the more portable part&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;If your university already runs a relay through EFF&#39;s Tor University Challenge program, we&#39;d be glad to compare notes, particularly on how you handled the handover problem.&lt;/p&gt; &lt;h2 id=&#34;Why-Taiwan-still-needs-more-campus-relays&#34;&gt;Why Taiwan still needs more campus relays&lt;a class=&#34;headerlink&#34; href=&#34;#Why-Taiwan-still-needs-more-campus-relays&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Tor&#39;s anonymity rests on relay diversity. When relays concentrate in a few countries or network providers, the network&#39;s ability to resist traffic analysis weakens. Taiwan&#39;s relay count on Tor Metrics is still limited, and each stable node adds another margin of resistance. Real-time observation:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&#34;../../../../regional/tor-relay-watcher/&#34;&gt;Tor Relays watcher&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;University campuses are a reasonable place to close that gap: stable academic bandwidth, students and staff with the skill to operate the node, a clearer institutional review path than residential or small-company hosting, and direct alignment with EFF&#39;s &lt;a href=&#34;https://toruniversity.eff.org/&#34; target=&#34;_blank&#34;&gt;Tor University Challenge&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Taiwan&#39;s civil society has been raising attention to whistleblower protection, anti-stalking, and press freedom, areas where Tor&#39;s value to local users tracks with the global picture. A campus relay is the concrete contribution of &#34;making this infrastructure usable in Taiwan,&#34; closer to the actual situation than an abstract statement about privacy.&lt;/p&gt; &lt;h2 id=&#34;NZs-original-materials&#34;&gt;NZ&#39;s original materials&lt;a class=&#34;headerlink&#34; href=&#34;#NZs-original-materials&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;The templates are placeholder-scrubbed, sanitised versions. If you want to see what the real submission looked like, NZ has made the original Google Drive folder fully public:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&#34;https://drive.google.com/drive/folders/1B9ysi2ELC9w46bD3o7TMsnv55nupI1nz&#34; target=&#34;_blank&#34;&gt;NZ&#39;s original Google Drive folder&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;It contains the original NTNU project proposal (Google Doc), the slide deck from the December 21, 2025 on-campus sharing session, and on-site photos. The original Doc still carries NZ&#39;s personal email, advisor information, and the university&#39;s IP range. Please don&#39;t fork the raw Doc, change the school name, and submit it — it&#39;s easy to spot during review. The value of the archive is for comparing structure and wording. When you actually submit, use the placeholder-scrubbed templates on anoni.net.&lt;/p&gt; &lt;p&gt;The Taiwan case is also documented in English on the Tor Project blog, with NZ&#39;s first-hand account:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&#34;https://blog.torproject.org/setting-up-tor-university-relay-taiwan/&#34; target=&#34;_blank&#34;&gt;Setting up a Tor Relay at a university in Taiwan&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;The full long-form interview with NZ on anoni.net covers the year-long arc through the proposal process, and is the most complete record of how the first one went:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&#34;../../../2025/12/ntnu-nz/&#34;&gt;Setting up a Tor relay at National Taiwan Normal University&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;h2 id=&#34;Acknowledgements&#34;&gt;Acknowledgements&lt;a class=&#34;headerlink&#34; href=&#34;#Acknowledgements&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;The kit&#39;s source materials were contributed by NZ (Su En-Li), drawn from his proposal, communication records, and operational experience at NTNU. NZ released the materials under CC-BY 4.0 as a template for other universities to adapt.&lt;/p&gt; &lt;p&gt;Every campus relay that goes live lowers the cost for the schools that follow. If you adapt the kit and roll out a relay at your university, in Taiwan or elsewhere, we&#39;d be glad to hear about it. We can fold your case into the project page so the next wave has more reference points.&lt;/p&gt; &lt;p&gt;The template kit is a shared starting point. Any university can pick it up, rewrite it, and route it through its own internal review. The more schools take part, the more the shared template library grows, and the easier the work becomes for the ones who follow.&lt;/p&gt;</description> <link>https://ipfs.anoni.net/en/blog/2026/05/2026-campus-tor-relay-template-kit/</link> <pubDate>Mon, 24 Aug 2026 17:55:52 +0000</pubDate> <source url="https://ipfs.anoni.net/en/feed_rss_updated.xml">anoni.net Docs — Sinophone Asia-Pacific Networked Freedom Observatory</source><guid isPermaLink="true">https://ipfs.anoni.net/en/blog/2026/05/2026-campus-tor-relay-template-kit/</guid> <enclosure url="https://ipfs.anoni.net/en/assets/images/post-update.png" type="image/png" length="81353" /> </item> <item> <title>Financial Companies as Censors: A Sinophone Asia-Pacific Reading of EFF&#39;s Transaction Denied</title> <author>anoni.net Community</author> <category>Perspective</category> <category>Privacy</category> <category>Translated Article</category> <description>&lt;h1 id=&#34;Financial-Companies-as-Censors-A-Sinophone-Asia-Pacific-Reading-of-EFFs-Transaction-Denied&#34;&gt;Financial Companies as Censors: A Sinophone Asia-Pacific Reading of EFF&#39;s Transaction Denied&lt;a class=&#34;headerlink&#34; href=&#34;#Financial-Companies-as-Censors-A-Sinophone-Asia-Pacific-Reading-of-EFFs-Transaction-Denied&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt; &lt;figure&gt; &lt;a href=&#34;https://assets.anoni.net/blog/2026-financial-companies-as-censors.png&#34; target=&#34;_blank&#34;&gt; &lt;img src=&#34;https://assets.anoni.net/blog/2026-financial-companies-as-censors.png&#34; alt=&#34;A piggy bank with its mouth taped shut, representing payment rails severed by financial intermediaries&#34; style=&#34;border-radius: 10px;&#34;&gt; &lt;/a&gt; &lt;figcaption markdown=&#34;span&#34;&gt;Image from EFF Deeplinks article &lt;a href=&#34;https://www.eff.org/deeplinks/2026/04/former-eff-activism-directors-new-book-transaction-denied-explores-what-happens&#34; target=&#34;_blank&#34;&gt;Former EFF Activism Director&#39;s New Book, Transaction Denied, Explores What Happens When Financial Companies Act like Censors&lt;/a&gt; (EFF Financial Censorship banner library), licensed under &lt;a href=&#34;https://creativecommons.org/licenses/by/4.0/&#34; target=&#34;_blank&#34;&gt;CC BY 4.0&lt;/a&gt;.&lt;/figcaption&gt; &lt;/figure&gt; &lt;p&gt;On &lt;strong&gt;9 May 2017&lt;/strong&gt;, the cross-border electronic payment service &lt;strong&gt;PayPal&lt;/strong&gt; closed all domestic transaction functions in Taiwan. Two PayPal Taiwan accounts could no longer send money to each other. Cross-border transfers kept working. The streamer economy took the worst hit. Twitch Cheer, YouTube Super Chat, StreamLabs, and NightDev — tools that processed local audience tips through PayPal — went dark on the same day. Small organizations and independent media that relied on PayPal for domestic flows lost a payment rail overnight&lt;sup id=&#34;fnref:8&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:8&#34;&gt;8&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt; &lt;p&gt;The legal trigger was Article 3, Paragraph 1 of Taiwan&#39;s &lt;strong&gt;Electronic Payment Institution Management Act&lt;/strong&gt;, passed in 2015. PayPal chose not to apply for a license and closed domestic functions instead&lt;sup id=&#34;fnref:9&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:9&#34;&gt;9&lt;/a&gt;&lt;/sup&gt;. Nearly nine years later, the U.S. online payment processor &lt;strong&gt;Stripe&lt;/strong&gt; still does not allow individuals or companies in Taiwan to register. Stripe is the credit card collection layer behind Substack, many subscription SaaS products, and many open source sponsorship pages. Individual creators in Taiwan have to first register a U.S. LLC to use it&lt;sup id=&#34;fnref:10&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:10&#34;&gt;10&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt; &lt;p&gt;In Taiwan&#39;s payment conversation, these two facts have usually been filed under &#34;compliance trade-offs&#34; or &#34;market size.&#34; EFF&#39;s former Activism Director &lt;strong&gt;Rainey Reitman&lt;/strong&gt;, in her April 2026 book &lt;strong&gt;&lt;em&gt;Transaction Denied&lt;/em&gt;&lt;/strong&gt;&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:1&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:2&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;, compiles cases from 2012 onward across the U.S. and the Middle East. Stacked together, the cases reveal a cross-region, cross-issue pattern that&#39;s been running for more than a decade. Taiwan&#39;s two events belong in that record. So do parallel events from Hong Kong, mainland China, Macau, Singapore, and Malaysia, which Reitman&#39;s book — focused on U.S. and Middle Eastern material — does not yet cover.&lt;/p&gt; &lt;!-- more --&gt; &lt;h2 id=&#34;What-Reitman-compiles-a-decade-plus-of-financial-censorship-cases&#34;&gt;What Reitman compiles: a decade-plus of financial censorship cases&lt;a class=&#34;headerlink&#34; href=&#34;#What-Reitman-compiles-a-decade-plus-of-financial-censorship-cases&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Rainey Reitman spent 11 years at EFF, serving as Activism Director and later Chief Program Officer, before leaving in 2022. She co-founded the Freedom of the Press Foundation and chairs its board&lt;sup id=&#34;fnref:11&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:11&#34;&gt;11&lt;/a&gt;&lt;/sup&gt;. Half of the author royalties from this book go to that foundation. In EFF Executive Director Cindy Cohn&#39;s introduction on Deeplinks&lt;sup id=&#34;fnref2:1&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:1&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;, she writes: &#34;Rainey is a storyteller and an activist. She uncovers hidden systems of power that shape our choices, our voice, and ultimately our society.&#34;&lt;/p&gt; &lt;p&gt;The bulk of the book documents cases that actually happened. The 2012 anti-book-censorship coalition EFF led pushed back PayPal&#39;s content restrictions on the self-publishing platform Smashwords&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:3&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;. The same year, the Nifty Archive Alliance case saw Stripe cut payment rails for the LGBTQ erotica writing community that had been running since 1992. After advocacy, Stripe reversed course&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:4&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt; &lt;p&gt;The 2021 Larry Brandt case had no such reversal. Brandt is a U.S. individual donor who used PayPal for nearly 20 years to send small recurring donations to Tor relay operators around the world. One day in 2021, PayPal shut down his account with no warning, no appeals process, and no one able to explain why&lt;sup id=&#34;fnref:5&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:5&#34;&gt;5&lt;/a&gt;&lt;/sup&gt;. Tor is one of the anonymity tools the anoni.net community documents and many readers actually use, and Tor relay operators around the world depend on exactly this kind of individual sponsorship. Translate the case to a context English-language readers in Asia recognize: if you&#39;ve been sending regular cross-border support to Hong Kong media in exile, Burmese independent journalists, Ukrainian grassroots groups, or any cross-border human rights project, the experience is the same. Small amount, clear purpose, multi-year history — none of it grants immunity.&lt;/p&gt; &lt;p&gt;When a multi-year small-amount donor has a single fresh donation flagged as suspicious and the account terminated, the claim that &#34;financial institutions aren&#39;t censors&#34; gets harder to defend. More cases line up: a U.S. citizen who taught Persian poetry had PayPal and Venmo accounts frozen, a New York Muslim city councilmember was blocked because a transfer memo named a Bangladeshi restaurant, and Palestinian users across an entire region were locked out of PayPal&lt;sup id=&#34;fnref:6&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:6&#34;&gt;6&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt; &lt;p&gt;Reitman points out that this pattern works long-term because the underlying assumption — financial institutions are neutral conduits — is widely accepted. In practice, the combination of overcautious compliance-driven risk avoidance, service terms vague to the point of unpredictability, automated decisions with no human review interface, and no functioning appeals path for those cut off produces an outcome that&#39;s effectively the same as content removal&lt;sup id=&#34;fnref:7&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:7&#34;&gt;7&lt;/a&gt;&lt;/sup&gt;. EFF has tracked dozens of these cases over the past decade-plus, faster than any legislature has moved on the issue.&lt;/p&gt; &lt;h2 id=&#34;From-account-blocks-to-platform-content-policy-a-new-chain-of-cases-in-2025-2026&#34;&gt;From account blocks to platform content policy: a new chain of cases in 2025-2026&lt;a class=&#34;headerlink&#34; href=&#34;#From-account-blocks-to-platform-content-policy-a-new-chain-of-cases-in-2025-2026&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;The cases Reitman compiles mostly center on financial institutions cutting off individual or organizational accounts. From 2025 onward, a different mode of pressure has emerged. Payment processors use contract terms and fine threats to push platforms into revising their own content policies. The target has shifted from individual accounts to entire platform-level policies.&lt;/p&gt; &lt;p&gt;In February 2025, Mastercard and Visa pressured multiple Japanese cultural-industry platforms, forcing services to adjust what they sold. Japan&#39;s domestic card brand JCB and various stored-value mechanisms absorbed some of the impact, allowing the affected services to barely scrape through&lt;sup id=&#34;fnref:13&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:13&#34;&gt;13&lt;/a&gt;&lt;/sup&gt;. In July of the same year, Steam (Valve) confirmed it had removed adult games from its store under payment-processor pressure&lt;sup id=&#34;fnref:14&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:14&#34;&gt;14&lt;/a&gt;&lt;/sup&gt;. In March 2026, U.S. FTC Chair Andrew N. Ferguson issued warning letters to PayPal, Stripe, Visa, and Mastercard on &#34;debanking American consumers&#34; — the first time a U.S. federal regulator publicly framed this pattern as an issue&lt;sup id=&#34;fnref:15&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:15&#34;&gt;15&lt;/a&gt;&lt;/sup&gt;. In May 2026, Kickstarter revised its content guidelines to ban several categories of NSFW content, with Stripe identified as the pressure source behind the policy change&lt;sup id=&#34;fnref:16&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:16&#34;&gt;16&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt; &lt;p&gt;From individual accounts severed, to entire markets shut out, to platform content policies rewritten by proxy, the reach of financial intermediaries has expanded steadily over the past decade-plus.&lt;/p&gt; &lt;h2 id=&#34;Taiwan-as-case-study-PayPals-domestic-shutdown-Stripes-continued-closure&#34;&gt;Taiwan as case study: PayPal&#39;s domestic shutdown, Stripe&#39;s continued closure&lt;a class=&#34;headerlink&#34; href=&#34;#Taiwan-as-case-study-PayPals-domestic-shutdown-Stripes-continued-closure&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Read PayPal&#39;s 2017 domestic shutdown and Stripe&#39;s continued closure through Reitman&#39;s lens, and both look like the same thing: financial intermediaries unilaterally deciding who can collect money on their networks.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;PayPal&#39;s case is &#34;compliance-driven domestic shutdown.&#34;&lt;/strong&gt; After Taiwan&#39;s Electronic Payment Institution Management Act took effect in 2015, PayPal opted out of applying for a license and closed domestic payment functions. Cross-border functions stayed. Local third-party processors like ECPay, NewebPay, and Pay2Go filled the gap. In hindsight, this localized Taiwan&#39;s domestic payment infrastructure further. But applications that had built on PayPal for local Taiwan flows needed an alternative the same day&lt;sup id=&#34;fnref2:8&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:8&#34;&gt;8&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Stripe&#39;s case is &#34;the market was never opened.&#34;&lt;/strong&gt; Individuals and companies in Taiwan cannot apply for a Stripe account directly. The common workaround is to register a U.S. LLC, apply for an EIN, open a U.S. bank account, and operate Stripe under the U.S. corporate name&lt;sup id=&#34;fnref2:10&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:10&#34;&gt;10&lt;/a&gt;&lt;/sup&gt;. That route carries its own compliance cost — failure to file IRS Form 5472 starts at a US$25,000 penalty — and the threshold is high for individual creators. In October 2025, Stripe Tax began supporting Taiwan remote-seller tax registration&lt;sup id=&#34;fnref:12&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:12&#34;&gt;12&lt;/a&gt;&lt;/sup&gt;, but Stripe Tax handles tax registration only. Taiwan users still cannot open a Stripe payment account.&lt;/p&gt; &lt;p&gt;Neither is &#34;censorship&#34; in the traditional sense, but for advocacy organizations, independent media, and creators, the effect is censorship-shaped. Depending on cross-border payment rails means the primary collection channel can disappear at any time, or may have never existed. Domestic third-party processors fill some of the gap, but cross-border collection, international convergence on KYC, and the gradual rollout of Taiwan&#39;s Virtual Asset Service Provider Act are tightening simultaneously. The institutional framing is in &lt;a href=&#34;../../../../regional/taiwan-vasp-2026/&#34;&gt;Taiwan VASP Act 2026&lt;/a&gt;. Organization-side responses sit under &lt;a href=&#34;../../../../scenarios/nonprofit-anonymous-donation/&#34;&gt;Anonymous donation channels for advocacy organizations&lt;/a&gt;.&lt;/p&gt; &lt;h2 id=&#34;Sinophone-Asia-Pacific-the-same-mechanisms-with-regionally-specific-outcomes&#34;&gt;Sinophone Asia-Pacific: the same mechanisms with regionally specific outcomes&lt;a class=&#34;headerlink&#34; href=&#34;#Sinophone-Asia-Pacific-the-same-mechanisms-with-regionally-specific-outcomes&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Reitman&#39;s book doesn&#39;t expand into Asia. But the four elements she identifies — overcautious compliance-driven risk avoidance, vague service terms, automated decisions, and absent appeals — map cleanly onto specific events across the Sinophone Asia-Pacific. The differences are who drives the cutoff and what the motivation is.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Mainland China&lt;/strong&gt;: Account freezes after mandatory real-name registration on WeChat Pay and Alipay are a long-running phenomenon. Transfers touching sensitive topics, cross-border collection, or inbound flows from outside the country trigger &#34;protective freezes&#34; on accounts. The product of state censorship layered onto platform compliance — the mechanism Reitman documents in U.S. cases, with an additional policy-driven layer on top.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Hong Kong&lt;/strong&gt;: After the 2019–2020 protests, HSBC, Stripe, PayPal, and others faced a mix of international due diligence and local compliance pressure. Accounts belonging to pro-democracy organizations, independent media, and overseas Hong Konger fundraising platforms have been frozen or terminated repeatedly. Domestic regulation and external due diligence tightened during the same window.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Macau&lt;/strong&gt;: AML compliance pressure from the gaming industry spills over to ordinary users. Cross-border small transfers easily trigger EDD (enhanced due diligence), and independent media or human rights workers find their cross-border collection options thinning.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Singapore&lt;/strong&gt;: The Monetary Authority of Singapore&#39;s Payment Services Act and the 2023 onward tightening of crypto/DPT licensing make it difficult for startups, independent creators, and cross-border NGOs to access stable collection infrastructure inside the country. Some foreign providers have stopped accepting Singapore registrants outright.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Malaysia&lt;/strong&gt;: Bank Negara Malaysia&#39;s convergence on e-wallet KYC and existing foreign exchange controls make it hard for domestic users to receive small cross-border donations. Independent media and human rights NGOs need to route cross-border flows through longer paths.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Taiwan&#39;s situation — PayPal closed in 2017, Stripe never opened — belongs to the same family of mechanisms. The Taiwan payment conversation simply tends to file these under &#34;compliance trade-offs&#34; rather than identify them as financial censorship.&lt;/p&gt; &lt;p&gt;For English-language readers approaching this from outside the region, the takeaway is that Reitman&#39;s framework — financial intermediaries as de facto censors — extends well into the Sinophone Asia-Pacific. The U.S. and Middle Eastern cases in her book are well-documented and serve as the global anchor. The Sinophone Asia-Pacific cases summarized above are not yet catalogued at the same level of detail. That gap is exactly where the anoni.net community wants to contribute.&lt;/p&gt; &lt;h2 id=&#34;What-the-community-wants-to-advance-next&#34;&gt;What the community wants to advance next&lt;a class=&#34;headerlink&#34; href=&#34;#What-the-community-wants-to-advance-next&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;The community set anonymous payments as one of three 2026 focus areas. The original framing was &#34;individual financial flows are an independent dimension of metadata.&#34; Reitman&#39;s book reframes the question: financial flows can be actively wielded as a censorship tool, and the risk is not abstract for advocacy organizations, independent media, or creators.&lt;/p&gt; &lt;p&gt;The existing anchor, &lt;a href=&#34;../../../../basics/payments-anonymity/&#34;&gt;Why anonymous payments matter&lt;/a&gt;, addresses payment flows as passively observed. This post addresses payment flows as actively cut off. Reading both together gives the fuller picture.&lt;/p&gt; &lt;p&gt;Next steps planned include adding a &#34;cross-border sanctions and over-compliance side effects&#34; section to &lt;strong&gt;Taiwan VASP Act 2026&lt;/strong&gt;, and selecting 5–8 EFF Financial Censorship articles from the past decade-plus for curated translation. Tracking the progress of alternative payment systems is also part of the picture. Europe&#39;s European Payments Initiative and Brazil&#39;s Pix are two existing implementations&lt;sup id=&#34;fnref:17&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:17&#34;&gt;17&lt;/a&gt;&lt;/sup&gt;&lt;sup id=&#34;fnref:18&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:18&#34;&gt;18&lt;/a&gt;&lt;/sup&gt;, though payment rails are heavily regulated in every jurisdiction and building a scaled alternative is not cheap. The &lt;a href=&#34;../../../../community/payments-research/&#34;&gt;anonymous payments research track&lt;/a&gt; is where the community discussion and translation backlog live.&lt;/p&gt; &lt;p&gt;For English-language readers who want the underlying material, EFF&#39;s &lt;a href=&#34;https://www.eff.org/issues/financial-censorship&#34;&gt;Financial Censorship issue page&lt;/a&gt;{target=&#34;&lt;em&gt;blank&#34;} is the best entry point. _Transaction Denied&lt;/em&gt; is available from &lt;a href=&#34;https://www.beacon.org/Transaction-Denied-P2455.aspx&#34; target=&#34;_blank&#34;&gt;Beacon Press&lt;/a&gt;.&lt;/p&gt; &lt;h2 id=&#34;Related-reading&#34;&gt;Related reading&lt;a class=&#34;headerlink&#34; href=&#34;#Related-reading&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&#34;../../../../basics/internet-freedom/&#34;&gt;Internet Freedom&lt;/a&gt;: why the broader internet freedom frame matters for payment infrastructure&lt;/li&gt; &lt;li&gt;&lt;a href=&#34;../../../../scenarios/lgbtq/&#34;&gt;LGBTQ+ scenarios&lt;/a&gt;: a scenario page covering anonymous social participation, which intersects with payment privacy&lt;/li&gt; &lt;li&gt;&lt;em&gt;Existing English coverage is sparse on payments. Several Mandarin anchor pages are linked above and will be ported to English on the roadmap.&lt;/em&gt;&lt;/li&gt; &lt;/ul&gt; &lt;div class=&#34;footnote&#34;&gt; &lt;hr /&gt; &lt;ol&gt; &lt;li id=&#34;fn:1&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://www.eff.org/deeplinks/2026/04/former-eff-activism-directors-new-book-transaction-denied-explores-what-happens&#34; target=&#34;_blank&#34;&gt;Former EFF Activism Director&#39;s New Book, Transaction Denied, Explores What Happens When Financial Companies Act like Censors&lt;/a&gt; - EFF Deeplinks&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:1&#34; title=&#34;Jump back to footnote 1 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref2:1&#34; title=&#34;Jump back to footnote 1 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:2&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://www.beacon.org/Transaction-Denied-P2455.aspx&#34; target=&#34;_blank&#34;&gt;Transaction Denied book page&lt;/a&gt; - Beacon Press&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:2&#34; title=&#34;Jump back to footnote 2 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:3&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://www.eff.org/deeplinks/2012/03/free-speech-coalition-calls-paypal-back-misguided-book-censorship-policy&#34; target=&#34;_blank&#34;&gt;Free Speech Coalition Calls on PayPal to Back Off Misguided Book Censorship Policy&lt;/a&gt; - EFF Deeplinks&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:3&#34; title=&#34;Jump back to footnote 3 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:4&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://www.eff.org/deeplinks/2012/11/payment-provider-stripe-upholds-free-speech-reactivates-nifty-archives&#34; target=&#34;_blank&#34;&gt;Payment Provider Stripe Upholds Free Speech, Reactivates Nifty Archives&lt;/a&gt; - EFF Deeplinks&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:4&#34; title=&#34;Jump back to footnote 4 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:5&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://www.eff.org/deeplinks/2021/06/paypal-shuts-down-long-time-tor-supporter-no-recourse&#34; target=&#34;_blank&#34;&gt;PayPal Shuts Down Long-Time Tor Supporter with No Recourse&lt;/a&gt; - EFF Deeplinks&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:5&#34; title=&#34;Jump back to footnote 5 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:6&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://www.eff.org/deeplinks/2021/10/why-paypal-denying-service-palestinians&#34; target=&#34;_blank&#34;&gt;Why Is PayPal Denying Service to Palestinians?&lt;/a&gt; - EFF Deeplinks&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:6&#34; title=&#34;Jump back to footnote 6 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:7&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://www.eff.org/issues/financial-censorship&#34; target=&#34;_blank&#34;&gt;Financial Censorship issue page&lt;/a&gt; - EFF&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:7&#34; title=&#34;Jump back to footnote 7 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:8&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://technews.tw/2017/05/11/paypal-drop-out-taiwan/&#34; target=&#34;_blank&#34;&gt;PayPal withdraws, Taiwan local payment platforms rise&lt;/a&gt; - TechNews (in Mandarin)&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:8&#34; title=&#34;Jump back to footnote 8 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref2:8&#34; title=&#34;Jump back to footnote 8 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:9&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://gnn.gamer.com.tw/detail.php?sn=146778&#34; target=&#34;_blank&#34;&gt;Streamer donations affected? PayPal announces end to Taiwan domestic transactions&lt;/a&gt; - Bahamut GNN (in Mandarin)&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:9&#34; title=&#34;Jump back to footnote 9 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:10&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://most.tw/posts/blog/creatorsplatform202409/&#34; target=&#34;_blank&#34;&gt;Essential guide for Taiwan creators: platform fees and remittance back to Taiwan&lt;/a&gt; - most.tw (in Mandarin)&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:10&#34; title=&#34;Jump back to footnote 10 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref2:10&#34; title=&#34;Jump back to footnote 10 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:11&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://www.eff.org/about/staff/rainey-reitman-0&#34; target=&#34;_blank&#34;&gt;Rainey Reitman&lt;/a&gt; - EFF Staff (11 years at EFF, co-founder and current board chair of the Freedom of the Press Foundation)&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:11&#34; title=&#34;Jump back to footnote 11 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:12&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://docs.stripe.com/changelog/clover/2025-10-29/stripe-tax-taiwan-remote-support&#34; target=&#34;_blank&#34;&gt;Adds support for remote sellers in Taiwan to Stripe Tax&lt;/a&gt; - Stripe Changelog (2025-10-29)&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:12&#34; title=&#34;Jump back to footnote 12 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:13&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://blog.gslin.org/archives/2025/02/24/12271/mastercard-%e8%88%87-visa-%e5%b0%8d%e6%97%a5%e6%9c%ac%e6%96%87%e5%8c%96%e7%94%a2%e6%a5%ad%e7%9a%84%e6%94%bb%e5%8b%a2/&#34; target=&#34;_blank&#34;&gt;Mastercard and VISA&#39;s Offensive Against Japanese Cultural Industries&lt;/a&gt; - Gea-Suan Lin&#39;s BLOG (in Mandarin)&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:13&#34; title=&#34;Jump back to footnote 13 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:14&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://blog.gslin.org/archives/2025/07/21/12523/&#34; target=&#34;_blank&#34;&gt;Steam (Valve) confirms adult games removed under payment processor pressure&lt;/a&gt; - Gea-Suan Lin&#39;s BLOG (in Mandarin)&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:14&#34; title=&#34;Jump back to footnote 14 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:15&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://www.ftc.gov/news-events/news/press-releases/2026/03/ftc-chairman-andrew-n-ferguson-issues-warning-letters-ceos-paypal-stripe-visa-mastercard-about-debanking-american-consumers&#34; target=&#34;_blank&#34;&gt;FTC Chairman Andrew N. Ferguson Issues Warning Letters to CEOs of PayPal, Stripe, Visa and Mastercard About Debanking American Consumers&lt;/a&gt; - U.S. Federal Trade Commission&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:15&#34; title=&#34;Jump back to footnote 15 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:16&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://kotaku.com/kickstarter-is-the-latest-platform-seemingly-forced-to-ban-adult-content-by-payment-processors-2000695648&#34; target=&#34;_blank&#34;&gt;Kickstarter Is The Latest Platform Seemingly Forced To Ban Adult Content By Payment Processors&lt;/a&gt; - Kotaku&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:16&#34; title=&#34;Jump back to footnote 16 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:17&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/European_Payments_Initiative&#34; target=&#34;_blank&#34;&gt;European Payments Initiative&lt;/a&gt; - Wikipedia&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:17&#34; title=&#34;Jump back to footnote 17 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:18&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Pix_(payment_system)&#34; target=&#34;_blank&#34;&gt;Pix (payment system)&lt;/a&gt; - Wikipedia&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:18&#34; title=&#34;Jump back to footnote 18 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;/ol&gt; &lt;/div&gt;</description> <link>https://ipfs.anoni.net/en/blog/2026/05/2026-financial-companies-as-censors/</link> <pubDate>Mon, 24 Aug 2026 17:55:52 +0000</pubDate> <source url="https://ipfs.anoni.net/en/feed_rss_updated.xml">anoni.net Docs — Sinophone Asia-Pacific Networked Freedom Observatory</source><guid isPermaLink="true">https://ipfs.anoni.net/en/blog/2026/05/2026-financial-companies-as-censors/</guid> <enclosure url="https://assets.anoni.net/blog/2026-financial-companies-as-censors.png" type="image/png" length="27448" /> </item> <item> <title>Measuring Internet Censorship: Challenges, Trends, and Impact</title> <author>anoni.net Community</author> <category>OONI</category> <category>Observation</category> <category>Translated Article</category> <description>&lt;h1 id=&#34;Measuring-Internet-Censorship-Challenges-Trends-and-Impact&#34;&gt;Measuring Internet Censorship: Challenges, Trends, and Impact&lt;a class=&#34;headerlink&#34; href=&#34;#Measuring-Internet-Censorship-Challenges-Trends-and-Impact&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt; &lt;div class=&#34;admonition info&#34;&gt; &lt;p&gt;&lt;strong&gt;Editorial note:&lt;/strong&gt; This is a companion post for English-speaking readers. The original article, by Maria Xynou (OONI), was published on the &lt;a href=&#34;https://pulse.internetsociety.org/en/blog/2026/05/measuring-internet-censorship-challenges-trends-and-impact/&#34; target=&#34;_blank&#34;&gt;Internet Society Pulse blog&lt;/a&gt; and reposted on &lt;a href=&#34;https://ooni.org/post/2026-measuring-internet-censorship-trends-challenges-impact/&#34; target=&#34;_blank&#34;&gt;OONI&#39;s blog&lt;/a&gt;. Please read it there. anoni.net Docs is reposting a short summary here, alongside translations into &lt;a href=&#34;/blog/2026/06/2026-measuring-internet-censorship-challenges-trends-and-impact/&#34; target=&#34;_blank&#34;&gt;Traditional Chinese&lt;/a&gt; and &lt;a href=&#34;/zh-cn/blog/2026/06/2026-measuring-internet-censorship-challenges-trends-and-impact/&#34; target=&#34;_blank&#34;&gt;Simplified Chinese&lt;/a&gt;, plus a regional context section for readers in Chinese-reading regions.&lt;/p&gt; &lt;/div&gt; &lt;h2 id=&#34;What-the-original-article-covers&#34;&gt;What the original article covers&lt;a class=&#34;headerlink&#34; href=&#34;#What-the-original-article-covers&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Maria Xynou&#39;s post is a concise overview of how Internet censorship is becoming harder to measure, and what OONI&#39;s data shows about how it is evolving. The main points:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Censorship is rarely binary&lt;/strong&gt;: Confirming a block is not just &#34;up&#34; or &#34;down&#34;. False positives are common, methods range from DNS manipulation and IP blocking to throttling and forged responses, and the same site may be blocked on one network but reachable on another.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;OONI&#39;s approach&lt;/strong&gt;: Open measurement methodologies, control measurements, a probabilistic pipeline (OONI Pipeline v5) that classifies results as &#34;blocked&#34;, &#34;down&#34;, or &#34;OK&#34; with confidence estimates, and crowdsourced data from volunteers running &lt;a href=&#34;https://ooni.org/install/&#34; target=&#34;_blank&#34;&gt;OONI Probe&lt;/a&gt; on their local networks.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Seven evolving trends&lt;/strong&gt;: Globalization and normalization of censorship beyond the usual suspects, short-term targeted blocks around political events, long-term systemic suppression of marginalised communities, less transparent censorship in an encrypted web (TLS interference via DPI, no block pages), throttling and degraded service as subtler control, attacks on privacy technologies (encrypted DNS, ECH), and the rise of national intranets and allowlisting approaches.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Measurement enables advocacy&lt;/strong&gt;: OONI has been part of the &lt;a href=&#34;https://www.accessnow.org/keepiton&#34; target=&#34;_blank&#34;&gt;#KeepItOn campaign&lt;/a&gt; since 2016, and OONI data has supported legal and policy interventions in Gabon, Tanzania, Nepal, Togo, Mozambique, Pakistan, Kenya, and others.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Scale&lt;/strong&gt;: Over 3 billion measurements from 30,000 networks across 245 countries and territories since 2012, with tens of millions of new measurements added every month.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Please read the original for the full argument, all the supporting links, and the country-specific examples:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&#34;https://ooni.org/post/2026-measuring-internet-censorship-trends-challenges-impact/&#34; target=&#34;_blank&#34;&gt;Measuring Internet Censorship: Challenges, Trends, and Impact&lt;/a&gt; (OONI blog)&lt;/li&gt; &lt;li&gt;&lt;a href=&#34;https://pulse.internetsociety.org/en/blog/2026/05/measuring-internet-censorship-challenges-trends-and-impact/&#34; target=&#34;_blank&#34;&gt;Same post on Internet Society Pulse&lt;/a&gt; (original publication)&lt;/li&gt; &lt;/ul&gt; &lt;!-- more --&gt; &lt;h2 id=&#34;Why-we-are-republishing-this-for-Chinese-reading-audiences&#34;&gt;Why we are republishing this for Chinese-reading audiences&lt;a class=&#34;headerlink&#34; href=&#34;#Why-we-are-republishing-this-for-Chinese-reading-audiences&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;The forms of network interference described in OONI&#39;s post show up at very different intensities across the regions where our readership lives. The trends are familiar to anyone in Mainland China, but the framing in the original is mostly Western and global. Our two Chinese-language versions translate the full text, and the section below adds regional context that English-only readers may also find useful when interpreting OONI Explorer data for this part of the world.&lt;/p&gt; &lt;h2 id=&#34;Regional-Context-Chinese-reading-Audiences&#34;&gt;Regional Context: Chinese-reading Audiences&lt;a class=&#34;headerlink&#34; href=&#34;#Regional-Context-Chinese-reading-Audiences&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;h3 id=&#34;Taiwan-a-high-freedom-baseline-that-still-needs-continuous-measurement&#34;&gt;Taiwan: a high-freedom baseline that still needs continuous measurement&lt;a class=&#34;headerlink&#34; href=&#34;#Taiwan-a-high-freedom-baseline-that-still-needs-continuous-measurement&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;Taiwan is generally considered a high-freedom Internet environment, which does not mean there is no network-layer interference at all. Long-term measurement through OONI Probe across Taiwanese fixed-line ISPs and mobile networks is what makes it possible to verify whether TLS interference, DNS manipulation, or selective blocks are present, and to evaluate the country&#39;s &#34;digital resilience&#34; claims with evidence rather than assumption. The community has already accumulated some baseline material on &lt;a href=&#34;../../../../regional/tor-relay-watcher/&#34;&gt;Tor Relays observation&lt;/a&gt; and &lt;a href=&#34;../../../../regional/ooni-asn-coverage/&#34;&gt;ASN coverage analysis&lt;/a&gt;, though the contributor base is still small relative to coverage needs.&lt;/p&gt; &lt;p&gt;Separately, Taiwan in recent years has seen network-layer blocking targeted at overseas scam, gambling, and unauthorised content platforms, typically implemented through cooperation between the police, the NCC, and ISPs. These measures have a plausible public-policy purpose, but the details, the blocklists, the false-positive disputes, and the remedy mechanisms are often not externally verifiable. The TLS interference, throttling, and encrypted-DNS blocking described in OONI&#39;s post are also tools adopted in democracies, which means the line between &#34;legitimate enforcement&#34; and &#34;opaque censorship&#34; needs to keep being examined. Independent measurement tools like OONI Probe are the critical infrastructure that makes that line verifiable in the first place.&lt;/p&gt; &lt;h3 id=&#34;Mainland-China-most-of-the-phenomena-described-in-the-original-have-been-the-long-term-baseline&#34;&gt;Mainland China: most of the phenomena described in the original have been the long-term baseline&lt;a class=&#34;headerlink&#34; href=&#34;#Mainland-China-most-of-the-phenomena-described-in-the-original-have-been-the-long-term-baseline&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;The combination of methods catalogued in OONI&#39;s post, including DNS manipulation, IP blocking, TLS interference, encrypted DNS and ECH blocking, and movement toward allowlist-style national networks, has been the long-term baseline of network governance in Mainland China. OONI&#39;s long-term measurement data from the mainland is an important resource for researchers studying how this system has evolved. For readers based in the mainland, the original article is also a technical backdrop to the everyday experience of &#34;why a tool that used to work just suddenly stops working&#34;.&lt;/p&gt; &lt;h3 id=&#34;Hong-Kong-Macau-Singapore-Malaysia-and-other-Simplified-Chinese-reading-regions&#34;&gt;Hong Kong, Macau, Singapore, Malaysia and other Simplified Chinese reading regions&lt;a class=&#34;headerlink&#34; href=&#34;#Hong-Kong-Macau-Singapore-Malaysia-and-other-Simplified-Chinese-reading-regions&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;Network-layer intervention takes very different shapes across the regions where Simplified Chinese is widely read. Hong Kong has seen new network-layer blocks emerge since 2020, which OONI data can track over time. Macau is smaller in scale but shows similar signals. Singapore and Malaysia rely more on statutory takedowns and platform compliance, with comparatively limited network-layer interference. These differences are directly comparable in &lt;a href=&#34;https://explorer.ooni.org/&#34; target=&#34;_blank&#34;&gt;OONI Explorer&lt;/a&gt;, and the trends in the original article show up at very different intensities depending on jurisdiction.&lt;/p&gt; &lt;p&gt;A common risk assessment applies across all these regions: running OONI Probe generates traffic that can be observed by the network. In environments with heavier network surveillance, please read &lt;a href=&#34;https://ooni.org/about/risks/&#34; target=&#34;_blank&#34;&gt;OONI&#39;s risk page&lt;/a&gt; first. For readers in Mainland China specifically, reading the existing data on &lt;a href=&#34;https://explorer.ooni.org/&#34; target=&#34;_blank&#34;&gt;OONI Explorer&lt;/a&gt; is often a more proportionate starting point than running active measurements. For readers in lower-risk environments, contributing measurements directly helps fill the data-coverage gap that currently exists for Chinese-reading regions.&lt;/p&gt;</description> <link>https://ipfs.anoni.net/en/blog/2026/07/2026-measuring-internet-censorship-challenges-trends-and-impact/</link> <pubDate>Mon, 24 Aug 2026 17:55:52 +0000</pubDate> <source url="https://ipfs.anoni.net/en/feed_rss_updated.xml">anoni.net Docs — Sinophone Asia-Pacific Networked Freedom Observatory</source><guid isPermaLink="true">https://ipfs.anoni.net/en/blog/2026/07/2026-measuring-internet-censorship-challenges-trends-and-impact/</guid> <enclosure url="https://ipfs.anoni.net/en/assets/images/social/blog/2026/07/2026-measuring-internet-censorship-challenges-trends-and-impact.png" type="image/png" length="49435" /> </item> <item> <title>onionoo MCP is now public: query the Tor relay network in plain language</title> <author>anoni.net Community</author> <category>Community</category> <category>News</category> <description>&lt;h1 id=&#34;onionoo-MCP-is-now-public-query-the-Tor-relay-network-in-plain-language&#34;&gt;onionoo MCP is now public: query the Tor relay network in plain language&lt;a class=&#34;headerlink&#34; href=&#34;#onionoo-MCP-is-now-public-query-the-Tor-relay-network-in-plain-language&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt; &lt;p&gt;&lt;img alt=&#34;onionoo MCP launch&#34; src=&#34;../../../assets/images/post-update.png&#34; style=&#34;border-radius: 10px;box-shadow:1px 1px 0.6rem #00aeff;&#34; /&gt;&lt;/p&gt; &lt;p&gt;The community-hosted &lt;code&gt;onionoo-fastapi&lt;/code&gt; service is now public at &lt;a href=&#34;https://onionoo.anoni.net&#34;&gt;https://onionoo.anoni.net&lt;/a&gt;, released as v1.0.0. It wraps the Tor Project&#39;s official &lt;a href=&#34;https://metrics.torproject.org/onionoo.html&#34; target=&#34;_blank&#34;&gt;Onionoo&lt;/a&gt; API in two interfaces: a semantic HTTP API with a full OpenAPI document, and a Model Context Protocol (MCP) server.&lt;/p&gt; &lt;p&gt;Connect it to Claude Desktop, Cursor, Claude Code, or any MCP-capable client and you can ask a single question like &#34;how many running Tor relays does Taiwan have right now, what is the total bandwidth, and what are the top five ASNs?&#34; The agent breaks the question down, picks tools, fetches the data, and returns a readable summary. You do not need to learn Onionoo&#39;s field schema before starting research.&lt;/p&gt; &lt;!-- more --&gt; &lt;h2 id=&#34;Why-wrap-Onionoo-at-all&#34;&gt;Why wrap Onionoo at all&lt;a class=&#34;headerlink&#34; href=&#34;#Why-wrap-Onionoo-at-all&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Onionoo&#39;s specification is complete, but it has three hurdles for AI agents.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;It has no OpenAPI description, so Swagger UI, Postman, and code generators cannot consume it directly.&lt;/li&gt; &lt;li&gt;Its compact field names (&lt;code&gt;r&lt;/code&gt;, &lt;code&gt;f&lt;/code&gt;, &lt;code&gt;n&lt;/code&gt;, &lt;code&gt;a&lt;/code&gt;, and so on) are designed for transport efficiency, not semantic clarity. Language models routinely confuse &lt;code&gt;r&lt;/code&gt; with &lt;code&gt;relay&lt;/code&gt; or &lt;code&gt;running&lt;/code&gt;.&lt;/li&gt; &lt;li&gt;A single useful query often spans multiple endpoints (&lt;code&gt;details&lt;/code&gt; plus &lt;code&gt;uptime&lt;/code&gt; plus &lt;code&gt;bandwidth&lt;/code&gt;). Agents that hand-roll that composition tend to make mistakes.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&lt;code&gt;onionoo-fastapi&lt;/code&gt; takes care of those problems. Compact codes are renamed to &lt;code&gt;nickname&lt;/code&gt;, &lt;code&gt;fingerprint&lt;/code&gt;, &lt;code&gt;addresses&lt;/code&gt;, &lt;code&gt;running&lt;/code&gt;, and so on. A full OpenAPI document is published. Common multi-endpoint tasks are exposed as single MCP tool calls. One call returns the merged &lt;code&gt;details&lt;/code&gt;, &lt;code&gt;uptime&lt;/code&gt;, and &lt;code&gt;bandwidth&lt;/code&gt; snapshot for a relay, instead of you stitching three endpoints together.&lt;/p&gt; &lt;p&gt;The service does &lt;strong&gt;not&lt;/strong&gt; store any Onionoo data. It only forwards requests and reshapes responses. The upstream is &lt;a href=&#34;https://onionoo.torproject.org&#34;&gt;https://onionoo.torproject.org&lt;/a&gt;.&lt;/p&gt; &lt;h2 id=&#34;What-you-can-ask&#34;&gt;What you can ask&lt;a class=&#34;headerlink&#34; href=&#34;#What-you-can-ask&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Once connected, you can ask the agent the following sorts of questions in plain language.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Audit a country&#39;s Tor footprint&lt;/strong&gt;: &#34;Summarize Taiwan&#39;s running Tor relays. Count, total bandwidth, consensus weight, top five ASNs, and pick the three relays with the highest consensus weight.&#34;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Inspect a specific ASN&lt;/strong&gt;: &#34;List all running Tor relays under TANet (AS1659), including their flags, bandwidth, and uptime.&#34;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Compare fingerprints&lt;/strong&gt;: &#34;Compare &lt;code&gt;9695DFC35FFEB861329B9F1AB04C46397020CE31&lt;/code&gt; and &lt;code&gt;847B1F850344D7876491A54892F904934E4EB85D&lt;/code&gt;. Versions, flags, country, and AS.&#34;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Single-relay health check&lt;/strong&gt;: &#34;Tell me the current status of relay &lt;code&gt;moria1&lt;/code&gt;. Country, last week&#39;s bandwidth trend, and uptime.&#34;&lt;/li&gt; &lt;/ul&gt; &lt;figure&gt; &lt;a href=&#34;https://assets.anoni.net/docs/onionoo-mcp-tw-summary-result-en.png&#34; target=&#34;_blank&#34;&gt; &lt;img src=&#34;https://assets.anoni.net/docs/onionoo-mcp-tw-summary-result-en.png&#34; alt=&#34;Claude Desktop&#39;s summary report for Taiwan&#39;s Tor relays: running count, total bandwidth, consensus weight, and a top-5 ASN table&#34; title=&#34;Claude Desktop&#39;s Taiwan Tor relay summary&#34; class=&#34;brand-frame&#34;&gt; &lt;/a&gt; &lt;figcaption&gt;Claude Desktop connected to onionoo MCP, replying to &#34;Summarize Taiwan&#39;s Tor relays&#34; with a structured report. The numbers come from upstream Onionoo and represent a point-in-time snapshot.&lt;/figcaption&gt; &lt;/figure&gt; &lt;p&gt;The pre-MCP version of this workflow meant skimming the Onionoo docs, writing a script, merging JSON, and formatting a table. A single sentence now gets you to a first-cut answer, and the cost of starting a piece of research drops sharply.&lt;/p&gt; &lt;h2 id=&#34;How-to-connect&#34;&gt;How to connect&lt;a class=&#34;headerlink&#34; href=&#34;#How-to-connect&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;h3 id=&#34;For-AI-client-users&#34;&gt;For AI client users&lt;a class=&#34;headerlink&#34; href=&#34;#For-AI-client-users&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;In Claude Desktop, Cursor, or any other MCP-capable client, add this to the &lt;code&gt;mcpServers&lt;/code&gt; section of the config:&lt;/p&gt; &lt;div class=&#34;highlight&#34;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&#34;mcpServers&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&#34;onionoo&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&#34;type&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#34;http&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&#34;url&#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#34;https://onionoo.anoni.net/mcp&#34;&lt;/span&gt; &lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt; &lt;p&gt;Save the config, restart the client, and the &lt;code&gt;onionoo&lt;/code&gt; tool set will appear in the tool list. The full guide covers local stdio transport setup, all available tools, permission options, and self-hosted (Docker) instructions.&lt;/p&gt; &lt;p&gt;&lt;a class=&#34;md-button md-button--primary&#34; href=&#34;../../../../community/onionoo-mcp/&#34;&gt;&lt;span class=&#34;twemoji&#34;&gt;&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 24 24&#34;&gt;&lt;path d=&#34;M6 13v-2h8l-3.5-3.5 1.42-1.42L17.84 12l-5.92 5.92-1.42-1.42L14 13zm16-1a10 10 0 0 1-10 10A10 10 0 0 1 2 12 10 10 0 0 1 12 2a10 10 0 0 1 10 10m-2 0a8 8 0 0 0-8-8 8 8 0 0 0-8 8 8 8 0 0 0 8 8 8 8 0 0 0 8-8&#34;/&gt;&lt;/svg&gt;&lt;/span&gt; Read the full onionoo MCP guide&lt;/a&gt;&lt;/p&gt; &lt;h3 id=&#34;For-direct-API-users&#34;&gt;For direct API users&lt;a class=&#34;headerlink&#34; href=&#34;#For-direct-API-users&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;Each endpoint returns semantic JSON and can be called with &lt;code&gt;curl&lt;/code&gt;:&lt;/p&gt; &lt;div class=&#34;highlight&#34;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&#34;c1&#34;&gt;# Taiwan relays, top 5 by consensus weight&lt;/span&gt; curl&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;-s&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&#39;https://onionoo.anoni.net/v1/details?country=tw&amp;amp;running=true&amp;amp;order=-consensus_weight&amp;amp;limit=5&#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;jq&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;. &lt;span class=&#34;c1&#34;&gt;# Running relay counts aggregated by country&lt;/span&gt; curl&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;-s&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&#39;https://onionoo.anoni.net/v1/aggregate/countries?running=true&#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;jq&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt; &lt;p&gt;The full endpoint list and parameters are in the &lt;a href=&#34;https://onionoo.anoni.net/docs&#34; target=&#34;_blank&#34;&gt;Swagger UI&lt;/a&gt;. Query parameters follow Onionoo&#39;s &lt;a href=&#34;https://metrics.torproject.org/onionoo.html&#34; target=&#34;_blank&#34;&gt;official specification&lt;/a&gt;.&lt;/p&gt; &lt;h2 id=&#34;Where-this-fits-alongside-our-other-observation-tools&#34;&gt;Where this fits alongside our other observation tools&lt;a class=&#34;headerlink&#34; href=&#34;#Where-this-fits-alongside-our-other-observation-tools&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;anoni.net now has three entry points for Tor network observation, each suited to a different task.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;&lt;a href=&#34;../../../../regional/tor-relay-watcher/&#34;&gt;Tor relay watcher&lt;/a&gt;&lt;/strong&gt;: chart dashboards for Taiwan&#39;s relay counts and bandwidth trends. Good when you want to see how something has moved over time.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;&lt;a href=&#34;../../../../regional/ooni-asn-coverage/&#34;&gt;ASN observation data analysis&lt;/a&gt;&lt;/strong&gt;: OONI observation data broken down by ASN. Good when you want to know which ASNs are actually being measured.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;onionoo MCP&lt;/strong&gt; (new): ask ad-hoc questions in plain language. Good when you want to scope out a specific relay, ASN, or country.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;The three rely on different data sources (Pulse&#39;s own historical time series, OONI&#39;s raw observation data, and Onionoo&#39;s live snapshots) and complement each other rather than duplicating coverage.&lt;/p&gt; &lt;h2 id=&#34;Contribute-or-report-back&#34;&gt;Contribute or report back&lt;a class=&#34;headerlink&#34; href=&#34;#Contribute-or-report-back&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;File issues or feature requests: &lt;a href=&#34;https://github.com/anoni-net/onionoo-fastapi/issues&#34;&gt;https://github.com/anoni-net/onionoo-fastapi/issues&lt;/a&gt;&lt;/li&gt; &lt;li&gt;To discuss which task-oriented tools we should add next, or to ask the community to demonstrate a particular query, drop by our &lt;a href=&#34;../../../../community/tools/&#34;&gt;Matrix room&lt;/a&gt;. English is welcome in the room.&lt;/li&gt; &lt;li&gt;To run your own instance (for a .onion service, internal network, or experimentation), the &#34;Self-hosting (Docker)&#34; section of the full guide has Docker commands and the full environment variable list.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;The service is released under the MIT license. Source code: &lt;a href=&#34;https://github.com/anoni-net/onionoo-fastapi&#34;&gt;https://github.com/anoni-net/onionoo-fastapi&lt;/a&gt;. Issues and PRs welcome.&lt;/p&gt; &lt;h2 id=&#34;Related-reading&#34;&gt;Related reading&lt;a class=&#34;headerlink&#34; href=&#34;#Related-reading&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&#34;../../../../community/onionoo-mcp/&#34;&gt;onionoo MCP: a query service for Tor relays&lt;/a&gt; — full usage guide&lt;/li&gt; &lt;li&gt;&lt;a href=&#34;../../../../regional/tor-relay-watcher/&#34;&gt;Tor relay watcher&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&#34;../../../../regional/ooni-asn-coverage/&#34;&gt;ASN observation data analysis&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&#34;../../../../tools/what-is-tor/&#34;&gt;What is Tor?&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;</description> <link>https://ipfs.anoni.net/en/blog/2026/05/2026-onionoo-mcp-public/</link> <pubDate>Mon, 24 Aug 2026 17:55:52 +0000</pubDate> <source url="https://ipfs.anoni.net/en/feed_rss_updated.xml">anoni.net Docs — Sinophone Asia-Pacific Networked Freedom Observatory</source><guid isPermaLink="true">https://ipfs.anoni.net/en/blog/2026/05/2026-onionoo-mcp-public/</guid> <enclosure url="https://ipfs.anoni.net/en/assets/images/post-update.png" type="image/png" length="81353" /> </item> <item> <title>How Unredacted Helps People in Censored Regions Reach the Open Internet</title> <author>anoni.net Community</author> <category>News</category> <category>Tor</category> <category>Translated Article</category> <description>&lt;h1 id=&#34;How-Unredacted-Helps-People-in-Censored-Regions-Reach-the-Open-Internet&#34;&gt;How Unredacted Helps People in Censored Regions Reach the Open Internet&lt;a class=&#34;headerlink&#34; href=&#34;#How-Unredacted-Helps-People-in-Censored-Regions-Reach-the-Open-Internet&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt; &lt;div class=&#34;admonition info&#34;&gt; &lt;p&gt;This post is based on a guest post on the Tor Blog by Unredacted, with an anoni.net community perspective added for Taiwan and the wider Sinophone region.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&#34;https://blog.torproject.org/keeping-the-doors-open-unredacted/&#34; target=&#34;_blank&#34;&gt;Keeping the doors open, Tor Blog, by Unredacted.org, 2026-05-15&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;p&gt;&lt;img alt=&#34;Keeping the doors open&#34; src=&#34;../../../assets/images/tor.webp&#34; style=&#34;border-radius: 10px;&#34; /&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&#34;https://unredacted.org/&#34; target=&#34;_blank&#34;&gt;Unredacted&lt;/a&gt; is a US-based 501(c)(3) non-profit that runs a network of 300+ servers to keep people in heavily censored places connected to the open internet. Their guest post is part of the Tor Blog&#39;s spotlight series on organizations defending the free internet, and it opens with a line from a user in China: &#34;You have helped many many people to overcome the great firewall.&#34; That kind of message is rare, because people living under censorship usually have no safe channel to send one.&lt;/p&gt; &lt;p&gt;This post highlights what Unredacted builds, and what it looks like from where the anoni.net community sits, in Taiwan.&lt;/p&gt; &lt;!-- more --&gt; &lt;h2 id=&#34;What-Unredacted-runs&#34;&gt;What Unredacted runs&lt;a class=&#34;headerlink&#34; href=&#34;#What-Unredacted-runs&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;&lt;strong&gt;Unredacted Door&lt;/strong&gt; is their umbrella for circumvention services: FreeSocks proxies, messaging proxies for Signal and Telegram, Tor bridges, and Snowflake. Over a recent 30-day window these carried nearly 300 TiB for tens of thousands of people routing around censorship. The largest piece, FreeSocks, is built to look unremarkable on the wire, the opposite of a standard VPN that advertises itself through a known endpoint and handshake. FreeSocks v2 leans on &lt;strong&gt;Xray&lt;/strong&gt; to make proxy traffic resemble ordinary HTTPS, paired with an open-source control plane that rotates endpoints automatically when a server gets blocked.&lt;/p&gt; &lt;div class=&#34;admonition note&#34;&gt; &lt;p class=&#34;admonition-title&#34;&gt;What is Xray&lt;/p&gt; &lt;p&gt;Xray is a traffic-routing and obfuscation tool descended from the V2Ray project, widely used in heavily censored places like China and Iran. Protocols such as VLESS, Trojan, and Reality disguise proxy traffic as ordinary HTTPS / TLS, smoothing over the handshake and packet shapes a VPN gives away at a glance. See the &lt;a href=&#34;https://github.com/XTLS/Xray-core&#34; target=&#34;_blank&#34;&gt;Xray-core project&lt;/a&gt;.&lt;/p&gt; &lt;/div&gt; &lt;p&gt;&lt;strong&gt;GreenWare&lt;/strong&gt; is their effort to run real relay capacity on low-power hardware. Instead of datacenter servers that draw power like a space heater, they run Tor exits on PoE-powered Raspberry Pi 5 boards and a 1U chassis of 20 ComputeBlade modules. As of their writing, all 123 of their Tor exit relays run on this combined setup, drawing roughly 400W in total, about what a few old incandescent bulbs burn. Lower cost and power per exit means more people can take on the hardest, most legally exposed part of running Tor.&lt;/p&gt; &lt;h2 id=&#34;From-the-anoninet-community-a-Taiwan-vantage-point&#34;&gt;From the anoni.net community: a Taiwan vantage point&lt;a class=&#34;headerlink&#34; href=&#34;#From-the-anoninet-community-a-Taiwan-vantage-point&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;anoni.net is an anonymity-network community based in Taiwan, and that is the vantage point these notes are written from. Taiwan&#39;s network environment is relatively free: no Great Firewall, no mandatory VPN registration, no state censorship orders to ISPs. That is exactly why a place like Taiwan, with free outbound connectivity, is well positioned to host Tor relays and bridges and carry a share of the circumvention work. The people this infrastructure serves are in heavily censored places like mainland China and Iran. Other regions with equally free connectivity, like Singapore, Malaysia, and wherever the diaspora lives, are just as suitable as hosting locations.&lt;/p&gt; &lt;p&gt;The anoni.net community tracks the number and distribution of Tor relays in Taiwan through &lt;a href=&#34;https://anoni.net/api/readme&#34; target=&#34;_blank&#34;&gt;Pulse live monitoring&lt;/a&gt;. As of 2026-05-31, Onionoo (the Tor Project&#39;s relay data service) sees 12 running relays inside Taiwan, of which only 3 carry the Exit flag (initramfs, GuruKopi, jerryrelay). Set against Unredacted, a single organization running 123 exit relays and carrying nearly 300 TiB over 30 days, Taiwan&#39;s nationwide exit capacity is under 3% of theirs. We keep this number current on the &lt;a href=&#34;../../../../regional/tor-relay-watcher/&#34;&gt;Tor Relays watch page&lt;/a&gt; and pair it with OONI&#39;s censorship observations for Taiwan and nearby regions.&lt;/p&gt; &lt;p&gt;For the Sinophone world, demand for circumvention has grown since 2020 across Hong Kong, Macau, and Mandarin-speaking communities in Southeast Asia, while circumvention resources written in Chinese remain comparatively scarce. Part of anoni.net&#39;s work is filling that gap with Chinese-language documentation, walking the same path as Unredacted Education.&lt;/p&gt; &lt;h2 id=&#34;From-the-anoninet-community-GreenWares-feasibility-for-free-connectivity-regions&#34;&gt;From the anoni.net community: GreenWare&#39;s feasibility for free-connectivity regions&lt;a class=&#34;headerlink&#34; href=&#34;#From-the-anoninet-community-GreenWares-feasibility-for-free-connectivity-regions&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Unredacted running 123 exit relays on 400W makes for friendly operating economics. At a typical Taiwan commercial electricity rate of roughly NT$3.5–6 per kWh (about US$0.11–0.19), 400W running year-round is about 3,500 kWh, or roughly NT$12,000–21,000 a year (about US$400–700).&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:1&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; That is an affordable line item for a campus IT center or a community workspace. Readers elsewhere can convert their local rate; the order of magnitude usually lands in the same range.&lt;/p&gt; &lt;p&gt;The key is designing the hardware to scale. Raspberry Pi 5 is familiar to maker communities everywhere, and PoE+ HATs and PoE switches are easy to buy through ordinary electronics retail. ComputeBlade (the 20-module 1U chassis) has fewer retail channels and is usually obtained through official overseas ordering or a community group buy. An institutional server room suits this better than a home network, for three reasons: a static IP, institutional bandwidth, and someone on site to check the machines.&lt;/p&gt; &lt;p&gt;Campus Tor relays are one of anoni.net&#39;s three focus areas for 2026, and the community is collecting field experience into a setup playbook (&lt;a href=&#34;../../../../community/relay-on-campus/&#34;&gt;Tor relays on campus track&lt;/a&gt;, plus the writeup &lt;a href=&#34;../../../2025/12/ntnu-nz/&#34;&gt;Setting up a Tor relay at NTNU&lt;/a&gt;). Unredacted&#39;s engineering approach with GreenWare is a useful reference point for the next school weighing a deployment: start with a single PoE-powered Raspberry Pi 5 middle relay, and once it runs stably, consider exits and chassis density.&lt;/p&gt; &lt;p&gt;For an individual or a small group, running a Snowflake proxy (a browser extension or Docker) carries almost no electricity cost and is the lowest-barrier entry into circumvention infrastructure (see &lt;a href=&#34;https://snowflake.torproject.org/&#34; target=&#34;_blank&#34;&gt;Snowflake&lt;/a&gt;).&lt;/p&gt; &lt;h2 id=&#34;What-you-can-do&#34;&gt;What you can do&lt;a class=&#34;headerlink&#34; href=&#34;#What-you-can-do&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;If Unredacted&#39;s work makes you want to help people in censored regions reach the open internet, here are a few entry points:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Learn about Unredacted&lt;/strong&gt;: visit &lt;a href=&#34;https://unredacted.org/&#34; target=&#34;_blank&#34;&gt;unredacted.org&lt;/a&gt; for their services and transparency information, then decide whether to support their servers, bandwidth, and staffing through their official channels.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Run Snowflake&lt;/strong&gt;: the lowest-barrier contribution, run from a browser extension or Docker (see &lt;a href=&#34;https://snowflake.torproject.org/&#34; target=&#34;_blank&#34;&gt;Snowflake&lt;/a&gt;).&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Run a Tor relay or bridge&lt;/strong&gt;: this needs a steady network and a little operational effort. The Tor Project&#39;s &lt;a href=&#34;https://community.torproject.org/relay/&#34; target=&#34;_blank&#34;&gt;relay guide&lt;/a&gt; walks through the setup, and the community wrote up &lt;a href=&#34;../../../../community/setup-tor-webtunnel/&#34;&gt;how to set up a Tor WebTunnel bridge&lt;/a&gt;.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Campus Tor relays&lt;/strong&gt;: if you work or study at a college or university, start your assessment from the &lt;a href=&#34;../../../../community/relay-on-campus/&#34;&gt;Tor relays on campus track&lt;/a&gt;.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Join the anoni.net community discussion&lt;/strong&gt;: trade notes with other members over Matrix; the entry point is on the &lt;a href=&#34;../../../../community/&#34;&gt;community page&lt;/a&gt;, and other contact channels are on the &lt;a href=&#34;../../../../contact/&#34;&gt;contact page&lt;/a&gt;.&lt;/li&gt; &lt;/ul&gt; &lt;h2 id=&#34;Related-reading&#34;&gt;Related reading&lt;a class=&#34;headerlink&#34; href=&#34;#Related-reading&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&#34;../../../../basics/internet-freedom/&#34;&gt;Why internet freedom matters&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&#34;../../05/iran-blackout-webtunnel/&#34;&gt;After Iran&#39;s 80-day blackout, traffic surged through our community&#39;s Tor WebTunnel bridge&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&#34;../../../2025/12/ntnu-nz/&#34;&gt;Setting up a Tor relay at NTNU&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&#34;../../../../regional/tor-relay-watcher/&#34;&gt;Tor Relays watch page&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Same series: &lt;a href=&#34;https://blog.torproject.org/Defending-the-right-to-know/&#34; target=&#34;_blank&#34;&gt;Defending the public&#39;s right to know (OONI)&lt;/a&gt;, &lt;a href=&#34;https://blog.torproject.org/preserving-evidence-openarchive-fosters-accountability-media-sovereignty/&#34; target=&#34;_blank&#34;&gt;Preserving evidence: How OpenArchive fosters accountability and media sovereignty&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;div class=&#34;footnote&#34;&gt; &lt;hr /&gt; &lt;ol&gt; &lt;li id=&#34;fn:1&#34;&gt; &lt;p&gt;Taiwan&#39;s 2026 average electricity rate is NT$3.7823 per kWh (frozen for April–September by the 2026-03-27 rate review); the actual per-kWh price varies by customer class and time-of-use tier. Source: &lt;a href=&#34;https://www.taipower.com.tw/2289/2290/46940/&#34; target=&#34;_blank&#34;&gt;Taipower electricity rate schedule&lt;/a&gt;.&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:1&#34; title=&#34;Jump back to footnote 1 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;/ol&gt; &lt;/div&gt;</description> <link>https://ipfs.anoni.net/en/blog/2026/06/keeping-the-doors-open/</link> <pubDate>Mon, 24 Aug 2026 17:55:52 +0000</pubDate> <source url="https://ipfs.anoni.net/en/feed_rss_updated.xml">anoni.net Docs — Sinophone Asia-Pacific Networked Freedom Observatory</source><guid isPermaLink="true">https://ipfs.anoni.net/en/blog/2026/06/keeping-the-doors-open/</guid> <enclosure url="https://ipfs.anoni.net/en/assets/images/tor.webp" type="image/webp" length="13344" /> </item> <item> <title>Recording 30 Minutes of Northern Taiwan&#39;s Mobile Networks During an Announced Throttle on 13 August</title> <author>anoni.net Community</author> <category>Community</category> <category>OONI</category> <description>&lt;h1 id=&#34;Recording-30-Minutes-of-Northern-Taiwans-Mobile-Networks-During-an-Announced-Throttle-on-13-August&#34;&gt;Recording 30 Minutes of Northern Taiwan&#39;s Mobile Networks During an Announced Throttle on 13 August&lt;a class=&#34;headerlink&#34; href=&#34;#Recording-30-Minutes-of-Northern-Taiwans-Mobile-Networks-During-an-Announced-Throttle-on-13-August&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt; &lt;p&gt;&lt;img alt=&#34;Measuring Taiwan&#39;s mobile network throttling drill&#34; src=&#34;../../../assets/images/ooni-run-v2.webp&#34; style=&#34;border-radius: 10px;box-shadow:1px 1px 0.6rem #00aeff;&#34; /&gt;&lt;/p&gt; &lt;p&gt;On Thursday 13 August, from 14:30 to 15:00 Taipei time (UTC+8), mobile networks in Keelung, Taipei, New Taipei, Taoyuan, Hsinchu City, Hsinchu County, and Yilan will be throttled for thirty minutes. The throttle is part of Taiwan&#39;s Urban Resilience Exercise, executed simultaneously by all three major carriers. Official announcements state that voice calls, SMS, and cell broadcast continue to work, and that high-bandwidth services degrade: video streaming, video calls, mobile payments, cloud sync.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:1&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; The advice for the window from the NCC (National Communications Commission, Taiwan&#39;s telecom regulator) is to prepare in advance for going offline.&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:2&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt; &lt;p&gt;Officials have described the depth of the throttle twice. On 20 July, Defence Minister Wellington Koo &lt;a href=&#34;https://www.ettoday.net/news/20260720/3204422.htm&#34; target=&#34;_blank&#34;&gt;told the Legislative Yuan&lt;/a&gt; (Taiwan&#39;s parliament) that speeds would drop to one percent of 4G and 5G capacity. After the central Taiwan drill on 10 August, the Executive Yuan (Taiwan&#39;s cabinet) &lt;a href=&#34;https://www.cna.com.tw/news/aipl/202608100327.aspx&#34; target=&#34;_blank&#34;&gt;described the method&lt;/a&gt;: carriers apply rate limiting in the core network, capping mobile download speeds at 256KB. The two statements are of the same order, and either one gives a figure to expect when the measurements come in.&lt;/p&gt; &lt;p&gt;The date, the window, the seven counties, the three carriers: every boundary of this throttle is public before it runs. Studies of network throttling rarely get that. In most cases users notice slowness first and researchers reconstruct the timeline afterwards, leaving the edges fuzzy. Pre-announced shutdowns are not new elsewhere, exam-period national shutdowns being the familiar example.&lt;sup id=&#34;fnref:6&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:6&#34;&gt;6&lt;/a&gt;&lt;/sup&gt; On the publicly documented record, a pre-announced &lt;em&gt;throttle&lt;/em&gt; is less common, particularly one with per-carrier granularity.&lt;/p&gt; &lt;p&gt;During the same window at the central Taiwan drill on 10 August, Taiwan&#39;s OONI observations contained no performance measurement from a mobile network at all. The northern drill is the last of this year&#39;s exercise, so after 13 August the opportunity does not come round again.&lt;/p&gt; &lt;p&gt;If you are in one of those seven counties, your phone is going to slow down for that half hour regardless. Rather than just waiting it out, you might as well leave a record behind.&lt;/p&gt; &lt;!-- more --&gt; &lt;details class=&#34;info&#34;&gt; &lt;summary&gt;Why throttle mobile networks at all: context for readers outside Taiwan&lt;/summary&gt; &lt;p&gt;The Executive Yuan describes the drill as simulating an extreme scenario in order to verify the government&#39;s response capability under constrained communications, with the scenarios in mind including natural disaster, large-scale cyberattack, and compound disasters, and the stated goal being to strengthen overall communications and societal defence resilience.&lt;sup id=&#34;fnref3:1&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:1&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; The announcement itself does not mention wartime or military exercises; the framing is civil defence and fallback capacity. The mobile throttle was added to the exercise for the first time, drawing on practice in Japan, South Korea, and the Nordic countries,&lt;sup id=&#34;fnref4:1&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:1&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; which is a first for Taiwan rather than a global first.&lt;/p&gt; &lt;p&gt;For Taiwan, communications loss is not a hypothetical problem. Taiwan is an island whose external connectivity depends on submarine cables, and the Ministry of Digital Affairs maintains a public page listing cable faults one by one, with fault location, alternative routing, and estimated repair date.&lt;sup id=&#34;fnref:7&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:7&#34;&gt;7&lt;/a&gt;&lt;/sup&gt; In the update dated 28 July 2026, four cables were in a fault state, the most recent having occurred on 14 July with repair estimated for 14 August, the same week as the drill. To see where those cables actually run, open the &lt;a href=&#34;../../../../../games/tor-network/play/index.html?lang=en&#34;&gt;Tor Relay Globe&lt;/a&gt;, which plots 228 submarine cable segments along with the fault status around Taiwan.&lt;/p&gt; &lt;p&gt;A real incident is on a very different scale from the drill. The drill throttles for 30 minutes, covers fourteen counties in total, and leaves voice and SMS intact. A cable break can last weeks and affect connectivity for a whole region. The drill exists to verify fallback mechanisms and public preparedness, not to reproduce an incident.&lt;/p&gt; &lt;/details&gt; &lt;h2 id=&#34;What-to-do-on-13-August&#34;&gt;What to do on 13 August&lt;a class=&#34;headerlink&#34; href=&#34;#What-to-do-on-13-August&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;All times are Taipei time (UTC+8), with UTC in the tables. The drill window is &lt;strong&gt;14:30–15:00 (06:30–07:00 UTC)&lt;/strong&gt;.&lt;/p&gt; &lt;h3 id=&#34;Before-the-day&#34;&gt;Before the day&lt;a class=&#34;headerlink&#34; href=&#34;#Before-the-day&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;Install &lt;a href=&#34;https://ooni.org/install/&#34; target=&#34;_blank&#34;&gt;OONI Probe&lt;/a&gt;: free and open source, on the App Store, Google Play, and F-Droid. It is built by OONI to turn network interference and connection quality into verifiable public data (&lt;a href=&#34;https://ooni.org/about/&#34; target=&#34;_blank&#34;&gt;more about the project&lt;/a&gt;). First launch runs through an onboarding flow, so installing on the day itself is cutting it too fine. Run it once after installing to confirm it completes normally.&lt;/p&gt; &lt;p&gt;Then set an alarm for &lt;code&gt;14:35&lt;/code&gt;, the run that matters most, and add &lt;code&gt;14:15&lt;/code&gt; and &lt;code&gt;15:10&lt;/code&gt; if you can. The real obstacle is remembering mid-afternoon, not the tapping. Missing it entirely is fine too: take the &lt;code&gt;15:10&lt;/code&gt; run instead, and a single measurement is still worth submitting.&lt;/p&gt; &lt;h3 id=&#34;Step-one-turn-Wi-Fi-and-any-VPN-off-and-use-mobile-data&#34;&gt;Step one, turn Wi-Fi and any VPN off and use mobile data&lt;a class=&#34;headerlink&#34; href=&#34;#Step-one-turn-Wi-Fi-and-any-VPN-off-and-use-mobile-data&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;Wi-Fi served by a fixed line is unaffected by the drill, so a measurement taken over that kind of Wi-Fi contributes nothing. Phones routinely reconnect to office or home Wi-Fi on their own, so confirm you are on mobile data before starting. A hotspot shared from another phone runs over mobile underneath, but OONI still records the network type as Wi-Fi, so avoid that too.&lt;/p&gt; &lt;p&gt;Turn off both VPNs and Tailscale. A VPN routes traffic elsewhere, so the test measures the provider&#39;s link and records their ASN instead of your carrier&#39;s. Tailscale runs through the system VPN mechanism on iOS and Android even without an exit node, so OONI Probe records the network type as &lt;code&gt;vpn&lt;/code&gt; rather than &lt;code&gt;mobile&lt;/code&gt;, and the measurement can no longer be identified as coming from a mobile network. The app raises a warning when it detects a VPN, so switch it off before running if you see one. Remember to turn Tailscale back on afterwards, which is easy to forget if you rely on it to reach a work network.&lt;/p&gt; &lt;p&gt;After a run completes, the results page shows the network name and ASN (the global number for an autonomous network, held by carriers, companies, and universities alike), which confirms the measurement ran on mobile and on your own carrier.&lt;/p&gt; &lt;div class=&#34;admonition warning&#34;&gt; &lt;p class=&#34;admonition-title&#34;&gt;Check your mobile data allowance first&lt;/p&gt; &lt;p&gt;The &lt;code&gt;ndt&lt;/code&gt; test inside the Performance group measures throughput, so it deliberately saturates whatever bandwidth is available. The app states an estimate before you start, currently 5 to 200 MB and about 1 minute 30 seconds, with the actual figure scaling with connection speed. The run during the throttle costs least, because bandwidth is already constrained. Both 14:15 and 15:10 run at normal speed and will land at the top of that estimate.&lt;/p&gt; &lt;p&gt;On a metered plan, run the one during the throttle and pick either 14:15 or 15:10 as the comparison; two runs are enough to compare.&lt;/p&gt; &lt;/div&gt; &lt;h3 id=&#34;Step-two-run-the-built-in-Performance-tests&#34;&gt;Step two, run the built-in Performance tests&lt;a class=&#34;headerlink&#34; href=&#34;#Step-two-run-the-built-in-Performance-tests&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;Open the app, tap Tests, choose Performance, tick the tests you want, then tap run. The Performance group contains &lt;code&gt;ndt&lt;/code&gt; (connection speed) and &lt;code&gt;dash&lt;/code&gt; (which simulates adaptive video streaming and estimates the achievable bitrate), which are the two tests this needs, and it is available on both Android and iOS.&lt;/p&gt; &lt;figure&gt; &lt;img class=&#34;brand-frame&#34; src=&#34;https://assets.anoni.net/blog/ooni-performance.png&#34; alt=&#34;OONI Probe&#39;s Performance screen, showing an estimate of 5 to 200 MB and about 1 minute 30 seconds, the run button, and the previous test result&#34; style=&#34;width:50%&#34;&gt; &lt;/figure&gt; &lt;h3 id=&#34;Step-three-run-at-least-once-between-1435-and-1455&#34;&gt;Step three, run at least once between 14:35 and 14:55&lt;a class=&#34;headerlink&#34; href=&#34;#Step-three-run-at-least-once-between-1435-and-1455&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;The run taken during the throttle matters most. The drill starts at 14:30 and ends at 15:00, and leaving five minutes at each end avoids the ramp-up and recovery transitions, so any start between 14:35 and 14:55 works. &lt;code&gt;ndt&lt;/code&gt; takes about 1 minute 30 seconds, so starting as late as 14:55 still finishes before the window closes.&lt;/p&gt; &lt;p&gt;A single run is worth submitting on its own, since it compares against other participants and against the same hour the day before. Add the other two when time allows, because a single phone&#39;s own before-and-after is the cleanest comparison.&lt;/p&gt; &lt;table&gt; &lt;thead&gt; &lt;tr&gt; &lt;th&gt;Taipei (UTC+8)&lt;/th&gt; &lt;th&gt;UTC&lt;/th&gt; &lt;th&gt;Purpose&lt;/th&gt; &lt;th&gt;Priority&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;14:35&lt;/code&gt; to &lt;code&gt;14:55&lt;/code&gt;&lt;/td&gt; &lt;td&gt;&lt;code&gt;06:35&lt;/code&gt; to &lt;code&gt;06:55&lt;/code&gt;&lt;/td&gt; &lt;td&gt;during the throttle&lt;/td&gt; &lt;td&gt;essential&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;14:15&lt;/code&gt;&lt;/td&gt; &lt;td&gt;&lt;code&gt;06:15&lt;/code&gt;&lt;/td&gt; &lt;td&gt;reference point before the throttle&lt;/td&gt; &lt;td&gt;if you can&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;15:10&lt;/code&gt;&lt;/td&gt; &lt;td&gt;&lt;code&gt;07:10&lt;/code&gt;&lt;/td&gt; &lt;td&gt;after recovery&lt;/td&gt; &lt;td&gt;if you can&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt;What matters most is using the same handset and the same subscription for all three, and completing every run on mobile data. Staying in one place makes the results easier to compare, but moving between runs does not disqualify anything, as long as the phone has not slipped back onto Wi-Fi.&lt;/p&gt; &lt;p&gt;If you can spare one more, run the Performance card at &lt;code&gt;14:35&lt;/code&gt; on Wednesday 12 August. One extra measurement gives the following day&#39;s comparison a same-time reference at no additional effort.&lt;/p&gt; &lt;div class=&#34;admonition note&#34;&gt; &lt;p class=&#34;admonition-title&#34;&gt;Reading this after 14:30&lt;/p&gt; &lt;p&gt;Run it straight away if it is still before 14:55, or take 15:10 if that window has passed. A single measurement is still worth submitting.&lt;/p&gt; &lt;/div&gt; &lt;div class=&#34;admonition note&#34;&gt; &lt;p class=&#34;admonition-title&#34;&gt;Upload failures during the throttle are expected&lt;/p&gt; &lt;p&gt;Results have to be uploaded, and bandwidth is deliberately constrained during the window, so the upload may stall or fail. There is no need to run the test again. OONI Probe queues results and submits them once the network recovers.&lt;/p&gt; &lt;/div&gt; &lt;p&gt;If you want to contribute more, add a run of the Circumvention group during the throttle. It includes Tor and Psiphon connectivity tests, which show whether the throttle reaches circumvention tools. That group does perform blocking determination, so connection failures caused by the throttle will be recorded as anomalies with bandwidth rather than censorship behind them, and the community write-up will say so explicitly.&lt;/p&gt; &lt;h2 id=&#34;The-privacy-trade-off-before-you-tap-run&#34;&gt;The privacy trade-off, before you tap run&lt;a class=&#34;headerlink&#34; href=&#34;#The-privacy-trade-off-before-you-tap-run&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;The short version: the performance tests leave your current public IP in M-Lab&#39;s public dataset, while mobile IP addresses are dynamic and tied to no account, which makes linking a record to a person difficult in practice. If you would rather not leave that record, run the Websites group (&lt;code&gt;web_connectivity&lt;/code&gt;) instead, which does not involve M-Lab. The full explanation follows.&lt;/p&gt; &lt;p&gt;Two separate databases are involved. OONI&#39;s own published measurements are all public, and they include the ASN you are on and a timestamp but not your personal IP address. The &lt;code&gt;ndt&lt;/code&gt; test in the Performance group additionally sends data to &lt;a href=&#34;https://www.measurementlab.net/&#34; target=&#34;_blank&#34;&gt;M-Lab&lt;/a&gt;, a different organisation with a different dataset and different rules.&lt;/p&gt; &lt;p&gt;M-Lab&#39;s &lt;a href=&#34;https://www.measurementlab.net/privacy/&#34; target=&#34;_blank&#34;&gt;privacy policy&lt;/a&gt; states that test data is made public, that the disclosed data includes your IP address along with date and time, and that M-Lab retains collected data indefinitely for longitudinal study, without anonymising the public dataset. The erasure route the policy offers is framed around GDPR and LGPD, aimed primarily at data subjects in the EU and Brazil. M-Lab states the policy applies to users in all regions, but the text does not address standing for requests from third jurisdictions such as Taiwan, so whether such a request would be honoured in practice is unclear. The app&#39;s own Performance screen carries a matching disclaimer, noting that these tests run through third-party servers and that your IP address cannot be guaranteed to stay uncollected.&lt;/p&gt; &lt;p&gt;Running &lt;code&gt;ndt&lt;/code&gt; therefore writes your current public IP address into a public, long-retained dataset. M-Lab does not authenticate users, does not keep per-user test histories, and mobile IP addresses are typically dynamic, so a third-party researcher or ordinary querier has a hard time relating a single IP back to an individual. That covers the M-Lab and OONI side of the question. Your own carrier can already map connection records to your subscription and IP, a record that exists regardless of whether you measure and that taking part does not add to. Whether to leave that record is your decision.&lt;/p&gt; &lt;h2 id=&#34;During-the-central-Taiwan-drill-mobile-networks-recorded-no-performance-measurement&#34;&gt;During the central Taiwan drill, mobile networks recorded no performance measurement&lt;a class=&#34;headerlink&#34; href=&#34;#During-the-central-Taiwan-drill-mobile-networks-recorded-no-performance-measurement&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;The same throttle ran in seven central counties on 10 August, 14:30 to 15:00 Taipei time (&lt;code&gt;06:30&lt;/code&gt;–&lt;code&gt;07:00&lt;/code&gt; UTC). After it ended, we queried OONI&#39;s public database for what Taiwan recorded during that window.&lt;/p&gt; &lt;table&gt; &lt;thead&gt; &lt;tr&gt; &lt;th&gt;Test&lt;/th&gt; &lt;th&gt;Measurements, whole country&lt;/th&gt; &lt;th&gt;Network&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;ndt&lt;/code&gt; (connection speed)&lt;/td&gt; &lt;td&gt;1&lt;/td&gt; &lt;td&gt;&lt;code&gt;AS131584&lt;/code&gt; Taiwan Intelligent Fiber Optic Network, fixed line&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;dash&lt;/code&gt; (streaming bitrate)&lt;/td&gt; &lt;td&gt;1&lt;/td&gt; &lt;td&gt;same fixed-line ASN&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;web_connectivity&lt;/code&gt; (site reachability)&lt;/td&gt; &lt;td&gt;803&lt;/td&gt; &lt;td&gt;almost entirely fixed line, 593 of them HiNet&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt;Chunghwa Telecom Mobile (&lt;code&gt;AS17421&lt;/code&gt;) recorded zero. FarEasTone (&lt;code&gt;AS9674&lt;/code&gt;) recorded zero.&lt;/p&gt; &lt;p&gt;The single speed measurement ran over fixed fibre, and that network was not throttled. Taiwan produced 902 OONI observations in total during those thirty minutes, and not one of them was a performance measurement on a mobile network. The exercise runs region by region in the order south, central, offshore islands, east, north, and the northern drill is the last one,&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:3&#34;&gt;3&lt;/a&gt;&lt;/sup&gt; so a throttle under these conditions will not come round again until next year.&lt;/p&gt; &lt;h2 id=&#34;Taiwans-OONI-coverage-is-393-one-ISP&#34;&gt;Taiwan&#39;s OONI coverage is 39.3% one ISP&lt;a class=&#34;headerlink&#34; href=&#34;#Taiwans-OONI-coverage-is-393-one-ISP&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;The central Taiwan result reflects the long-running distribution of OONI data in Taiwan. Between 12 July and 11 August 2026 the country produced 645,039 &lt;code&gt;web_connectivity&lt;/code&gt; measurements across 25 ASNs:&lt;/p&gt; &lt;table&gt; &lt;thead&gt; &lt;tr&gt; &lt;th&gt;Network&lt;/th&gt; &lt;th&gt;Measurements, 30 days&lt;/th&gt; &lt;th&gt;Share&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;AS3462&lt;/code&gt; HiNet&lt;/td&gt; &lt;td&gt;253,546&lt;/td&gt; &lt;td&gt;39.3%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;AS131584&lt;/code&gt; Taiwan Intelligent Fiber Optic Network&lt;/td&gt; &lt;td&gt;191,257&lt;/td&gt; &lt;td&gt;29.7%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;All three mobile carriers&lt;/td&gt; &lt;td&gt;23,010&lt;/td&gt; &lt;td&gt;3.6%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;　└ &lt;code&gt;AS24158&lt;/code&gt; Taiwan Mobile&lt;/td&gt; &lt;td&gt;20,099&lt;/td&gt; &lt;td&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;　└ &lt;code&gt;AS17421&lt;/code&gt; Chunghwa Telecom Mobile&lt;/td&gt; &lt;td&gt;2,342&lt;/td&gt; &lt;td&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;　└ &lt;code&gt;AS9674&lt;/code&gt; FarEasTone&lt;/td&gt; &lt;td&gt;569&lt;/td&gt; &lt;td&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt;The rest is also mostly fixed line: StarVerse and DaDa Broadband each contribute tens of thousands, alongside campus networks at Fu Jen Catholic University, TANet (Taiwan Academic Network, the research and education backbone linking universities), and National Taiwan University.&lt;/p&gt; &lt;p&gt;For the performance tests this drill calls for, the totals are far smaller. The same period produced only 1,008 &lt;code&gt;ndt&lt;/code&gt; measurements nationwide. Mobile appears to account for more than half at 548, but 528 of those come from Taiwan Mobile alone, against 16 for Chunghwa Telecom Mobile and 4 for FarEasTone. The gap sits with those last two.&lt;/p&gt; &lt;p&gt;So any current statement about the state of Taiwan&#39;s network rests on data that mostly describes residential fixed broadband. &lt;a href=&#34;https://www.ncc.gov.tw/chncc/app/data/list?id=570&#34; target=&#34;_blank&#34;&gt;NCC figures&lt;/a&gt; put Taiwan at roughly 28.33 million mobile subscriptions in Q1 2026, and most people spend the larger part of their day online through a mobile network, which is close to absent from public measurement data.&lt;/p&gt; &lt;p&gt;All three are national carriers, yet their OONI measurement counts differ by one to two orders of magnitude. Taiwan Mobile has 528 performance measurements against 16 for Chunghwa Telecom Mobile, a gap that subscriber numbers plainly do not explain.&lt;/p&gt; &lt;p&gt;Two limits belong alongside those figures. The public aggregation API reports measurement counts and not device counts, so the table above cannot rule out a small number of devices measuring repeatedly. Separately, Taiwan Mobile operates both mobile and fixed-line services, and so does Chunghwa Telecom, so a single measurement tagged &lt;code&gt;AS24158&lt;/code&gt; cannot be sorted into phone or home router from the data alone.&lt;/p&gt; &lt;h2 id=&#34;Why-all-three-carriers-and-why-together&#34;&gt;Why all three carriers, and why together&lt;a class=&#34;headerlink&#34; href=&#34;#Why-all-three-carriers-and-why-together&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;That identification problem is exactly why the window matters. The drill has a published time range and a published list of counties, so within that window and that area, mobile-side measurements appearing on &lt;code&gt;AS24158&lt;/code&gt;, &lt;code&gt;AS17421&lt;/code&gt;, and &lt;code&gt;AS9674&lt;/code&gt; have a known situation to attach to, and the ASN becomes sufficient to attribute behaviour to a carrier. Measurements scattered across ordinary days have no such anchor.&lt;/p&gt; &lt;p&gt;To be clear about what this does and does not control: a shared window removes one variable, time. Location, cell load, handset model, and signal strength all remain. Thirty phones spread across seven counties still produce a set of points taken under different conditions, so conclusions have to stay coarse-grained, for example whether all three carriers show an observable drop in throughput and whether the magnitudes are broadly comparable. Any precise ranking of carriers goes beyond what this data can support.&lt;/p&gt; &lt;p&gt;Within those limits, three carriers facing one instruction in one thirty-minute window remains an unusual opportunity. One carrier measured densely still yields a single curve.&lt;/p&gt; &lt;h2 id=&#34;What-these-thirty-minutes-can-show&#34;&gt;What these thirty minutes can show&lt;a class=&#34;headerlink&#34; href=&#34;#What-these-thirty-minutes-can-show&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;The method the Executive Yuan describes, core-network rate limiting with a fixed download cap, is blanket bandwidth management, which &lt;code&gt;ndt&lt;/code&gt; should measure directly. The announcement separately lists affected service types (video streaming, video calls, mobile payments, cloud sync), which reads more like application-class handling, and the three carriers do not entirely agree on the affected scope either. Taiwan Mobile&#39;s notice lists messaging apps such as LINE, WhatsApp, and M+ among the services expected to see delays and instability,&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:4&#34;&gt;4&lt;/a&gt;&lt;/sup&gt; Chunghwa Telecom writes &#34;video, video calls, mobile internet access, and some IoT applications&#34;,&lt;sup id=&#34;fnref:5&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:5&#34;&gt;5&lt;/a&gt;&lt;/sup&gt; while the Executive Yuan&#39;s version has text transmission working normally.&lt;sup id=&#34;fnref2:1&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:1&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; If the limiting sits at the bandwidth layer, &lt;code&gt;ndt&lt;/code&gt; reflects it directly. If it leans towards application-class handling, &lt;code&gt;ndt&lt;/code&gt; traffic to M-Lab may not fall into a restricted class and could come back near normal speed. The measurements themselves will show which it is, and that is the most interesting question of the half hour.&lt;/p&gt; &lt;p&gt;Whether Tor and Psiphon can still establish connections under constrained bandwidth is a long-standing question for this community, and Thursday afternoon is a ready-made test bed. How quickly speeds return to normal once the throttle lifts is answered by the 15:10 measurement.&lt;/p&gt; &lt;p&gt;Once normal and throttled conditions are both on record, Taiwan&#39;s mobile networks gain a reference baseline, and a future unexpected degradation has something to be compared against. This value scales with participation: a few dozen phones can answer whether all three carriers show a clear drop, while discussing distributions and confidence intervals needs several hundred.&lt;/p&gt; &lt;p&gt;&lt;code&gt;ndt&lt;/code&gt; and &lt;code&gt;dash&lt;/code&gt; can only look at the high-bandwidth side, since neither test touches the voice, SMS, or cell broadcast that the announcements say keep working. Only one edge of the stated boundary is observable, and observing it is still worth doing. A community able to describe the state of its own networks is part of resilience.&lt;/p&gt; &lt;p&gt;One caveat for interpretation: &lt;code&gt;ndt&lt;/code&gt; measures against M-Lab servers, so the resulting figure includes both the last mile and the international path to the nearest M-Lab node, and a single measurement cannot separate the two. The officially stated 256KB serves here as the figure to expect, which makes the readings easier to place.&lt;/p&gt; &lt;p&gt;Participation density is a variable too. &lt;code&gt;ndt&lt;/code&gt; saturates the available bandwidth, so several phones on the same cell running it in the same minute compete for whatever throughput remains, and part of any low reading would come from participants crowding each other rather than from the carrier. At the scale this campaign targets, ten phones per carrier spread across seven counties, collisions are unlikely, but the number of concurrent participants should still be recorded alongside the results.&lt;/p&gt; &lt;h2 id=&#34;Join-in&#34;&gt;Join in&lt;a class=&#34;headerlink&#34; href=&#34;#Join-in&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Three things can be done right now: install &lt;a href=&#34;https://ooni.org/install/&#34; target=&#34;_blank&#34;&gt;OONI Probe&lt;/a&gt; and run it once, set an alarm for &lt;code&gt;14:35&lt;/code&gt;, and pass this on to anyone living or working in the seven northern counties. Chunghwa Telecom and FarEasTone subscribers are especially welcome, since the two carriers have 16 and 4 performance measurements respectively over the past 30 days. For FarEasTone, ten phones running three times each on Thursday afternoon would exceed its entire monthly total in one afternoon.&lt;/p&gt; &lt;p&gt;People outside the seven counties can measure at the same times too. Measurements from outside the throttled area act as a control group, helping separate changes caused by the drill from ordinary variation on the day.&lt;/p&gt; &lt;p&gt;Afterwards you can find your own measurement in &lt;a href=&#34;https://explorer.ooni.org/&#34; target=&#34;_blank&#34;&gt;OONI Explorer&lt;/a&gt; by ASN and time. The community will publish a follow-up post with the three time points broken down by carrier. Questions, or an interest in helping with the analysis, are welcome in the community &lt;a href=&#34;https://matrix.to/#/#community:im.anoni.net&#34; target=&#34;_blank&#34;&gt;Matrix Public Space&lt;/a&gt;.&lt;/p&gt; &lt;h2 id=&#34;Frequently-asked-questions&#34;&gt;Frequently asked questions&lt;a class=&#34;headerlink&#34; href=&#34;#Frequently-asked-questions&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;details class=&#34;question&#34;&gt; &lt;summary&gt;Why only the Performance tests, instead of running everything once?&lt;/summary&gt; &lt;p&gt;Every test group other than Performance performs blocking determination, and the throttle would make them produce false blocking signals.&lt;/p&gt; &lt;p&gt;Take &lt;code&gt;web_connectivity&lt;/code&gt;. It decides by comparing the phone&#39;s result against OONI&#39;s test helper server. The phone times out repeatedly under the rate limit while the test helper, sitting in a data centre, works fine, and that comparison gets labelled &lt;code&gt;tcp_ip&lt;/code&gt; or &lt;code&gt;http-failure&lt;/code&gt;, which is the signature of blocking. Several hundred people running blocking-determination tests under a rate limit at once amounts to injecting a batch of censorship-shaped records into Taiwan&#39;s public dataset.&lt;/p&gt; &lt;p&gt;The Performance group produces no false blocking signal. &lt;code&gt;ndt&lt;/code&gt; and &lt;code&gt;dash&lt;/code&gt; have no blocking determination implemented in the backend, and across roughly 200,000 measurements each worldwide over the last 90 days the anomaly count is 0 for both. They leave throughput numbers and nothing else.&lt;/p&gt; &lt;p&gt;Time does not allow it either. The Performance group takes about 1 minute 30 seconds and sits comfortably inside the window. The Websites group works through a URL list that takes several minutes even on a normal network, and under a rate limit it would very likely run past 15:00, mixing throttled and recovered conditions into one report.&lt;/p&gt; &lt;/details&gt; &lt;details class=&#34;question&#34;&gt; &lt;summary&gt;How much mobile data will this use?&lt;/summary&gt; &lt;p&gt;The app displays an estimate before running. Bandwidth is already constrained during the throttle, so that run costs least, while 14:15 and 15:10 run at normal speed and land at the top of the estimate. On a metered plan, prioritise the run during the throttle. The concrete figures are in the allowance warning above.&lt;/p&gt; &lt;/details&gt; &lt;details class=&#34;question&#34;&gt; &lt;summary&gt;My IP becomes public. How much of a risk is that really?&lt;/summary&gt; &lt;p&gt;The performance tests leave your IP in M-Lab&#39;s public dataset, retained long-term and not anonymised. Running the Websites tests instead avoids M-Lab entirely. The detail needed to judge the risk is in the privacy section above.&lt;/p&gt; &lt;/details&gt; &lt;details class=&#34;question&#34;&gt; &lt;summary&gt;I am not in the seven northern counties. Should I still measure?&lt;/summary&gt; &lt;p&gt;Yes, and it is useful. Data from outside the area serves as a control group for ruling out ordinary network variation on the day.&lt;/p&gt; &lt;/details&gt; &lt;details class=&#34;question&#34;&gt; &lt;summary&gt;I was in a meeting and missed 14:35 to 14:55. What now?&lt;/summary&gt; &lt;p&gt;Take 15:10 instead. Even a single late measurement compares against other participants and against the same hour the next day, so there is no need to complete all three for it to count.&lt;/p&gt; &lt;/details&gt; &lt;details class=&#34;question&#34;&gt; &lt;summary&gt;Is there any legal risk in taking part?&lt;/summary&gt; &lt;p&gt;The action is measuring your own connection speed on your own phone, no different from an ordinary speed-test app, and it neither interferes with the drill nor affects anyone else. OONI Probe is an open-source tool in long-standing use worldwide. If your organisation has its own compliance considerations, you can run the Websites tests only, or opt out.&lt;/p&gt; &lt;/details&gt; &lt;details class=&#34;question&#34;&gt; &lt;summary&gt;Is this an attempt to fact-check the official 256KB figure?&lt;/summary&gt; &lt;p&gt;The starting point is the rare set of observing conditions in these thirty minutes, with the time, the place, and the carriers all announced in advance. The official figure serves as the value to expect, so participants know roughly where the readings should land. The measurements describe network conditions, and the merits and necessity of the exercise are outside the scope.&lt;/p&gt; &lt;/details&gt; &lt;details class=&#34;question&#34;&gt; &lt;summary&gt;How do I confirm my measurement worked?&lt;/summary&gt; &lt;p&gt;The results page shows the network name and ASN once a run finishes, and it should read as your own carrier rather than Wi-Fi or a VPN. After submission you can also find your own record in &lt;a href=&#34;https://explorer.ooni.org/&#34; target=&#34;_blank&#34;&gt;OONI Explorer&lt;/a&gt;.&lt;/p&gt; &lt;/details&gt; &lt;details class=&#34;question&#34;&gt; &lt;summary&gt;Anything to watch for on a dual-SIM phone?&lt;/summary&gt; &lt;p&gt;Confirm which SIM mobile data is actually using. With two SIMs in one phone it is easy to assume you are testing one carrier while the data leaves through the other. The ASN on the results page is the final confirmation.&lt;/p&gt; &lt;/details&gt; &lt;h2 id=&#34;Data-and-assumptions&#34;&gt;Data and assumptions&lt;a class=&#34;headerlink&#34; href=&#34;#Data-and-assumptions&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;The OONI figures in this post fall into three groups, all queried on 2026-08-11. The endpoints and parameters are below, so readers can re-run them.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;The central Taiwan 30-minute window&lt;/strong&gt; (902, 803, 593, and the two performance measurements in the table) uses the measurements endpoint with &lt;code&gt;probe_cc=TW&lt;/code&gt;, &lt;code&gt;since=2026-08-10T06:30:00Z&lt;/code&gt;, &lt;code&gt;until=2026-08-10T07:00:00Z&lt;/code&gt;, querying &lt;code&gt;test_name&lt;/code&gt; as &lt;code&gt;ndt&lt;/code&gt;, &lt;code&gt;dash&lt;/code&gt;, and &lt;code&gt;web_connectivity&lt;/code&gt; in turn. Every returned record carries &lt;code&gt;probe_asn&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;The 30-day ASN distribution&lt;/strong&gt; (645,039, 253,546, 191,257, 23,010, and the three carrier breakdowns) uses the aggregation endpoint with &lt;code&gt;probe_cc=TW&lt;/code&gt;, &lt;code&gt;test_name=web_connectivity&lt;/code&gt;, &lt;code&gt;axis_x=probe_asn&lt;/code&gt;, &lt;code&gt;since=2026-07-12&lt;/code&gt;, &lt;code&gt;until=2026-08-12&lt;/code&gt;. The performance figures of 1,008, 548, 528, 16, and 4 use the same parameters with &lt;code&gt;test_name&lt;/code&gt; set to &lt;code&gt;ndt&lt;/code&gt;. The aggregation endpoint&#39;s &lt;code&gt;until&lt;/code&gt; is exclusive, so &lt;code&gt;until=2026-08-12&lt;/code&gt; covers through 11 August.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Zero anomalies on the performance tests&lt;/strong&gt; uses the aggregation endpoint with no &lt;code&gt;probe_cc&lt;/code&gt; for worldwide scope, &lt;code&gt;since=2026-05-13&lt;/code&gt;, &lt;code&gt;until=2026-08-12&lt;/code&gt;, and &lt;code&gt;test_name&lt;/code&gt; of &lt;code&gt;ndt&lt;/code&gt; and &lt;code&gt;dash&lt;/code&gt;. The same parameters with &lt;code&gt;tor&lt;/code&gt; and &lt;code&gt;web_connectivity&lt;/code&gt; give the contrast, at 13.95% and 8.05% anomalies respectively.&lt;/p&gt; &lt;p&gt;These counts keep accumulating, so a later query returns slightly higher values while the shape of the distribution stays stable.&lt;/p&gt; &lt;h2 id=&#34;Appendix-on-using-OONI-as-research-evidence&#34;&gt;Appendix on using OONI as research evidence&lt;a class=&#34;headerlink&#34; href=&#34;#Appendix-on-using-OONI-as-research-evidence&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;This campaign addresses one event, but the method is reusable. OONI data has four entry points, serving quite different purposes:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://explorer.ooni.org/&#34; target=&#34;_blank&#34;&gt;OONI Explorer&lt;/a&gt;&lt;/strong&gt;: a web interface for inspecting individual measurements and country or ASN trends, with no code required.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Aggregation API&lt;/strong&gt;: &lt;code&gt;https://api.ooni.org/api/v1/aggregation&lt;/code&gt;, no authentication and no key, sliceable by country, test, and ASN. The 30-day ASN distribution and shares in this post come from it. Its &lt;code&gt;since&lt;/code&gt; and &lt;code&gt;until&lt;/code&gt; accept dates only, and passing a time returns a &lt;code&gt;date_from_datetime_inexact&lt;/code&gt; error, so it suits day-level trends and coarser.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Measurements API&lt;/strong&gt;: &lt;code&gt;https://api.ooni.org/api/v1/measurements&lt;/code&gt;, also unauthenticated, accepts second-precision windows and returns individual records. The central Taiwan 30-minute table in this post comes from it.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;AWS S3 public dataset&lt;/strong&gt;: &lt;code&gt;ooni-data-eu-fra&lt;/code&gt;, raw per-measurement JSON, for research needing measurement internals or large-scale analysis. Raw data is uploaded in hourly batches, landing in S3 with a lag of roughly half an hour to an hour or two. Access paths and CSV output formats are documented in &lt;a href=&#34;../../../../community/asn-coverage-howto/&#34;&gt;ASN observation data extraction and analysis&lt;/a&gt;, along with the community-maintained tooling.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;For this drill specifically, a 30-minute window needs the measurements endpoint: &lt;code&gt;probe_cc=TW&lt;/code&gt;, &lt;code&gt;test_name=ndt&lt;/code&gt; (or &lt;code&gt;dash&lt;/code&gt;), &lt;code&gt;since=2026-08-13T06:00:00Z&lt;/code&gt;, &lt;code&gt;until=2026-08-13T08:00:00Z&lt;/code&gt;. Each returned record carries &lt;code&gt;probe_asn&lt;/code&gt;, which you then group into &lt;code&gt;24158&lt;/code&gt;, &lt;code&gt;17421&lt;/code&gt;, and &lt;code&gt;9674&lt;/code&gt;. All times are UTC, which is Taipei time minus eight hours. To work out which test answers a given question, the &lt;a href=&#34;../../../../community/ooni-nettests-map/&#34;&gt;OONI nettest reference&lt;/a&gt; lists what each test measures, its spec status, and whether Taiwan has data for it.&lt;/p&gt; &lt;p&gt;Two things to keep in mind when using this data.&lt;/p&gt; &lt;p&gt;The most common misreading is treating an anomaly as a block. OONI&#39;s &lt;code&gt;anomaly&lt;/code&gt; flag only means a test did not complete as expected, and the causes include censorship, an unstable network, a transient ISP fault, and bugs in the test itself, so treating anomaly rates as blocking rates produces false accusations. Over the 30 days from 2026-07-12 to 2026-08-12 the &lt;code&gt;tor&lt;/code&gt; test recorded &lt;code&gt;16.3%&lt;/code&gt; in Canada (n=14,042), &lt;code&gt;22.1%&lt;/code&gt; in Switzerland (n=3,231), and &lt;code&gt;20.1%&lt;/code&gt; in New Zealand (n=562), none of which censor. That window differs from the 90-day one used for &lt;code&gt;ndt&lt;/code&gt; and &lt;code&gt;dash&lt;/code&gt; in the previous paragraph, so re-running these figures needs the 30-day parameters. Mid-range values are noise, and only the extreme high end corresponds to reality.&lt;/p&gt; &lt;p&gt;That applies only to tests that perform blocking determination. The performance tests have almost no &lt;code&gt;anomaly&lt;/code&gt; logic implemented in the backend: worldwide over the last 90 days, 200,000 &lt;code&gt;ndt&lt;/code&gt; measurements and 198,000 &lt;code&gt;dash&lt;/code&gt; measurements both return an anomaly count of 0. To judge whether this drill throttled anything, read the throughput values directly rather than the &lt;code&gt;anomaly&lt;/code&gt; flag.&lt;/p&gt; &lt;p&gt;On licensing, OONI&#39;s published measurement data is CC BY-NC-SA 4.0, which prohibits commercial use and requires derivative works to be released under the same licence. Cite the source when quoting figures, and note that merging OONI data with other sources into a new dataset brings the whole result under that licence.&lt;/p&gt; &lt;p&gt;Exercise details follow the &lt;a href=&#34;https://www.ey.gov.tw/Page/9277F759E41CCD91/66c2bed1-6ca3-4c30-ba7c-4fa0f90e00ec&#34; target=&#34;_blank&#34;&gt;Executive Yuan announcement&lt;/a&gt; and each carrier&#39;s own notice. If the schedule changes, the official announcements take precedence.&lt;/p&gt; &lt;hr /&gt; &lt;p&gt;&lt;strong&gt;Sources&lt;/strong&gt;: OONI aggregation and measurements API (query parameters in the Data and assumptions section above, measurement data licensed &lt;a href=&#34;https://github.com/ooni/license/blob/master/data/LICENSE.md&#34; target=&#34;_blank&#34;&gt;CC BY-NC-SA 4.0&lt;/a&gt;); ASN names from &lt;a href=&#34;https://stat.ripe.net/&#34; target=&#34;_blank&#34;&gt;RIPEstat&lt;/a&gt;; M-Lab data handling from the &lt;a href=&#34;https://www.measurementlab.net/privacy/&#34; target=&#34;_blank&#34;&gt;M-Lab privacy policy&lt;/a&gt;. Official and media sources for the exercise are in the footnotes below.&lt;/p&gt; &lt;div class=&#34;footnote&#34;&gt; &lt;hr /&gt; &lt;ol&gt; &lt;li id=&#34;fn:1&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://www.ey.gov.tw/Page/9277F759E41CCD91/66c2bed1-6ca3-4c30-ba7c-4fa0f90e00ec&#34; target=&#34;_blank&#34;&gt;2026 Urban Resilience (Air Defence) Exercise: mobile network throttling drill&lt;/a&gt; - Executive Yuan&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:1&#34; title=&#34;Jump back to footnote 1 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref2:1&#34; title=&#34;Jump back to footnote 1 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref3:1&#34; title=&#34;Jump back to footnote 1 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref4:1&#34; title=&#34;Jump back to footnote 1 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:2&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://www.cna.com.tw/news/ahel/202607220157.aspx&#34; target=&#34;_blank&#34;&gt;NCC urges preparation for offline scenarios ahead of the resilience exercise throttle&lt;/a&gt; - CNA&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:2&#34; title=&#34;Jump back to footnote 2 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:3&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://adma.mnd.gov.tw/unit/100005/8182&#34; target=&#34;_blank&#34;&gt;2026 Urban Resilience (Air Defence) Exercise schedule&lt;/a&gt; - All-out Defense Mobilization Agency&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:3&#34; title=&#34;Jump back to footnote 3 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:4&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://www.taiwanmobile.com/csonline/service/ann/ann3_20260722_103509.html&#34; target=&#34;_blank&#34;&gt;Notice on mobile network throttling in central and northern Taiwan for the 2026 Urban Resilience air defence exercise&lt;/a&gt; - Taiwan Mobile&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:4&#34; title=&#34;Jump back to footnote 4 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:5&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://www.cht.com.tw/home/consumer/customer-service/announce/urban-resilience-exercise&#34; target=&#34;_blank&#34;&gt;2026 Urban Resilience (Air Defence) Exercise mobile network throttling drill&lt;/a&gt; - Chunghwa Telecom&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:5&#34; title=&#34;Jump back to footnote 5 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:6&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://www.accessnow.org/campaign/keepiton/&#34; target=&#34;_blank&#34;&gt;#KeepItOn&lt;/a&gt; - Access Now&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:6&#34; title=&#34;Jump back to footnote 6 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:7&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://moda.gov.tw/major-policies/subseacable/fault/1749&#34; target=&#34;_blank&#34;&gt;Submarine cable fault status&lt;/a&gt; - Ministry of Digital Affairs&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:7&#34; title=&#34;Jump back to footnote 7 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;/ol&gt; &lt;/div&gt;</description> <link>https://ipfs.anoni.net/en/blog/2026/08/ooni-mobile-throttle-drill/</link> <pubDate>Mon, 24 Aug 2026 17:55:52 +0000</pubDate> <source url="https://ipfs.anoni.net/en/feed_rss_updated.xml">anoni.net Docs — Sinophone Asia-Pacific Networked Freedom Observatory</source><guid isPermaLink="true">https://ipfs.anoni.net/en/blog/2026/08/ooni-mobile-throttle-drill/</guid> <enclosure url="https://ipfs.anoni.net/en/assets/images/ooni-run-v2.webp" type="image/webp" length="21650" /> </item> <item> <title>Learning from TPA&#39;s ADR model</title> <author>anoni.net Community</author> <category>Tor</category> <category>Translated Article</category> <category>Updates</category> <description>&lt;h1 id=&#34;Learning-from-TPAs-ADR-model&#34;&gt;Learning from TPA&#39;s ADR model&lt;a class=&#34;headerlink&#34; href=&#34;#Learning-from-TPAs-ADR-model&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt; &lt;p&gt;In February 2026, anarcat from the Tor system administration team (TPA) published a post titled &lt;a href=&#34;https://blog.torproject.org/tpa-adr/&#34; target=&#34;_blank&#34;&gt;\&#34;Keeping track of decisions using the ADR model\&#34;&lt;/a&gt;.&lt;br /&gt; After reading it, we felt it offered a very practical way to think about proposals, decision-making, and how to write things down so that people can actually find and understand them later.&lt;/p&gt; &lt;p&gt;This post is &lt;strong&gt;not&lt;/strong&gt; a translation of the original article. Instead, it is our own summary and reflection on:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;what problem TPA was trying to solve with ADRs,&lt;/li&gt; &lt;li&gt;what they actually changed in their process,&lt;/li&gt; &lt;li&gt;how other projects handle proposals and decisions, and&lt;/li&gt; &lt;li&gt;how this connects to the context we are familiar with.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&lt;img alt=&#34;Tor&#34; src=&#34;../../../assets/images/tor.webp&#34; /&gt;&lt;/p&gt; &lt;!-- more --&gt; &lt;h2 id=&#34;What-we-took-from-TPAs-ADR-post&#34;&gt;What we took from TPA’s ADR post&lt;a class=&#34;headerlink&#34; href=&#34;#What-we-took-from-TPAs-ADR-post&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;If you want the full story, read the original:&lt;br /&gt; &lt;a href=&#34;https://blog.torproject.org/tpa-adr/&#34; target=&#34;_blank&#34;&gt;Keeping track of decisions using the ADR model&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;For our purposes, the key takeaways are:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Short decision records over long RFCs&lt;/strong&gt; — keep it concise and digestible.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Decide who decides (RACI-like)&lt;/strong&gt; — make the decision maker and consulted/informed roles explicit.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Separate the record from the announcement&lt;/strong&gt; — write the ADR for durability, write comms for the audience.&lt;/li&gt; &lt;/ul&gt; &lt;h2 id=&#34;How-other-projects-handle-proposals-and-decisions&#34;&gt;How other projects handle proposals and decisions&lt;a class=&#34;headerlink&#34; href=&#34;#How-other-projects-handle-proposals-and-decisions&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;The TPA post also looks outward and compares different approaches in the wider open source ecosystem. Here is a short recap of some examples mentioned there, plus links if you want to dive deeper.&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;GOV.UK Design System&lt;/strong&gt; – Uses &lt;strong&gt;RFCs&lt;/strong&gt; for proposals and &lt;strong&gt;ADRs&lt;/strong&gt; to record final decisions. Proposals live in a public repo, such as &lt;a href=&#34;https://github.com/alphagov/govuk-design-system-architecture/blob/main/proposals/001-use-rfcs-and-adrs-to-discuss-proposals-and-record-decisions.md&#34; target=&#34;_blank&#34;&gt;\&#34;001-use-rfcs-and-adrs-to-discuss-proposals-and-record-decisions\&#34;&lt;/a&gt;. In other words: &lt;em&gt;RFCs for discussion, ADRs for the final record&lt;/em&gt;.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;Bitwarden&lt;/strong&gt; – Maintains ADR documentation (and an ADR index) at &lt;a href=&#34;https://contributing.bitwarden.com/architecture/adr/&#34; target=&#34;_blank&#34;&gt;contributing.bitwarden.com/architecture/adr/&lt;/a&gt;. ADRs are the primary way they record architectural decisions.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;GitLab&lt;/strong&gt; – In some subprojects (for example the GitLab Helm charts), existing architecture documents are gradually being rewritten into ADR form. This is a way to \&#34;ADR-ify\&#34; existing documentation.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;ADR community / MADR&lt;/strong&gt; – The site &lt;a href=&#34;https://adr.github.io/&#34; target=&#34;_blank&#34;&gt;adr.github.io&lt;/a&gt; provides the MADR (Markdown Architectural Decision Records) template and supporting tools that many projects use as a lightweight, general-purpose ADR format.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;Rust&lt;/strong&gt; – Uses &lt;a href=&#34;https://github.com/rust-lang/rfcs&#34; target=&#34;_blank&#34;&gt;RFCs&lt;/a&gt; to propose and discuss changes to the language and standard library. RFCs are numbered, publicly discussed, and archived as part of the language&#39;s evolution.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;Python&lt;/strong&gt; – Uses &lt;a href=&#34;https://peps.python.org/&#34; target=&#34;_blank&#34;&gt;PEPs&lt;/a&gt; (Python Enhancement Proposals) as the formal proposal and decision mechanism for language and standard library changes.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;Kubernetes&lt;/strong&gt; – Uses &lt;a href=&#34;https://github.com/kubernetes/enhancements&#34; target=&#34;_blank&#34;&gt;KEPs&lt;/a&gt; (Kubernetes Enhancement Proposals) for major features and architectural changes.&lt;/p&gt; &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;In short, there is no single universal pattern. Some ecosystems combine &lt;strong&gt;RFC-style proposals plus ADR-style records&lt;/strong&gt; (for example GOV.UK). Others use ADRs as their main internal mechanism (Bitwarden, now TPA). Large ecosystems often rely on numbered proposal documents (RFCs, PEPs, KEPs) with their own traditions and workflows.&lt;/p&gt; &lt;p&gt;What feels distinctive about TPA&#39;s approach is:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;the insistence on &lt;strong&gt;explicitly choosing the decision maker&lt;/strong&gt;, and&lt;/li&gt; &lt;li&gt;the strong emphasis on &lt;strong&gt;separating the decision record from outward-facing communication&lt;/strong&gt;.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Those two elements are transferable even if a project does not adopt ADRs in name.&lt;/p&gt; &lt;h2 id=&#34;Our-context-communities-and-projects&#34;&gt;Our context: communities and projects&lt;a class=&#34;headerlink&#34; href=&#34;#Our-context-communities-and-projects&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;In the communities and projects we are familiar with (for example, civic tech in Taiwan, government collaborations, and teams in local companies), there are already many forms of \&#34;proposal → discussion → consensus\&#34;. What is often missing is not process, but &lt;strong&gt;a stable, easy-to-find, and newcomer-friendly record of the decisions themselves&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;Some patterns we have seen:&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;Civic tech and community projects (for example g0v-related work)&lt;/strong&gt;&lt;br /&gt; Proposals and decisions are often documented through a mix of proposal documents, shared notes (such as HackMD), hackathon sessions, and online meetings. The &lt;a href=&#34;https://g0v.hackmd.io/@jothon/g0v-cowork-guideline/&#34; target=&#34;_blank&#34;&gt;g0v collaboration guide&lt;/a&gt; is a good example of how this culture is documented.&lt;br /&gt; Architecturally important decisions, however, may end up scattered across notes, issues, pull requests, slides, and chat logs. After some time, it becomes hard to reconstruct &lt;em&gt;why&lt;/em&gt; a system looks the way it does.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;Government and public-sector collaborations&lt;/strong&gt;&lt;br /&gt; These projects often produce specifications, system design documents, and final project reports. They look more like \&#34;one big document\&#34; created at certain milestones, rather than a continuous log of decisions over time.&lt;br /&gt; Many of these documents are not fully public, which makes it hard for external contributors to see the trade-offs and constraints behind the system.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;Open source projects run by local companies&lt;/strong&gt;&lt;br /&gt; Some teams maintain internal decision records or design docs for architecture changes, but these live in internal knowledge bases. The public repository only shows the code, not the decision history that shaped it.&lt;/p&gt; &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;In all of these cases, it&#39;s not that there is no decision-making. It&#39;s that the &lt;strong&gt;decision trail is fragmented and fragile&lt;/strong&gt;. Without a simple, repeatable format, it is easy for later contributors—or even future versions of the same team—to lose track of why certain paths were chosen.&lt;/p&gt; &lt;p&gt;This is where TPA&#39;s ADR model feels relevant to us:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Each important decision becomes a small, self-contained file that explains &lt;em&gt;why&lt;/em&gt;.&lt;/li&gt; &lt;li&gt;It avoids the pressure to produce massive, perfect design documents.&lt;/li&gt; &lt;li&gt;It is more durable and discoverable than leaving everything inside issues or chat logs.&lt;/li&gt; &lt;li&gt;Newcomers and external contributors can read ADRs to quickly understand:&lt;br /&gt; &lt;strong&gt;\&#34;This system looks like this today because of these past decisions.\&#34;&lt;/strong&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;We see ADRs as one possible bridge between community-style collaboration and more formal project documentation.&lt;/p&gt; &lt;h3 id=&#34;How-these-ideas-translate-here&#34;&gt;How these ideas translate here&lt;a class=&#34;headerlink&#34; href=&#34;#How-these-ideas-translate-here&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;Short records instead of big milestone docs&lt;/strong&gt;&lt;br /&gt; For government-style projects that generate large reports, consider adding a lightweight &lt;code&gt;adr/&lt;/code&gt; folder where each file captures a single decision and its reasoning.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;Decide who decides, even in volunteer settings&lt;/strong&gt;&lt;br /&gt; In civic tech teams with rotating contributors, explicitly naming a decision maker (timeboxed, or per module) reduces stalled discussions and clarifies accountability.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;Separate ADRs from announcements&lt;/strong&gt;&lt;br /&gt; Keep ADRs technical and durable; publish separate updates (blog posts, READMEs, release notes) tailored to the intended audience.&lt;/p&gt; &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;We suspect these tweaks are small enough to try without heavy process changes, and big enough to improve continuity.&lt;/p&gt; &lt;h2 id=&#34;Closing-thoughts&#34;&gt;Closing thoughts&lt;a class=&#34;headerlink&#34; href=&#34;#Closing-thoughts&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;TPA&#39;s post was the trigger; our focus is on what we can apply locally. We&#39;ll start by:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Piloting a minimal ADR template in selected repos (one file per decision).&lt;/li&gt; &lt;li&gt;Naming a decision maker per ADR (and listing consulted/informed).&lt;/li&gt; &lt;li&gt;Writing separate, audience-friendly updates when decisions affect users.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;If you already use ADRs—or if this motivates you to try them—we&#39;d love to hear your experiences, especially from Taiwan and neighboring communities. TPA is also collecting feedback; you can join their discussion: &lt;a href=&#34;https://gitlab.torproject.org/tpo/tpa/team/-/issues/41428&#34;&gt;https://gitlab.torproject.org/tpo/tpa/team/-/issues/41428&lt;/a&gt;.&lt;/p&gt;</description> <link>https://ipfs.anoni.net/en/blog/2026/03/tpa-adr/</link> <pubDate>Mon, 24 Aug 2026 17:55:52 +0000</pubDate> <source url="https://ipfs.anoni.net/en/feed_rss_updated.xml">anoni.net Docs — Sinophone Asia-Pacific Networked Freedom Observatory</source><guid isPermaLink="true">https://ipfs.anoni.net/en/blog/2026/03/tpa-adr/</guid> <enclosure url="https://ipfs.anoni.net/en/assets/images/tor.webp" type="image/webp" length="13344" /> </item> <item> <title>What is Differential Privacy?</title> <author>anoni.net Community</author> <category>Privacy</category> <category>Technology</category> <description>&lt;h1 id=&#34;What-is-Differential-Privacy&#34;&gt;What is Differential Privacy?&lt;a class=&#34;headerlink&#34; href=&#34;#What-is-Differential-Privacy&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt; &lt;div class=&#34;admonition info&#34;&gt; &lt;p&gt;This article is based on the original explainer by fria at Privacy Guides:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&#34;https://www.privacyguides.org/articles/2025/09/30/differential-privacy/&#34; target=&#34;_blank&#34;&gt;What is Differential Privacy?, fria, 2025-09-30&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;p&gt;Can you collect data from a large group of people while still protecting each individual&#39;s privacy? Differential privacy answers yes — with a mathematical proof to back it up. This article introduces the concept, traces its history from early anonymization failures to real-world deployments, and explores what it means for users and policymakers in Taiwan and the broader Chinese-speaking world.&lt;/p&gt; &lt;!-- more --&gt; &lt;div class=&#34;admonition info&#34;&gt; &lt;p class=&#34;admonition-title&#34;&gt;A note for anonymous network users&lt;/p&gt; &lt;p&gt;Differential privacy and tools like Tor address different layers of privacy. Tor protects your &lt;em&gt;transmission&lt;/em&gt; — it prevents an observer from knowing who you are communicating with. Differential privacy protects &lt;em&gt;data release&lt;/em&gt; — it ensures that published statistics cannot be reversed to identify individuals. They are complementary, not interchangeable, and together cover different parts of a complete threat model.&lt;/p&gt; &lt;p&gt;If you care about where your data ends up across services, platforms, or government datasets, differential privacy is worth understanding: even &#34;anonymized&#34; or &#34;aggregate&#34; data can be reversed through cross-referencing with other sources. This article helps you identify which privacy claims are verifiable — and which are marketing.&lt;/p&gt; &lt;/div&gt; &lt;h2 id=&#34;Summary-of-the-Original-Article&#34;&gt;Summary of the Original Article&lt;a class=&#34;headerlink&#34; href=&#34;#Summary-of-the-Original-Article&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;The Privacy Guides explainer walks through the full arc of privacy-preserving data collection:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;The core problem&lt;/strong&gt;: Even seemingly harmless data points can identify individuals. Latanya Sweeney showed in 2000 that 87% of Americans can be re-identified from just three fields: ZIP code, date of birth, and sex.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Failed approaches&lt;/strong&gt;: Before differential privacy, techniques like k-anonymity (every row has at least k-1 identical rows) and simple name-removal were considered sufficient. They weren&#39;t. The AOL search log release (2006) and the Strava heatmap incident (2018) are two famous examples of &#34;anonymized&#34; data that was trivially re-identified. In the Strava case, the platform did not deliberately expose anyone — aggregating millions of individual routes simply revealed patterns that only specific people would repeat. That is precisely the problem differential privacy is designed to prevent.&lt;/p&gt; &lt;p&gt;For k-anonymity specifically, researchers demonstrated the attack mechanism against the Harvard/MIT EdX dataset: they identified quasi-identifier combinations (course enrollment records) that resisted generalization, then matched them against publicly available LinkedIn profiles to narrow the candidate list to specific individuals. Cross-referencing with external data is k-anonymity&#39;s fundamental blind spot.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Randomized response&lt;/strong&gt; (Warner, 1965) was an early building block: introduce deliberate randomness into survey answers so individual responses can&#39;t be trusted, but aggregate statistics remain accurate.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Differential privacy&lt;/strong&gt; (Dwork et al., 2006) formalized this idea. It adds calibrated noise to data such that the output of any query looks essentially the same whether or not any particular individual&#39;s data was included. The privacy guarantee is controlled by ε (epsilon, the &#34;privacy budget&#34;): smaller ε means stronger privacy but less accurate results.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Local vs. Central DP&lt;/strong&gt;: Central DP adds noise after data is collected, requiring trust in the central authority. Local DP (as implemented by Google&#39;s RAPPOR in 2014) adds noise on the device before transmission, eliminating the need to trust any server.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Real deployments&lt;/strong&gt; include Google Chrome and Maps (RAPPOR), Apple&#39;s keyboard and emoji telemetry (Sketch/Matrix), Mozilla Firefox telemetry (Prio), and the U.S. 2020 Census Disclosure Avoidance System. Neither Google nor Apple publicly discloses the ε values used in their deployments. &#34;We use local differential privacy&#34; can be verified from published papers and code; &#34;our ε is strong enough to protect you&#34; remains a claim users cannot independently audit.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;OpenDP&lt;/strong&gt;, developed at Harvard, provides an open-source toolkit for applying differential privacy to arbitrary datasets.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Where research is heading&lt;/strong&gt;: Machine learning models trained on personal data can leak information about their training set through &lt;em&gt;membership inference attacks&lt;/em&gt; — an adversary probes the model to determine whether a specific record was included in the training data. Applying differential privacy during model training is the strongest known defense with formal guarantees. As AI systems increasingly rely on sensitive personal data, this application of differential privacy is growing in importance alongside the classical data-release use cases covered in the original article.&lt;/p&gt; &lt;p&gt;The full article is detailed, well-structured, and accessible to non-specialists — making it an excellent reference for anyone explaining privacy-enhancing technologies to a general audience.&lt;/p&gt; &lt;h2 id=&#34;Taiwan-Perspective&#34;&gt;Taiwan Perspective&lt;a class=&#34;headerlink&#34; href=&#34;#Taiwan-Perspective&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;h3 id=&#34;Government-Statistics-and-Open-Data&#34;&gt;Government Statistics and Open Data&lt;a class=&#34;headerlink&#34; href=&#34;#Government-Statistics-and-Open-Data&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;Taiwan&#39;s open data platform (data.gov.tw) and national statistics releases rarely disclose how data is de-identified, let alone whether mathematically rigorous techniques are used. The U.S. 2020 Census case — where adopting differential privacy sparked public debate over how to set ε and who gets to decide — is directly relevant to Taiwan. As Taiwan&#39;s government expands data-sharing programs (health data, transportation, smart city initiatives), civil society advocates can use differential privacy as a concrete benchmark: not just &#34;please anonymize it,&#34; but &#34;prove the privacy guarantee and publish the parameters.&#34;&lt;/p&gt; &lt;h3 id=&#34;Regulation-and-Industry&#34;&gt;Regulation and Industry&lt;a class=&#34;headerlink&#34; href=&#34;#Regulation-and-Industry&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;Taiwan&#39;s Personal Data Protection Act (個人資料保護法) requires de-identification but does not specify technical standards. The &#34;local noise, then upload&#34; model demonstrated by Google and Apple provides a template that Taiwanese regulators and companies could reference when drafting or evaluating compliance practices. Taiwanese mobile applications — many of which collect detailed behavioral telemetry — are rarely audited for whether their anonymization claims hold up to re-identification attacks of the kind described in this article.&lt;/p&gt; &lt;h3 id=&#34;Civil-Society-and-Health-Data&#34;&gt;Civil Society and Health Data&lt;a class=&#34;headerlink&#34; href=&#34;#Civil-Society-and-Health-Data&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;Taiwan&#39;s National Health Insurance database is one of the richest health datasets in the world, and its secondary use for research has sparked repeated controversies around privacy. Differential privacy offers a path to publishing aggregate statistics from such databases while providing provable individual-level protection. Advocates working on health data governance, academic data sharing, or smart city projects can use this article as accessible educational material to raise the technical standard of the conversation.&lt;/p&gt; &lt;h3 id=&#34;Online-Resources-from-Taiwan&#34;&gt;Online Resources from Taiwan&lt;a class=&#34;headerlink&#34; href=&#34;#Online-Resources-from-Taiwan&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;Taiwan&#39;s Ministry of Digital Affairs (數位發展部) has published a &lt;em&gt;Privacy Enhancing Technologies Application Guidelines&lt;/em&gt; (隱私強化技術應用指引) on HackMD, covering five key PETs including differential privacy, synthetic data, and federated learning. The document provides application scenarios, technical workflows, and case studies grounded in a Taiwan policy context — one of the few Chinese-language PET guides that connects regulatory needs to specific technical choices. It is a useful reference for advocates, researchers, and policymakers working in Taiwan or other Chinese-speaking contexts.&lt;/p&gt; &lt;p&gt;Reference: &lt;a href=&#34;https://hackmd.io/@petworks/rJ-UOh9Rn&#34; target=&#34;_blank&#34;&gt;Privacy Enhancing Technologies Application Guidelines&lt;/a&gt;&lt;/p&gt; &lt;h2 id=&#34;Perspective-for-Chinese-Speaking-Regions&#34;&gt;Perspective for Chinese-Speaking Regions&lt;a class=&#34;headerlink&#34; href=&#34;#Perspective-for-Chinese-Speaking-Regions&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;China&#39;s Personal Information Protection Law (PIPL, 个人信息保护法) defines anonymization as irreversible de-identification, but does not mandate specific technical approaches. The gap between regulatory language and cryptographically provable privacy guarantees is significant. Google RAPPOR and Apple&#39;s local differential privacy deployments demonstrate what &#34;verifiable privacy&#34; looks like in practice — a standard that Chinese regulators, researchers, and civil society organizations can point to when evaluating domestic data practices.&lt;/p&gt; &lt;p&gt;China&#39;s major platforms (WeChat, Alipay, Baidu) process enormous volumes of user data with limited public technical disclosure. The differential privacy framework, and tools like OpenDP, provide a common language for demanding transparency: not just &#34;we protect your data,&#34; but &#34;here is our ε, here is our model, here is what you can verify.&#34;&lt;/p&gt; &lt;h2 id=&#34;Further-Reading&#34;&gt;Further Reading&lt;a class=&#34;headerlink&#34; href=&#34;#Further-Reading&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&#34;https://www.privacyguides.org/articles/2025/09/30/differential-privacy/&#34; target=&#34;_blank&#34;&gt;Original article: What is Differential Privacy? (Privacy Guides)&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&#34;https://link.springer.com/chapter/10.1007/11681878_14&#34; target=&#34;_blank&#34;&gt;Calibrating Noise to Sensitivity in Private Data Analysis (Dwork et al., 2006)&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&#34;https://arxiv.org/abs/1407.6981&#34; target=&#34;_blank&#34;&gt;RAPPOR: Randomized Aggregatable Privacy-Preserving Ordinal Response (2014)&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&#34;https://machinelearning.apple.com/research/learning-with-privacy-at-scale&#34; target=&#34;_blank&#34;&gt;Learning with Privacy at Scale (Apple)&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&#34;https://opendp.org/&#34; target=&#34;_blank&#34;&gt;OpenDP&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Differential_privacy&#34; target=&#34;_blank&#34;&gt;Differential privacy (Wikipedia)&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&#34;https://hackmd.io/@petworks/rJ-UOh9Rn&#34; target=&#34;_blank&#34;&gt;Privacy Enhancing Technologies Application Guidelines (Ministry of Digital Affairs / petworks, HackMD)&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;</description> <link>https://ipfs.anoni.net/en/blog/2026/04/what-is-differential-privacy/</link> <pubDate>Sat, 22 Aug 2026 02:54:24 +0000</pubDate> <source url="https://ipfs.anoni.net/en/feed_rss_updated.xml">anoni.net Docs — Sinophone Asia-Pacific Networked Freedom Observatory</source><guid isPermaLink="true">https://ipfs.anoni.net/en/blog/2026/04/what-is-differential-privacy/</guid> <enclosure url="https://ipfs.anoni.net/en/assets/images/social/blog/2026/04/what-is-differential-privacy.png" type="image/png" length="40109" /> </item> <item> <title>What the Tor VPN security audit means for Taiwan&#39;s privacy community</title> <author>anoni.net Community</author> <category>Tor</category> <category>Translated Article</category> <category>Update</category> <description>&lt;h1 id=&#34;What-the-Tor-VPN-security-audit-means-for-Taiwans-privacy-community&#34;&gt;What the Tor VPN security audit means for Taiwan&#39;s privacy community&lt;a class=&#34;headerlink&#34; href=&#34;#What-the-Tor-VPN-security-audit-means-for-Taiwans-privacy-community&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt; &lt;div class=&#34;admonition info&#34;&gt; &lt;p&gt;This post is based on the Tor Project announcement:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&#34;https://blog.torproject.org/code-audit-tor-vpn/&#34; target=&#34;_blank&#34;&gt;Code audit for Tor VPN completed by Cure53 | April 15, 2026&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;p&gt;&lt;img alt=&#34;TorVPN Cure53 Audit&#34; src=&#34;https://forum.torproject.org/uploads/default/original/2X/4/4825413b93e0884f51aed631e4111ded9a117e60.jpeg&#34; style=&#34;border-radius: 10px;&#34; /&gt;&lt;/p&gt; &lt;p&gt;In June 2025, Cure53 completed a penetration test and source code review of &lt;strong&gt;TorVPN for Android&lt;/strong&gt; and its underlying Rust networking layer, Onionmasq. The Tor Project published the results in April 2026. The headline finding: Tor&#39;s core tunnel establishment and routing logic held up well. But there are specific technical issues worth understanding if you&#39;re recommending or deploying this tool in Taiwan&#39;s context.&lt;/p&gt; &lt;!-- more --&gt; &lt;h2 id=&#34;What-was-audited&#34;&gt;What was audited&lt;a class=&#34;headerlink&#34; href=&#34;#What-was-audited&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Two components were in scope:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;&lt;strong&gt;TorVPN for Android&lt;/strong&gt; — the mobile app that routes device traffic through Tor&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Onionmasq / Tunnel Interface for Arti&lt;/strong&gt; — the Rust-based layer handling TCP/UDP parsing, DNS resolution, and traffic forwarding into the Tor network&lt;/li&gt; &lt;/ol&gt; &lt;h2 id=&#34;What-the-audit-found&#34;&gt;What the audit found&lt;a class=&#34;headerlink&#34; href=&#34;#What-the-audit-found&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;The core conclusion is reassuring: &#34;Tor&#39;s core integration remains robust, with no fundamental issues in tunnel establishment or routing.&#34; The findings that do exist fall into four categories.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Input validation gaps&lt;/strong&gt; — incomplete validation in several places could cause unexpected behavior at edge cases.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;DNS handling weaknesses&lt;/strong&gt; — under specific and uncommon conditions, DNS resolution logic could trigger denial-of-service behavior. This is rare, but matters more in environments where DNS is already manipulated.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Cryptographic recommendations&lt;/strong&gt; — the audit flagged missing certificate pinning and opportunities to improve randomness quality. Both are defensive hardening suggestions rather than active vulnerabilities.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Mobile security gaps&lt;/strong&gt; — two standard Android concerns: plaintext configuration storage (configuration data stored unencrypted on the device) and absent root detection (no warning or mitigation when running on a rooted device).&lt;/p&gt; &lt;p&gt;All findings have been accepted into Tor Project&#39;s ongoing security improvement roadmap.&lt;/p&gt; &lt;p&gt;The full audit report is available here: &lt;a href=&#34;https://blog.torproject.org/code-audit-tor-vpn/torvpn_cure53_audit.pdf&#34; target=&#34;_blank&#34;&gt;torvpn_cure53_audit.pdf&lt;/a&gt;&lt;/p&gt; &lt;h2 id=&#34;Why-this-matters-specifically-in-Taiwan&#34;&gt;Why this matters specifically in Taiwan&lt;a class=&#34;headerlink&#34; href=&#34;#Why-this-matters-specifically-in-Taiwan&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;&lt;strong&gt;Independent audits are how trust is built, not assumed&lt;/strong&gt;: Taiwan has a technically engaged digital-rights and civic tech community — groups like g0v contributors, COSCUP participants, and digital journalists who recommend tools to people with real exposure. For those communities, &#34;Tor is secure&#34; is not a sufficient answer. A PDF with specific vulnerability IDs and a remediation roadmap is. This audit provides that foundation.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;DNS manipulation is not a hypothetical&lt;/strong&gt;: The DNS handling weakness identified in this audit is particularly worth noting in Taiwan&#39;s context. OONI measurement data from Taiwan shows that DNS interference does occur — not at the scale seen in heavily censored environments, but enough that understanding how a privacy tool behaves under DNS pressure has practical meaning.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Plaintext configuration storage is a legal and practical concern&lt;/strong&gt;: Taiwan&#39;s Personal Data Protection Act places obligations on how applications handle user data stored on devices. The audit finding that TorVPN stores configuration in plaintext isn&#39;t just a technical footnote — it&#39;s a compliance-adjacent concern worth factoring into deployment recommendations, especially for users in higher-risk scenarios like journalists or activists.&lt;/p&gt; &lt;div class=&#34;admonition info&#34;&gt; &lt;p class=&#34;admonition-title&#34;&gt;Source&lt;/p&gt; &lt;p&gt;Based on the official Tor Project post &lt;a href=&#34;https://blog.torproject.org/code-audit-tor-vpn/&#34; target=&#34;_blank&#34;&gt;Code audit for Tor VPN completed by Cure53&lt;/a&gt;.&lt;/p&gt; &lt;/div&gt;</description> <link>https://ipfs.anoni.net/en/blog/2026/04/2026-code-audit-for-tor-vpn-completed-by-cure53/</link> <pubDate>Sat, 22 Aug 2026 02:54:24 +0000</pubDate> <source url="https://ipfs.anoni.net/en/feed_rss_updated.xml">anoni.net Docs — Sinophone Asia-Pacific Networked Freedom Observatory</source><guid isPermaLink="true">https://ipfs.anoni.net/en/blog/2026/04/2026-code-audit-for-tor-vpn-completed-by-cure53/</guid> <enclosure url="https://forum.torproject.org/uploads/default/original/2X/4/4825413b93e0884f51aed631e4111ded9a117e60.jpeg" type="image/jpeg" length="48335" /> </item> <item> <title>CryptPad 2026.5.0: zh_Hant Lands as a Built-in Locale After Two and a Half Years Upstream</title> <author>anoni.net Community</author> <category>Community</category> <category>News</category> <description>&lt;h1 id=&#34;CryptPad-202650-zh_Hant-Lands-as-a-Built-in-Locale-After-Two-and-a-Half-Years-Upstream&#34;&gt;CryptPad 2026.5.0: zh_Hant Lands as a Built-in Locale After Two and a Half Years Upstream&lt;a class=&#34;headerlink&#34; href=&#34;#CryptPad-202650-zh_Hant-Lands-as-a-Built-in-Locale-After-Two-and-a-Half-Years-Upstream&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt; &lt;figure&gt; &lt;a href=&#34;https://assets.anoni.net/docs/cryptpad-drive-zh-hant.png&#34; target=&#34;_blank&#34;&gt; &lt;img src=&#34;https://assets.anoni.net/docs/cryptpad-drive-zh-hant.png&#34; alt=&#34;CryptPad Drive home in Traditional Chinese (zh_Hant). Left sidebar shows file categories; the +New button reveals Rich Text, Document, Sheet, Slides, Kanban, Whiteboard, Diagram, Forms, Calendar.&#34; title=&#34;cryptpad.anoni.net Drive home after switching to 中文(正體)&#34; class=&#34;brand-frame&#34;&gt; &lt;/a&gt; &lt;figcaption&gt;cryptpad.anoni.net Drive home after switching to 中文(正體). Every file category and app entry is localised.&lt;/figcaption&gt; &lt;/figure&gt; &lt;p&gt;For people who want a collaboration tool that does not silently keep a readable copy of their work on the server, the practical options are short. Google Docs, Notion, Microsoft 365 are excellent products, but every paragraph and every revision sits on those vendors’ servers in a form they can read. From there, algorithms, ads, training corpora, and government data requests each have their own path in.&lt;/p&gt; &lt;p&gt;That difference is exactly what matters when a journalist drafts a story that cannot leak, when a campaigner negotiates a strategy that cannot be wiretapped, when an NGO records distress reports from vulnerable users, or when a researcher works on a politically sensitive topic. Whether a first draft can be safely written at all often turns on that one architectural choice.&lt;/p&gt; &lt;p&gt;&lt;a href=&#34;https://cryptpad.org/&#34; target=&#34;_blank&#34;&gt;CryptPad&lt;/a&gt; is one of the few collaboration suites where the server genuinely cannot read what you wrote. Content is encrypted in your browser, the server only ever sees ciphertext, and yet a single interface covers most of what people normally reach for in Google Docs, Sheets, Slides, kanban boards, whiteboards, forms, and calendars.&lt;/p&gt; &lt;p&gt;Until recently the suite had one obvious gap for one large group of users: the UI shipped in English and Simplified Chinese only, with Traditional Chinese (zh_Hant) missing. From the first upstream PR opened at the end of 2023, through two and a half years of patient string-by-string work in Weblate, to the &lt;a href=&#34;https://github.com/cryptpad/cryptpad/releases/tag/2026.5.0&#34; target=&#34;_blank&#34;&gt;CryptPad 2026.5.0 “🌷 Spring release”&lt;/a&gt; on 2026/05/13, zh_Hant is now a built-in locale. The community-hosted &lt;a href=&#34;https://cryptpad.anoni.net/&#34; target=&#34;_blank&#34;&gt;cryptpad.anoni.net&lt;/a&gt; has been upgraded. &lt;strong&gt;Open cryptpad.anoni.net today and the Drive, the document editors, and the share-permission dialog are all in Traditional Chinese. Readers in Taiwan, Hong Kong, Macau, and across the Chinese-reading diaspora can use it without first learning an English menu.&lt;/strong&gt;&lt;/p&gt; &lt;!-- more --&gt; &lt;h2 id=&#34;What-CryptPad-is&#34;&gt;What CryptPad is&lt;a class=&#34;headerlink&#34; href=&#34;#What-CryptPad-is&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;CryptPad is developed by &lt;a href=&#34;https://xwiki.com/&#34; target=&#34;_blank&#34;&gt;XWiki SAS&lt;/a&gt; in France under the &lt;a href=&#34;https://github.com/cryptpad/cryptpad/blob/main/LICENSE&#34; target=&#34;_blank&#34;&gt;AGPLv3&lt;/a&gt; licence and is best described as an &lt;strong&gt;end-to-end encrypted (E2EE) online office and collaboration suite&lt;/strong&gt;. One account gets you:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Rich Text&lt;/strong&gt;: a Google-Docs-style WYSIWYG editor&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Document&lt;/strong&gt;: advanced word processing via OnlyOffice (.docx compatible)&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Sheets&lt;/strong&gt;: spreadsheets via OnlyOffice (.xlsx compatible)&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Presentation&lt;/strong&gt;: slides, with both Markdown Slides and OnlyOffice modes&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Kanban&lt;/strong&gt;: project boards&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Whiteboard&lt;/strong&gt;: free-form whiteboarding&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Diagram&lt;/strong&gt;: diagramming via &lt;a href=&#34;https://www.drawio.com/&#34; target=&#34;_blank&#34;&gt;Drawio&lt;/a&gt; (upgraded to Drawio 29.6.7 in 2026.5.0)&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Forms&lt;/strong&gt;: surveys and structured data collection&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Calendar&lt;/strong&gt;: shared calendars&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Code/Markdown&lt;/strong&gt;: code and Markdown editors&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Drive&lt;/strong&gt;: cloud storage that ties all of the above together&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;The core property is that &lt;strong&gt;all content is encrypted in your browser before it ever reaches the server&lt;/strong&gt;. The server stores ciphertext; neither CryptPad’s operators nor the anoni.net maintainers hold the keys. This is what is meant by &lt;em&gt;zero-knowledge&lt;/em&gt;: even if we wanted to read your pads, we couldn’t.&lt;/p&gt; &lt;figure&gt; &lt;a href=&#34;https://assets.anoni.net/docs/cryptpad-richtext-collab.png&#34; target=&#34;_blank&#34;&gt; &lt;img src=&#34;https://assets.anoni.net/docs/cryptpad-richtext-collab.png&#34; alt=&#34;CryptPad Rich Text editor with multi-user collaboration: collaborator avatars and live cursors in the top right, formatting toolbar on the right.&#34; title=&#34;Rich Text app, multi-user collaboration&#34; class=&#34;brand-frame&#34;&gt; &lt;/a&gt; &lt;figcaption&gt;The Rich Text app in multi-user mode. Every edit is encrypted in the browser; the server only ever sees ciphertext.&lt;/figcaption&gt; &lt;/figure&gt; &lt;h2 id=&#34;Why-the-community-self-hosts-CryptPad&#34;&gt;Why the community self-hosts CryptPad&lt;a class=&#34;headerlink&#34; href=&#34;#Why-the-community-self-hosts-CryptPad&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;We self-host more than CryptPad. There is also &lt;a href=&#34;https://pad.anoni.net/&#34; target=&#34;_blank&#34;&gt;Etherpad&lt;/a&gt; for quick shared notes and Matrix for live discussion (the &lt;a href=&#34;../../../../community/&#34;&gt;Community&lt;/a&gt; page covers how the three fit together). CryptPad is what we reach for whenever a document needs &lt;strong&gt;long-term storage, end-to-end encryption, and full multi-user collaboration in the same place&lt;/strong&gt;. Spending two and a half years on the Traditional Chinese translation made sense for several reasons.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;E2EE and zero-knowledge by design&lt;/strong&gt;: Community discussions routinely touch threat models, whistleblower-protection notes, and the back-and-forth of pushing Tor relays onto university campuses. Putting those in Google Docs or Notion is functionally identical to handing every unpublished strategy to a third-party platform and its advertising partners. CryptPad removes “the operator can read your content” at the architectural level — a guarantee that is far stronger than an SLA promise.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Feature-complete enough to replace mainstream cloud suites&lt;/strong&gt;: Etherpad is fine for quick notes but does not cover sheets, slides, or kanban. CryptPad covers most of what people use Google Workspace for, and every pad inherits the same encryption and permission model. There is no need to keep switching tools because “this one needs to stay private and that one doesn’t”.&lt;/p&gt; &lt;figure&gt; &lt;a href=&#34;https://assets.anoni.net/docs/cryptpad-share-permission.png&#34; target=&#34;_blank&#34;&gt; &lt;img src=&#34;https://assets.anoni.net/docs/cryptpad-share-permission.png&#34; alt=&#34;CryptPad share dialog. View-only, Edit, and Embed permissions, with optional password and expiry.&#34; title=&#34;CryptPad share-permission dialog&#34; class=&#34;brand-frame&#34;&gt; &lt;/a&gt; &lt;figcaption&gt;Every pad uses the same encryption and permission model. Sharing supports view-only / edit / embed, with optional password and expiry.&lt;/figcaption&gt; &lt;/figure&gt; &lt;p&gt;&lt;strong&gt;AGPLv3 licence, public cryptographic protocol&lt;/strong&gt;: Any derived service has to remain open, so when we self-host we can audit the code top to bottom. The cryptographic protocol and data structures are also public — like Tor, Tails, and OONI, this is privacy that is verifiable rather than asserted.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Governance stays with maintainers and the community&lt;/strong&gt;: The same reasoning we wrote up in &lt;a href=&#34;../../02/2026-discord-matrix-statement/&#34;&gt;why we self-host Matrix&lt;/a&gt; applies here. Retention policy, registration policy, channel rules are decisions we make ourselves; they are predictable, accountable, and can move with the community’s needs.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Real European public-sector and civil-society deployments&lt;/strong&gt;: CryptPad is in use across multiple European government projects, NGOs, and research groups. Compliance, reliability, and long-term maintenance all have a track record. When we recommend it to more Chinese-reading users, we are not pointing them at a demo-grade toy.&lt;/p&gt; &lt;h2 id=&#34;Two-and-a-half-years-of-upstream-work-mapped-to-a-timeline&#34;&gt;Two and a half years of upstream work, mapped to a timeline&lt;a class=&#34;headerlink&#34; href=&#34;#Two-and-a-half-years-of-upstream-work-mapped-to-a-timeline&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;The CryptPad main application, the Accounts plugin, and the User Guide together contain over a thousand strings. Each one has to match the UI context where it appears, stay consistent across contexts (so that &lt;em&gt;Save&lt;/em&gt; and &lt;em&gt;Save As&lt;/em&gt; don’t drift into different verbs), and survive the constant trickle of new strings from active development. Every release means another pass over what changed.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;2023/12/05&lt;/strong&gt;: &lt;a href=&#34;https://github.com/cryptpad/cryptpad/pull/1329&#34; target=&#34;_blank&#34;&gt;PR #1329&lt;/a&gt; opened upstream. It corrected the language-menu labels — changing the &lt;code&gt;zh-Hans&lt;/code&gt; entry to “中文(簡體)” and &lt;code&gt;zh-Hant&lt;/code&gt; to “中文(正體)” — and used the description to ask CryptPad maintainers what process to follow to add a real zh_Hant translation, since at that point only &lt;code&gt;zh_Hans&lt;/code&gt; had any content and &lt;code&gt;zh_Hant&lt;/code&gt; was empty.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;2024–2025&lt;/strong&gt;: The CryptPad team opened zh_Hant translation spaces on &lt;a href=&#34;https://weblate.cryptpad.org/&#34; target=&#34;_blank&#34;&gt;Weblate&lt;/a&gt; across multiple sub-projects: the main &lt;a href=&#34;https://weblate.cryptpad.org/projects/cryptpad/app/zh_Hant/&#34; target=&#34;_blank&#34;&gt;App&lt;/a&gt;, the &lt;a href=&#34;https://weblate.cryptpad.org/projects/cryptpad/accounts-plugin/zh_Hant/&#34; target=&#34;_blank&#34;&gt;Accounts plugin&lt;/a&gt;, and the User Guide sections (Drive, FAQ, Application Document, Application General, Application Presentation, Share and Access, Collaboration, and more).&lt;/p&gt; &lt;p&gt;&lt;strong&gt;2026/03/13&lt;/strong&gt;: All of the above reached translation completion. The community filed &lt;a href=&#34;https://github.com/cryptpad/cryptpad/issues/2237&#34; target=&#34;_blank&#34;&gt;Issue #2237&lt;/a&gt; upstream to report the milestone and to ask CryptPad maintainers to enable &lt;code&gt;zh_Hant&lt;/code&gt; as a built-in selectable locale in the next release.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;2026/05/13&lt;/strong&gt;: CryptPad &lt;a href=&#34;https://github.com/cryptpad/cryptpad/releases/tag/2026.5.0&#34; target=&#34;_blank&#34;&gt;2026.5.0 “🌷 Spring release”&lt;/a&gt; shipped. The Improvements section of the release notes lists:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Enable zh-Hant/zh-Hans locales (#2237) and add alias system for locales &lt;a href=&#34;https://github.com/cryptpad/cryptpad/pull/2254&#34; target=&#34;_blank&#34;&gt;#2254&lt;/a&gt; by the anoni.net community&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;That single PR not only turned on &lt;code&gt;zh_Hant&lt;/code&gt; and &lt;code&gt;zh_Hans&lt;/code&gt; as official locales, but also added a locale-alias mechanism so that accounts still configured with &lt;code&gt;zh_CN&lt;/code&gt; or &lt;code&gt;zh_TW&lt;/code&gt; (the older codes) automatically fall back to the new &lt;code&gt;zh_Hans&lt;/code&gt; and &lt;code&gt;zh_Hant&lt;/code&gt;, instead of getting pushed back to English after the upgrade. Existing Simplified Chinese users see their UI carry on as Chinese without having to reset anything.&lt;/p&gt; &lt;h2 id=&#34;A-note-on-正體-vs-繁體--naming-the-script&#34;&gt;A note on 正體 vs 繁體 — naming the script&lt;a class=&#34;headerlink&#34; href=&#34;#A-note-on-正體-vs-繁體--naming-the-script&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;CryptPad’s language menu originally read “中文(繁體)” for the zh_Hant entry — &lt;em&gt;fántǐ&lt;/em&gt;, literally “complex form”. PR #1329 changed it to “中文(正體)” — &lt;em&gt;zhèngtǐ&lt;/em&gt;, roughly “proper” or “standard” form. The community prefers 正體 because 繁 (&lt;em&gt;complex&lt;/em&gt;) implies “more complex than Simplified”, whereas the script as used in Taiwan, Hong Kong, and Macau is simply the historically continuous form of written Chinese, with no “more elaborate than” relationship to anything.&lt;/p&gt; &lt;p&gt;Operating systems and most English-language writing still call it &lt;em&gt;Traditional Chinese&lt;/em&gt;, and we are not asking anyone to change that across the board. Where we are doing the translation work ourselves, we use the name we prefer. How a community names its own script is part of the localisation work.&lt;/p&gt; &lt;h2 id=&#34;Using-cryptpadanoninet-from-a-censored-or-restricted-network&#34;&gt;Using cryptpad.anoni.net from a censored or restricted network&lt;a class=&#34;headerlink&#34; href=&#34;#Using-cryptpadanoninet-from-a-censored-or-restricted-network&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;&lt;code&gt;cryptpad.anoni.net&lt;/code&gt; and &lt;code&gt;cryptpad.org&lt;/code&gt; are not specifically hosted to be reachable from inside heavily filtered networks. Readers connecting from mainland China, Iran, Russia, or similar environments may see unstable or blocked connections. Recommended approaches:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://www.torproject.org/download/&#34; target=&#34;_blank&#34;&gt;Tor Browser&lt;/a&gt;&lt;/strong&gt; reaches cryptpad.anoni.net over the Tor network, HTTPS by default. If the Tor network itself is blocked from your ISP, use &lt;a href=&#34;https://snowflake.torproject.org/&#34; target=&#34;_blank&#34;&gt;Snowflake&lt;/a&gt; or request &lt;a href=&#34;https://bridges.torproject.org/&#34; target=&#34;_blank&#34;&gt;obfs4 bridges&lt;/a&gt;.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;A VPN you trust&lt;/strong&gt;: The VPN operator can see your connection metadata, but CryptPad’s end-to-end encryption guarantees that no intermediary — VPN, ISP, or server operator — can read your content.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://tails.net/&#34; target=&#34;_blank&#34;&gt;Tails&lt;/a&gt;&lt;/strong&gt; boots an entire operating system that routes all traffic through Tor and leaves no trace on the host machine. A good fit for higher-sensitivity collaboration.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;CryptPad is E2EE regardless of how you connect; whether you reach it over Tor, a VPN, or direct, the server cannot read your content. The variable is &lt;strong&gt;whether you can reach&lt;/strong&gt; &lt;code&gt;cryptpad.anoni.net&lt;/code&gt; at all from your local network. For ongoing use in heavily restricted environments, Tor with Snowflake or Tails is the more reliable baseline.&lt;/p&gt; &lt;h2 id=&#34;Getting-started-on-cryptpadanoninet&#34;&gt;Getting started on cryptpad.anoni.net&lt;a class=&#34;headerlink&#34; href=&#34;#Getting-started-on-cryptpadanoninet&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;To start:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Entry point&lt;/strong&gt;: &lt;a href=&#34;https://cryptpad.anoni.net/&#34; target=&#34;_blank&#34;&gt;https://cryptpad.anoni.net/&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Account requests&lt;/strong&gt;: email &lt;a href=&#34;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#116;&amp;#111;&amp;#58;&amp;#119;&amp;#104;&amp;#105;&amp;#115;&amp;#112;&amp;#101;&amp;#114;&amp;#64;&amp;#97;&amp;#110;&amp;#111;&amp;#110;&amp;#105;&amp;#46;&amp;#110;&amp;#101;&amp;#116;&#34;&gt;&amp;#119;&amp;#104;&amp;#105;&amp;#115;&amp;#112;&amp;#101;&amp;#114;&amp;#64;&amp;#97;&amp;#110;&amp;#111;&amp;#110;&amp;#105;&amp;#46;&amp;#110;&amp;#101;&amp;#116;&lt;/a&gt; for a registration code. Default quota is 50 MB, adjustable later. Registration does not ask for an email address inside the system and does not bind to a real-name identity, matching the Matrix flow.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Switching locale&lt;/strong&gt;: after the upgrade, the top-right settings page offers “中文(正體)” and “中文(簡體)”. The query strings &lt;code&gt;?lang=zh_Hant&lt;/code&gt; or &lt;code&gt;?lang=zh_Hans&lt;/code&gt; also work.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Full tooling list&lt;/strong&gt;: see &lt;a href=&#34;../../../../community/&#34;&gt;Community&lt;/a&gt;.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;If you spot a typo, awkward wording, or a new string that hasn’t been translated yet, contributions are very welcome — head straight to the &lt;a href=&#34;https://weblate.cryptpad.org/projects/cryptpad/-/zh_Hant/&#34; target=&#34;_blank&#34;&gt;zh_Hant&lt;/a&gt; or &lt;a href=&#34;https://weblate.cryptpad.org/projects/cryptpad/-/zh_Hans/&#34; target=&#34;_blank&#34;&gt;zh_Hans&lt;/a&gt; project on Weblate, or email &lt;a href=&#34;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#116;&amp;#111;&amp;#58;&amp;#119;&amp;#104;&amp;#105;&amp;#115;&amp;#112;&amp;#101;&amp;#114;&amp;#64;&amp;#97;&amp;#110;&amp;#111;&amp;#110;&amp;#105;&amp;#46;&amp;#110;&amp;#101;&amp;#116;&#34;&gt;&amp;#119;&amp;#104;&amp;#105;&amp;#115;&amp;#112;&amp;#101;&amp;#114;&amp;#64;&amp;#97;&amp;#110;&amp;#111;&amp;#110;&amp;#105;&amp;#46;&amp;#110;&amp;#101;&amp;#116;&lt;/a&gt; to let us know.&lt;/p&gt; &lt;h2 id=&#34;Further-reading&#34;&gt;Further reading&lt;a class=&#34;headerlink&#34; href=&#34;#Further-reading&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&#34;../../02/2026-discord-matrix-statement/&#34;&gt;From Discord’s Age Verification to Why We Self-Host Matrix&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&#34;../../../../community/&#34;&gt;Community&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;</description> <link>https://ipfs.anoni.net/en/blog/2026/05/2026-cryptpad-zh-hant/</link> <pubDate>Sat, 22 Aug 2026 02:54:24 +0000</pubDate> <source url="https://ipfs.anoni.net/en/feed_rss_updated.xml">anoni.net Docs — Sinophone Asia-Pacific Networked Freedom Observatory</source><guid isPermaLink="true">https://ipfs.anoni.net/en/blog/2026/05/2026-cryptpad-zh-hant/</guid> <enclosure url="https://ipfs.anoni.net/en/assets/images/post-update.png" type="image/png" length="81353" /> </item> <item> <title>Defending the Public&#39;s Right to Know: A Sinophone Asia-Pacific Reading of OONI in Practice</title> <author>anoni.net Community</author> <category>OONI</category> <category>Perspective</category> <category>Tor</category> <category>Translated Article</category> <description>&lt;h1 id=&#34;Defending-the-Publics-Right-to-Know-A-Sinophone-Asia-Pacific-Reading-of-OONI-in-Practice&#34;&gt;Defending the Public&#39;s Right to Know: A Sinophone Asia-Pacific Reading of OONI in Practice&lt;a class=&#34;headerlink&#34; href=&#34;#Defending-the-Publics-Right-to-Know-A-Sinophone-Asia-Pacific-Reading-of-OONI-in-Practice&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt; &lt;div class=&#34;admonition info&#34;&gt; &lt;p&gt;This post sits alongside Tor Project&#39;s spotlight series article on OONI. The body below summarises what the original covers and then maps the same workflow onto Sinophone Asia-Pacific — the section the original does not cover, and the main contribution of this post.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;For the full narrative on Kenya&#39;s High Court case, Tanzania&#39;s follow-up litigation, Meduza&#39;s public-education framing, and the supporting cases from Egypt, Jordan, and India, please read the original:&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&#34;https://blog.torproject.org/Defending-the-right-to-know/&#34; target=&#34;_blank&#34;&gt;Defending the public&#39;s right to know, by pavel, 2026-05-12&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;figure&gt; &lt;a href=&#34;https://forum.torproject.org/uploads/default/original/2X/3/3c647fc332a9f5c49e81d7660d9d91f5e39e8b0b.png&#34; target=&#34;_blank&#34;&gt; &lt;img src=&#34;https://forum.torproject.org/uploads/default/original/2X/3/3c647fc332a9f5c49e81d7660d9d91f5e39e8b0b.png&#34; alt=&#34;Visual header for the Tor Project &#39;Defending the free internet&#39; spotlight series, featuring OONI&#34; style=&#34;border-radius: 10px;&#34;&gt; &lt;/a&gt; &lt;figcaption&gt;Image source: &lt;a target=&#34;_blank&#34; href=&#34;https://blog.torproject.org/Defending-the-right-to-know/&#34;&gt;Tor Project Blog&lt;/a&gt;.&lt;/figcaption&gt; &lt;/figure&gt; &lt;!-- more --&gt; &lt;h2 id=&#34;What-the-original-post-covers&#34;&gt;What the original post covers&lt;a class=&#34;headerlink&#34; href=&#34;#What-the-original-post-covers&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;&lt;a href=&#34;https://ooni.org/&#34; target=&#34;_blank&#34;&gt;OONI&lt;/a&gt; — the Open Observatory for Network Interference, born out of the Tor Project — turns internet censorship into a measurable, verifiable, and actionable public record. Since 2012 the dataset has accumulated billions of measurements across 245 countries and territories, contributed by anyone running &lt;a href=&#34;https://ooni.org/install/&#34; target=&#34;_blank&#34;&gt;OONI Probe&lt;/a&gt; on their networks. The methodology combines &lt;a href=&#34;https://github.com/ooni/spec/tree/master/nettests&#34; target=&#34;_blank&#34;&gt;open measurement specifications&lt;/a&gt;, peer review, expert feedback, and comparison against control measurements, so that &#34;this is censored&#34; claims can be tested rather than asserted.&lt;/p&gt; &lt;p&gt;Tor Project&#39;s post highlights three concrete patterns of use:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Newsrooms as public educators&lt;/strong&gt;: Russian exile outlet &lt;a href=&#34;https://meduza.io/en&#34; target=&#34;_blank&#34;&gt;Meduza&lt;/a&gt; &lt;a href=&#34;https://meduza.io/cards/tsenzury-v-runete-vse-bolshe-kak-mozhno-otslezhivat-blokirovki&#34; target=&#34;_blank&#34;&gt;published an article in 2025 introducing OONI tools&lt;/a&gt; and inviting readers to try them — censorship measurement as public education, not just reportable subject matter.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Expert-opinion evidence in public-interest litigation&lt;/strong&gt;: At the High Court of Kenya, OONI produced &lt;a href=&#34;https://blog.bake.co.ke/wp-content/uploads/2025/05/HCCHRPET.276.2025-ICJ-v-CA-Internet-Shutdown-Case.pdf&#34; target=&#34;_blank&#34;&gt;a detailed research report&lt;/a&gt; documenting Telegram blocking during the 2023 and 2024 KCSE national exams. &lt;a href=&#34;https://blog.bake.co.ke/2025/05/14/bake-6-other-organizations-challenge-internet-shutdowns-in-kenya-in-landmark-public-interest-case/&#34; target=&#34;_blank&#34;&gt;The petition was filed by a coalition&lt;/a&gt; including BAKE, ICJ Kenya, Paradigm Initiative, the Kenya Union of Journalists, Katiba Institute, the Law Society of Kenya, and CIPESA.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Regional precedent that travels&lt;/strong&gt;: Following the Kenya case, lawyers in Tanzania reached out to OONI for data on the local blocking of Twitter/X, prompting &lt;a href=&#34;https://ooni.org/post/2025-tanzania-blocked-twitter/&#34; target=&#34;_blank&#34;&gt;a research report&lt;/a&gt; that supported their legal challenge.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;The post also walks through OONI Explorer&#39;s &lt;a href=&#34;https://ooni.org/post/2025-ooni-explorer-thematic-censorship-pages/&#34; target=&#34;_blank&#34;&gt;thematic pages&lt;/a&gt; and individual findings — &lt;a href=&#34;https://explorer.ooni.org/findings/99431807200&#34; target=&#34;_blank&#34;&gt;Zawia3 in Egypt&lt;/a&gt;, &lt;a href=&#34;https://explorer.ooni.org/findings/101531332700&#34; target=&#34;_blank&#34;&gt;12 news websites in Jordan&lt;/a&gt;, &lt;a href=&#34;https://explorer.ooni.org/findings/667455800&#34; target=&#34;_blank&#34;&gt;The Wire in India&lt;/a&gt; during the conflict with Pakistan — and frames open documentation as the basis for collective response. The full narrative is in &lt;a href=&#34;https://blog.torproject.org/Defending-the-right-to-know/&#34; target=&#34;_blank&#34;&gt;the original post&lt;/a&gt;; the rest of this article focuses on regional context the original does not cover.&lt;/p&gt; &lt;h2 id=&#34;Sinophone-Asia-Pacific-the-same-workflow-divergent-local-conditions&#34;&gt;Sinophone Asia-Pacific: the same workflow, divergent local conditions&lt;a class=&#34;headerlink&#34; href=&#34;#Sinophone-Asia-Pacific-the-same-workflow-divergent-local-conditions&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Tor Project&#39;s post focuses on Kenya, Tanzania, Egypt, Jordan, India, and Russian exile media. The same documentation logic — open measurement, peer-reviewed methodology, public dataset, expert-opinion reporting — applies across Sinophone Asia-Pacific, but the legal-advocacy environments diverge sharply.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Mainland China&lt;/strong&gt;: OONI Probe users continuously upload measurements from Chinese networks, producing one of the most consistent public records of Great Firewall behavior — blocks of social media, news outlets, messaging apps, and circumvention tools. The legal path Kenya demonstrates is largely unavailable inside mainland China itself. The documentation matters as evidence in international forums, academic research, and reporting by overseas media. Running OONI Probe in mainland China carries political risk for individuals, which is part of why coverage is uneven across ASNs.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Hong Kong&lt;/strong&gt;: Since 2020, blocks of overseas Hong Kong–related news sites, civic-organization sites, and circumvention infrastructure have surfaced repeatedly. OONI measurements provide third-party verifiable records, useful for international advocacy reports, human rights documentation, and journalism by exile media.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Taiwan&lt;/strong&gt;: The anoni.net community maintains an &lt;a href=&#34;../../../../regional/ooni-asn-coverage/&#34;&gt;ASN coverage analysis for OONI data in Taiwan&lt;/a&gt;, surfacing which Taiwanese ISPs and mobile carriers have measurement coverage and which remain blind spots. Taiwan does not face Great Firewall–style blocking, but ISP-level disruptions, undersea cable incidents, and election-period anomalies all benefit from continuous independent measurement. The Kenya expert-opinion workflow is also directly applicable to public-interest litigation in Taiwan&#39;s functioning court system.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Singapore and Malaysia&lt;/strong&gt;: Targeted blocks of specific news sites and political content periodically appear and are documented by OONI&#39;s regional measurements. Local press-freedom and digital-rights organizations have used these measurements in advocacy reports.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Macau&lt;/strong&gt;: Less independently studied than Hong Kong, but the regulatory environment increasingly mirrors mainland practice. Independent measurement matters as a benchmark for tracking change over time.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Overseas Sinophone users&lt;/strong&gt;: Cross-border circumvention work, anti-censorship reporting, and human rights documentation rely on OONI&#39;s data when sourcing claims about specific blocks. Kenya&#39;s expert-opinion model offers a template for how technical research organizations can serve legal proceedings in jurisdictions with functioning courts.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;The reach of OONI&#39;s open data is uneven across the Sinophone region. Closing that gap depends on more users — across more ASNs — running OONI Probe, and on more cross-disciplinary collaboration between journalists, researchers, lawyers, and civil society organizations.&lt;/p&gt; &lt;h2 id=&#34;What-you-can-do&#34;&gt;What you can do&lt;a class=&#34;headerlink&#34; href=&#34;#What-you-can-do&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;General readers&lt;/strong&gt;: &lt;a href=&#34;https://ooni.org/install/&#34; target=&#34;_blank&#34;&gt;Install OONI Probe&lt;/a&gt; and run a measurement to put your network on the public record. If you notice a website you visit hasn&#39;t been tested, submit it through OONI&#39;s &lt;a href=&#34;https://test-lists.ooni.org/login&#34; target=&#34;_blank&#34;&gt;test list editor&lt;/a&gt;.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Researchers and technical communities&lt;/strong&gt;: Compare your network or testbed against existing ASN coverage gaps, evaluate which measurements you can add, and package the results as minimal, repeatable artifacts that others can cite.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Journalists, editors, and human rights lawyers&lt;/strong&gt;: When reporting on or litigating blocks in mainland China, Hong Kong, Myanmar, Vietnam, or other Sinophone-adjacent jurisdictions, &lt;a href=&#34;https://explorer.ooni.org/&#34; target=&#34;_blank&#34;&gt;OONI Explorer&lt;/a&gt; measurement charts, findings reports, and full research reports are publicly citable evidence. For public-interest litigation, Kenya&#39;s case shows the workflow for requesting an expert opinion report from OONI.&lt;/li&gt; &lt;/ul&gt; &lt;h2 id=&#34;Related-reading&#34;&gt;Related reading&lt;a class=&#34;headerlink&#34; href=&#34;#Related-reading&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&#34;../../../../basics/internet-freedom/&#34;&gt;Internet Freedom&lt;/a&gt;: why the broader internet freedom frame matters for measurement infrastructure&lt;/li&gt; &lt;li&gt;&lt;a href=&#34;../../../../community/onionoo-mcp/&#34;&gt;onionoo MCP: Tor relay query service&lt;/a&gt;: a related tool the anoni.net community runs for Tor network observation&lt;/li&gt; &lt;li&gt;&lt;a href=&#34;../../05/2026-financial-companies-as-censors/&#34;&gt;Financial Companies as Censors: A Sinophone Asia-Pacific Reading&lt;/a&gt;: the same &#34;global anchor + Sinophone Asia-Pacific reading&#34; format applied to financial censorship&lt;/li&gt; &lt;/ul&gt;</description> <link>https://ipfs.anoni.net/en/blog/2026/07/2026-defending-the-public-s-right-to-know/</link> <pubDate>Sat, 22 Aug 2026 02:54:24 +0000</pubDate> <source url="https://ipfs.anoni.net/en/feed_rss_updated.xml">anoni.net Docs — Sinophone Asia-Pacific Networked Freedom Observatory</source><guid isPermaLink="true">https://ipfs.anoni.net/en/blog/2026/07/2026-defending-the-public-s-right-to-know/</guid> <enclosure url="https://forum.torproject.org/uploads/default/original/2X/3/3c647fc332a9f5c49e81d7660d9d91f5e39e8b0b.png" type="image/png" length="126742" /> </item> <item> <title>We surveyed all 336 OONI Run v2 links, and three of them drive 72% of all measurements</title> <author>anoni.net Community</author> <category>OONI</category> <category>Technology</category> <description>&lt;h1 id=&#34;We-surveyed-all-336-OONI-Run-v2-links-and-three-of-them-drive-72-of-all-measurements&#34;&gt;We surveyed all 336 OONI Run v2 links, and three of them drive 72% of all measurements&lt;a class=&#34;headerlink&#34; href=&#34;#We-surveyed-all-336-OONI-Run-v2-links-and-three-of-them-drive-72-of-all-measurements&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt; &lt;p&gt;&lt;img alt=&#34;OONI Run v2 usage census&#34; src=&#34;https://assets.anoni.net/docs/ooni-run-v2-header.png&#34; style=&#34;border-radius: 10px;box-shadow:1px 1px 0.6rem #00aeff;&#34; /&gt;&lt;/p&gt; &lt;p&gt;Worldwide, OONI Run v2 has produced 14.17 million measurements, and just three lists account for 72% of them. The highest-volume lists all work the same way: each one targets a single censorship or blocking phenomenon, and a continuously-running measurement backend executes it on a schedule, accumulating data over time. We surveyed every Run v2 link to measure how concentrated this is, and to draw out what the pattern offers communities that want to run their own local connectivity observation.&lt;/p&gt; &lt;p&gt;OONI (the Open Observatory of Network Interference) is a global censorship-measurement project. Its mobile app, OONI Probe, runs through a list of websites and reports whether each one is reachable from where you are. OONI Run v2 lets anyone compose their own list of sites to watch, generate a link, and have others run that list with one tap in OONI Probe, with every result flowing into OONI&#39;s public dataset. You can define your own measurement targets without writing code, yet few people know the feature exists or have used it, which is exactly why we wanted to see how it is actually used.&lt;/p&gt; &lt;!-- more --&gt; &lt;h2 id=&#34;What-we-did&#34;&gt;What we did&lt;a class=&#34;headerlink&#34; href=&#34;#What-we-did&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;We took a snapshot on 2026-06-01 and went through every live OONI Run v2 link, 336 of them, pulling each link&#39;s lifetime measurement count from OONI&#39;s public aggregation API&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:1&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; and grouping them by list topic. Every figure below is based on that snapshot; the data source and caveats are at the end.&lt;/p&gt; &lt;h2 id=&#34;How-big-is-the-population-337-links-in-two-years&#34;&gt;How big is the population: 337 links in two years&lt;a class=&#34;headerlink&#34; href=&#34;#How-big-is-the-population-337-links-in-two-years&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;From the first link on 2024-04-24 to now, about 26 months, the whole world has created only 337 Run v2 links (one has been deleted; 336 remain). Creation spiked between October and December 2024 and has since held steady at 10 to 19 per month. 157 distinct authors took part, and 332 of the 336 use Web Connectivity, almost all of them testing website reachability.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;New Run v2 links created per month &lt;vegachart style=&#39;width: 100%&#39; class=&#34;vegalite&#34;&gt;{&#34;description&#34;:&#34;OONI Run v2 links created per month&#34;,&#34;data&#34;:{&#34;values&#34;:[{&#34;m&#34;:&#34;2024-04&#34;,&#34;n&#34;:4},{&#34;m&#34;:&#34;2024-06&#34;,&#34;n&#34;:1},{&#34;m&#34;:&#34;2024-07&#34;,&#34;n&#34;:1},{&#34;m&#34;:&#34;2024-09&#34;,&#34;n&#34;:3},{&#34;m&#34;:&#34;2024-10&#34;,&#34;n&#34;:23},{&#34;m&#34;:&#34;2024-11&#34;,&#34;n&#34;:54},{&#34;m&#34;:&#34;2024-12&#34;,&#34;n&#34;:28},{&#34;m&#34;:&#34;2025-01&#34;,&#34;n&#34;:14},{&#34;m&#34;:&#34;2025-02&#34;,&#34;n&#34;:9},{&#34;m&#34;:&#34;2025-03&#34;,&#34;n&#34;:19},{&#34;m&#34;:&#34;2025-04&#34;,&#34;n&#34;:16},{&#34;m&#34;:&#34;2025-05&#34;,&#34;n&#34;:11},{&#34;m&#34;:&#34;2025-06&#34;,&#34;n&#34;:9},{&#34;m&#34;:&#34;2025-07&#34;,&#34;n&#34;:18},{&#34;m&#34;:&#34;2025-08&#34;,&#34;n&#34;:14},{&#34;m&#34;:&#34;2025-09&#34;,&#34;n&#34;:17},{&#34;m&#34;:&#34;2025-10&#34;,&#34;n&#34;:8},{&#34;m&#34;:&#34;2025-11&#34;,&#34;n&#34;:8},{&#34;m&#34;:&#34;2025-12&#34;,&#34;n&#34;:19},{&#34;m&#34;:&#34;2026-01&#34;,&#34;n&#34;:10},{&#34;m&#34;:&#34;2026-02&#34;,&#34;n&#34;:12},{&#34;m&#34;:&#34;2026-03&#34;,&#34;n&#34;:14},{&#34;m&#34;:&#34;2026-04&#34;,&#34;n&#34;:10},{&#34;m&#34;:&#34;2026-05&#34;,&#34;n&#34;:14}]},&#34;mark&#34;:{&#34;type&#34;:&#34;bar&#34;,&#34;tooltip&#34;:true,&#34;color&#34;:&#34;#00aeff&#34;},&#34;encoding&#34;:{&#34;x&#34;:{&#34;field&#34;:&#34;m&#34;,&#34;type&#34;:&#34;ordinal&#34;,&#34;title&#34;:&#34;Month&#34;,&#34;axis&#34;:{&#34;labelAngle&#34;:-45}},&#34;y&#34;:{&#34;field&#34;:&#34;n&#34;,&#34;type&#34;:&#34;quantitative&#34;,&#34;title&#34;:&#34;New links created&#34;}}}&lt;/vegachart&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;For a global censorship-observation tool, 337 links in two years is a small number. Going by creation count alone, it is easy to conclude that almost nobody uses Run v2. The usage data in the next section overturns that.&lt;/p&gt; &lt;h2 id=&#34;Usage-is-extremely-concentrated-Gini-0981&#34;&gt;Usage is extremely concentrated, Gini 0.981&lt;a class=&#34;headerlink&#34; href=&#34;#Usage-is-extremely-concentrated-Gini-0981&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Adding up the lifetime measurements of all 336 links gives 14,171,627. The total is not small; the problem is how unevenly it is distributed. The Gini coefficient by measurement count is 0.981, almost at the 1.0 of complete inequality.&lt;/p&gt; &lt;div class=&#34;admonition note&#34;&gt; &lt;p class=&#34;admonition-title&#34;&gt;Why the Gini coefficient&lt;/p&gt; &lt;p&gt;The Gini coefficient was originally used to measure income inequality. It ranges from 0 to 1 and compresses the concentration of a whole distribution into a single number. 0 means perfectly even, with every link producing the same number of measurements. 1 means fully concentrated, with all measurements coming from a single link.&lt;/p&gt; &lt;p&gt;It fits here well, because each link&#39;s measurement count is a non-negative quantity and the question is exactly how concentrated all measurements are among a few links. Mathematically the Gini coefficient equals the area between the Lorenz curve and the diagonal (divided by the total area below the diagonal), so the closer the Lorenz curve below hugs the bottom edge, the closer the Gini coefficient is to 1. A value of 0.981 means the distribution is very close to the extreme where a handful of links take almost everything.&lt;/p&gt; &lt;p&gt;A single number does not show which links these are or what the long tail looks like, so we include both the Lorenz curve and a bucketed distribution to lay out the shape of the concentration.&lt;/p&gt; &lt;/div&gt; &lt;ul&gt; &lt;li&gt;Lorenz curve of measurement volume (the dashed line is perfect equality) &lt;vegachart style=&#39;width: 100%&#39; class=&#34;vegalite&#34;&gt;{&#34;description&#34;:&#34;Lorenz curve of measurement volume across Run v2 links&#34;,&#34;layer&#34;:[{&#34;data&#34;:{&#34;values&#34;:[{&#34;x&#34;:0,&#34;y&#34;:0},{&#34;x&#34;:100,&#34;y&#34;:100}]},&#34;mark&#34;:{&#34;type&#34;:&#34;line&#34;,&#34;color&#34;:&#34;#546e7a&#34;,&#34;strokeDash&#34;:[4,4]},&#34;encoding&#34;:{&#34;x&#34;:{&#34;field&#34;:&#34;x&#34;,&#34;type&#34;:&#34;quantitative&#34;},&#34;y&#34;:{&#34;field&#34;:&#34;y&#34;,&#34;type&#34;:&#34;quantitative&#34;}}},{&#34;data&#34;:{&#34;values&#34;:[{&#34;x&#34;:0.0,&#34;y&#34;:0.0},{&#34;x&#34;:0.3,&#34;y&#34;:0.0},{&#34;x&#34;:0.6,&#34;y&#34;:0.0},{&#34;x&#34;:0.89,&#34;y&#34;:0.0},{&#34;x&#34;:1.19,&#34;y&#34;:0.0},{&#34;x&#34;:1.49,&#34;y&#34;:0.0},{&#34;x&#34;:1.79,&#34;y&#34;:0.0},{&#34;x&#34;:2.08,&#34;y&#34;:0.0},{&#34;x&#34;:2.38,&#34;y&#34;:0.0},{&#34;x&#34;:2.68,&#34;y&#34;:0.0},{&#34;x&#34;:2.98,&#34;y&#34;:0.0},{&#34;x&#34;:3.27,&#34;y&#34;:0.0},{&#34;x&#34;:3.57,&#34;y&#34;:0.0},{&#34;x&#34;:3.87,&#34;y&#34;:0.0},{&#34;x&#34;:4.17,&#34;y&#34;:0.0},{&#34;x&#34;:4.46,&#34;y&#34;:0.0},{&#34;x&#34;:4.76,&#34;y&#34;:0.0},{&#34;x&#34;:5.06,&#34;y&#34;:0.0},{&#34;x&#34;:5.36,&#34;y&#34;:0.0},{&#34;x&#34;:5.65,&#34;y&#34;:0.0},{&#34;x&#34;:5.95,&#34;y&#34;:0.0},{&#34;x&#34;:6.25,&#34;y&#34;:0.0},{&#34;x&#34;:6.55,&#34;y&#34;:0.0},{&#34;x&#34;:6.85,&#34;y&#34;:0.0},{&#34;x&#34;:7.14,&#34;y&#34;:0.0},{&#34;x&#34;:7.44,&#34;y&#34;:0.0},{&#34;x&#34;:7.74,&#34;y&#34;:0.0},{&#34;x&#34;:8.04,&#34;y&#34;:0.0},{&#34;x&#34;:8.33,&#34;y&#34;:0.0},{&#34;x&#34;:8.63,&#34;y&#34;:0.0},{&#34;x&#34;:8.93,&#34;y&#34;:0.0},{&#34;x&#34;:9.23,&#34;y&#34;:0.0},{&#34;x&#34;:9.52,&#34;y&#34;:0.0},{&#34;x&#34;:9.82,&#34;y&#34;:0.0},{&#34;x&#34;:10.12,&#34;y&#34;:0.0},{&#34;x&#34;:10.42,&#34;y&#34;:0.0},{&#34;x&#34;:10.71,&#34;y&#34;:0.0},{&#34;x&#34;:11.01,&#34;y&#34;:0.0},{&#34;x&#34;:11.31,&#34;y&#34;:0.0},{&#34;x&#34;:11.61,&#34;y&#34;:0.0},{&#34;x&#34;:11.9,&#34;y&#34;:0.0},{&#34;x&#34;:12.2,&#34;y&#34;:0.0},{&#34;x&#34;:12.5,&#34;y&#34;:0.0},{&#34;x&#34;:12.8,&#34;y&#34;:0.0},{&#34;x&#34;:13.1,&#34;y&#34;:0.0},{&#34;x&#34;:13.39,&#34;y&#34;:0.0},{&#34;x&#34;:13.69,&#34;y&#34;:0.0},{&#34;x&#34;:13.99,&#34;y&#34;:0.0},{&#34;x&#34;:14.29,&#34;y&#34;:0.0},{&#34;x&#34;:14.58,&#34;y&#34;:0.0},{&#34;x&#34;:14.88,&#34;y&#34;:0.0},{&#34;x&#34;:15.18,&#34;y&#34;:0.0},{&#34;x&#34;:15.48,&#34;y&#34;:0.0},{&#34;x&#34;:15.77,&#34;y&#34;:0.0},{&#34;x&#34;:16.07,&#34;y&#34;:0.0},{&#34;x&#34;:16.37,&#34;y&#34;:0.0},{&#34;x&#34;:16.67,&#34;y&#34;:0.0},{&#34;x&#34;:16.96,&#34;y&#34;:0.0},{&#34;x&#34;:17.26,&#34;y&#34;:0.0},{&#34;x&#34;:17.56,&#34;y&#34;:0.0},{&#34;x&#34;:17.86,&#34;y&#34;:0.0},{&#34;x&#34;:18.15,&#34;y&#34;:0.0},{&#34;x&#34;:18.45,&#34;y&#34;:0.0},{&#34;x&#34;:18.75,&#34;y&#34;:0.0},{&#34;x&#34;:19.05,&#34;y&#34;:0.0},{&#34;x&#34;:19.35,&#34;y&#34;:0.0},{&#34;x&#34;:19.64,&#34;y&#34;:0.0},{&#34;x&#34;:19.94,&#34;y&#34;:0.0},{&#34;x&#34;:20.24,&#34;y&#34;:0.0},{&#34;x&#34;:20.54,&#34;y&#34;:0.0},{&#34;x&#34;:20.83,&#34;y&#34;:0.0},{&#34;x&#34;:21.13,&#34;y&#34;:0.0},{&#34;x&#34;:21.43,&#34;y&#34;:0.0},{&#34;x&#34;:21.73,&#34;y&#34;:0.0},{&#34;x&#34;:22.02,&#34;y&#34;:0.0},{&#34;x&#34;:22.32,&#34;y&#34;:0.0},{&#34;x&#34;:22.62,&#34;y&#34;:0.0},{&#34;x&#34;:22.92,&#34;y&#34;:0.0},{&#34;x&#34;:23.21,&#34;y&#34;:0.0},{&#34;x&#34;:23.51,&#34;y&#34;:0.0},{&#34;x&#34;:23.81,&#34;y&#34;:0.0},{&#34;x&#34;:24.11,&#34;y&#34;:0.0},{&#34;x&#34;:24.4,&#34;y&#34;:0.0},{&#34;x&#34;:24.7,&#34;y&#34;:0.0},{&#34;x&#34;:25.0,&#34;y&#34;:0.0},{&#34;x&#34;:25.3,&#34;y&#34;:0.0},{&#34;x&#34;:25.6,&#34;y&#34;:0.0},{&#34;x&#34;:25.89,&#34;y&#34;:0.0},{&#34;x&#34;:26.19,&#34;y&#34;:0.0},{&#34;x&#34;:26.49,&#34;y&#34;:0.0},{&#34;x&#34;:26.79,&#34;y&#34;:0.0},{&#34;x&#34;:27.08,&#34;y&#34;:0.0},{&#34;x&#34;:27.38,&#34;y&#34;:0.0},{&#34;x&#34;:27.68,&#34;y&#34;:0.0},{&#34;x&#34;:27.98,&#34;y&#34;:0.0},{&#34;x&#34;:28.27,&#34;y&#34;:0.0},{&#34;x&#34;:28.57,&#34;y&#34;:0.0},{&#34;x&#34;:28.87,&#34;y&#34;:0.0},{&#34;x&#34;:29.17,&#34;y&#34;:0.0},{&#34;x&#34;:29.46,&#34;y&#34;:0.0},{&#34;x&#34;:29.76,&#34;y&#34;:0.0},{&#34;x&#34;:30.06,&#34;y&#34;:0.0},{&#34;x&#34;:30.36,&#34;y&#34;:0.0},{&#34;x&#34;:30.65,&#34;y&#34;:0.0},{&#34;x&#34;:30.95,&#34;y&#34;:0.0},{&#34;x&#34;:31.25,&#34;y&#34;:0.0},{&#34;x&#34;:31.55,&#34;y&#34;:0.0},{&#34;x&#34;:31.85,&#34;y&#34;:0.0},{&#34;x&#34;:32.14,&#34;y&#34;:0.0},{&#34;x&#34;:32.44,&#34;y&#34;:0.0},{&#34;x&#34;:32.74,&#34;y&#34;:0.0},{&#34;x&#34;:33.04,&#34;y&#34;:0.0},{&#34;x&#34;:33.33,&#34;y&#34;:0.0},{&#34;x&#34;:33.63,&#34;y&#34;:0.0},{&#34;x&#34;:33.93,&#34;y&#34;:0.0},{&#34;x&#34;:34.23,&#34;y&#34;:0.0},{&#34;x&#34;:34.52,&#34;y&#34;:0.0},{&#34;x&#34;:34.82,&#34;y&#34;:0.0},{&#34;x&#34;:35.12,&#34;y&#34;:0.0},{&#34;x&#34;:35.42,&#34;y&#34;:0.0},{&#34;x&#34;:35.71,&#34;y&#34;:0.0},{&#34;x&#34;:36.01,&#34;y&#34;:0.0},{&#34;x&#34;:36.31,&#34;y&#34;:0.0},{&#34;x&#34;:36.61,&#34;y&#34;:0.0},{&#34;x&#34;:36.9,&#34;y&#34;:0.0},{&#34;x&#34;:37.2,&#34;y&#34;:0.0},{&#34;x&#34;:37.5,&#34;y&#34;:0.0},{&#34;x&#34;:37.8,&#34;y&#34;:0.0},{&#34;x&#34;:38.1,&#34;y&#34;:0.0},{&#34;x&#34;:38.39,&#34;y&#34;:0.0},{&#34;x&#34;:38.69,&#34;y&#34;:0.0},{&#34;x&#34;:38.99,&#34;y&#34;:0.0},{&#34;x&#34;:39.29,&#34;y&#34;:0.0},{&#34;x&#34;:39.58,&#34;y&#34;:0.0},{&#34;x&#34;:39.88,&#34;y&#34;:0.0},{&#34;x&#34;:40.18,&#34;y&#34;:0.0},{&#34;x&#34;:40.48,&#34;y&#34;:0.0},{&#34;x&#34;:40.77,&#34;y&#34;:0.0},{&#34;x&#34;:41.07,&#34;y&#34;:0.0},{&#34;x&#34;:41.37,&#34;y&#34;:0.0},{&#34;x&#34;:41.67,&#34;y&#34;:0.0},{&#34;x&#34;:41.96,&#34;y&#34;:0.0},{&#34;x&#34;:42.26,&#34;y&#34;:0.001},{&#34;x&#34;:42.56,&#34;y&#34;:0.001},{&#34;x&#34;:42.86,&#34;y&#34;:0.001},{&#34;x&#34;:43.15,&#34;y&#34;:0.001},{&#34;x&#34;:43.45,&#34;y&#34;:0.001},{&#34;x&#34;:43.75,&#34;y&#34;:0.001},{&#34;x&#34;:44.05,&#34;y&#34;:0.001},{&#34;x&#34;:44.35,&#34;y&#34;:0.001},{&#34;x&#34;:44.64,&#34;y&#34;:0.001},{&#34;x&#34;:44.94,&#34;y&#34;:0.001},{&#34;x&#34;:45.24,&#34;y&#34;:0.001},{&#34;x&#34;:45.54,&#34;y&#34;:0.001},{&#34;x&#34;:45.83,&#34;y&#34;:0.001},{&#34;x&#34;:46.13,&#34;y&#34;:0.001},{&#34;x&#34;:46.43,&#34;y&#34;:0.002},{&#34;x&#34;:46.73,&#34;y&#34;:0.002},{&#34;x&#34;:47.02,&#34;y&#34;:0.002},{&#34;x&#34;:47.32,&#34;y&#34;:0.002},{&#34;x&#34;:47.62,&#34;y&#34;:0.002},{&#34;x&#34;:47.92,&#34;y&#34;:0.002},{&#34;x&#34;:48.21,&#34;y&#34;:0.002},{&#34;x&#34;:48.51,&#34;y&#34;:0.003},{&#34;x&#34;:48.81,&#34;y&#34;:0.003},{&#34;x&#34;:49.11,&#34;y&#34;:0.003},{&#34;x&#34;:49.4,&#34;y&#34;:0.003},{&#34;x&#34;:49.7,&#34;y&#34;:0.003},{&#34;x&#34;:50.0,&#34;y&#34;:0.003},{&#34;x&#34;:50.3,&#34;y&#34;:0.004},{&#34;x&#34;:50.6,&#34;y&#34;:0.004},{&#34;x&#34;:50.89,&#34;y&#34;:0.004},{&#34;x&#34;:51.19,&#34;y&#34;:0.004},{&#34;x&#34;:51.49,&#34;y&#34;:0.004},{&#34;x&#34;:51.79,&#34;y&#34;:0.005},{&#34;x&#34;:52.08,&#34;y&#34;:0.005},{&#34;x&#34;:52.38,&#34;y&#34;:0.005},{&#34;x&#34;:52.68,&#34;y&#34;:0.006},{&#34;x&#34;:52.98,&#34;y&#34;:0.006},{&#34;x&#34;:53.27,&#34;y&#34;:0.006},{&#34;x&#34;:53.57,&#34;y&#34;:0.007},{&#34;x&#34;:53.87,&#34;y&#34;:0.007},{&#34;x&#34;:54.17,&#34;y&#34;:0.007},{&#34;x&#34;:54.46,&#34;y&#34;:0.008},{&#34;x&#34;:54.76,&#34;y&#34;:0.008},{&#34;x&#34;:55.06,&#34;y&#34;:0.009},{&#34;x&#34;:55.36,&#34;y&#34;:0.009},{&#34;x&#34;:55.65,&#34;y&#34;:0.01},{&#34;x&#34;:55.95,&#34;y&#34;:0.01},{&#34;x&#34;:56.25,&#34;y&#34;:0.011},{&#34;x&#34;:56.55,&#34;y&#34;:0.011},{&#34;x&#34;:56.85,&#34;y&#34;:0.012},{&#34;x&#34;:57.14,&#34;y&#34;:0.013},{&#34;x&#34;:57.44,&#34;y&#34;:0.013},{&#34;x&#34;:57.74,&#34;y&#34;:0.014},{&#34;x&#34;:58.04,&#34;y&#34;:0.015},{&#34;x&#34;:58.33,&#34;y&#34;:0.016},{&#34;x&#34;:58.63,&#34;y&#34;:0.016},{&#34;x&#34;:58.93,&#34;y&#34;:0.017},{&#34;x&#34;:59.23,&#34;y&#34;:0.018},{&#34;x&#34;:59.52,&#34;y&#34;:0.019},{&#34;x&#34;:59.82,&#34;y&#34;:0.02},{&#34;x&#34;:60.12,&#34;y&#34;:0.021},{&#34;x&#34;:60.42,&#34;y&#34;:0.022},{&#34;x&#34;:60.71,&#34;y&#34;:0.024},{&#34;x&#34;:61.01,&#34;y&#34;:0.025},{&#34;x&#34;:61.31,&#34;y&#34;:0.026},{&#34;x&#34;:61.61,&#34;y&#34;:0.027},{&#34;x&#34;:61.9,&#34;y&#34;:0.028},{&#34;x&#34;:62.2,&#34;y&#34;:0.03},{&#34;x&#34;:62.5,&#34;y&#34;:0.031},{&#34;x&#34;:62.8,&#34;y&#34;:0.033},{&#34;x&#34;:63.1,&#34;y&#34;:0.034},{&#34;x&#34;:63.39,&#34;y&#34;:0.036},{&#34;x&#34;:63.69,&#34;y&#34;:0.038},{&#34;x&#34;:63.99,&#34;y&#34;:0.04},{&#34;x&#34;:64.29,&#34;y&#34;:0.042},{&#34;x&#34;:64.58,&#34;y&#34;:0.044},{&#34;x&#34;:64.88,&#34;y&#34;:0.046},{&#34;x&#34;:65.18,&#34;y&#34;:0.048},{&#34;x&#34;:65.48,&#34;y&#34;:0.05},{&#34;x&#34;:65.77,&#34;y&#34;:0.052},{&#34;x&#34;:66.07,&#34;y&#34;:0.054},{&#34;x&#34;:66.37,&#34;y&#34;:0.057},{&#34;x&#34;:66.67,&#34;y&#34;:0.059},{&#34;x&#34;:66.96,&#34;y&#34;:0.061},{&#34;x&#34;:67.26,&#34;y&#34;:0.064},{&#34;x&#34;:67.56,&#34;y&#34;:0.066},{&#34;x&#34;:67.86,&#34;y&#34;:0.069},{&#34;x&#34;:68.15,&#34;y&#34;:0.071},{&#34;x&#34;:68.45,&#34;y&#34;:0.074},{&#34;x&#34;:68.75,&#34;y&#34;:0.077},{&#34;x&#34;:69.05,&#34;y&#34;:0.079},{&#34;x&#34;:69.35,&#34;y&#34;:0.082},{&#34;x&#34;:69.64,&#34;y&#34;:0.085},{&#34;x&#34;:69.94,&#34;y&#34;:0.089},{&#34;x&#34;:70.24,&#34;y&#34;:0.092},{&#34;x&#34;:70.54,&#34;y&#34;:0.095},{&#34;x&#34;:70.83,&#34;y&#34;:0.099},{&#34;x&#34;:71.13,&#34;y&#34;:0.102},{&#34;x&#34;:71.43,&#34;y&#34;:0.106},{&#34;x&#34;:71.73,&#34;y&#34;:0.109},{&#34;x&#34;:72.02,&#34;y&#34;:0.113},{&#34;x&#34;:72.32,&#34;y&#34;:0.116},{&#34;x&#34;:72.62,&#34;y&#34;:0.12},{&#34;x&#34;:72.92,&#34;y&#34;:0.123},{&#34;x&#34;:73.21,&#34;y&#34;:0.127},{&#34;x&#34;:73.51,&#34;y&#34;:0.13},{&#34;x&#34;:73.81,&#34;y&#34;:0.134},{&#34;x&#34;:74.11,&#34;y&#34;:0.138},{&#34;x&#34;:74.4,&#34;y&#34;:0.142},{&#34;x&#34;:74.7,&#34;y&#34;:0.146},{&#34;x&#34;:75.0,&#34;y&#34;:0.15},{&#34;x&#34;:75.3,&#34;y&#34;:0.155},{&#34;x&#34;:75.6,&#34;y&#34;:0.159},{&#34;x&#34;:75.89,&#34;y&#34;:0.164},{&#34;x&#34;:76.19,&#34;y&#34;:0.168},{&#34;x&#34;:76.49,&#34;y&#34;:0.173},{&#34;x&#34;:76.79,&#34;y&#34;:0.178},{&#34;x&#34;:77.08,&#34;y&#34;:0.183},{&#34;x&#34;:77.38,&#34;y&#34;:0.189},{&#34;x&#34;:77.68,&#34;y&#34;:0.194},{&#34;x&#34;:77.98,&#34;y&#34;:0.2},{&#34;x&#34;:78.27,&#34;y&#34;:0.206},{&#34;x&#34;:78.57,&#34;y&#34;:0.212},{&#34;x&#34;:78.87,&#34;y&#34;:0.218},{&#34;x&#34;:79.17,&#34;y&#34;:0.225},{&#34;x&#34;:79.46,&#34;y&#34;:0.232},{&#34;x&#34;:79.76,&#34;y&#34;:0.239},{&#34;x&#34;:80.06,&#34;y&#34;:0.247},{&#34;x&#34;:80.36,&#34;y&#34;:0.255},{&#34;x&#34;:80.65,&#34;y&#34;:0.263},{&#34;x&#34;:80.95,&#34;y&#34;:0.27},{&#34;x&#34;:81.25,&#34;y&#34;:0.279},{&#34;x&#34;:81.55,&#34;y&#34;:0.287},{&#34;x&#34;:81.85,&#34;y&#34;:0.297},{&#34;x&#34;:82.14,&#34;y&#34;:0.307},{&#34;x&#34;:82.44,&#34;y&#34;:0.318},{&#34;x&#34;:82.74,&#34;y&#34;:0.33},{&#34;x&#34;:83.04,&#34;y&#34;:0.342},{&#34;x&#34;:83.33,&#34;y&#34;:0.355},{&#34;x&#34;:83.63,&#34;y&#34;:0.369},{&#34;x&#34;:83.93,&#34;y&#34;:0.384},{&#34;x&#34;:84.23,&#34;y&#34;:0.4},{&#34;x&#34;:84.52,&#34;y&#34;:0.415},{&#34;x&#34;:84.82,&#34;y&#34;:0.432},{&#34;x&#34;:85.12,&#34;y&#34;:0.449},{&#34;x&#34;:85.42,&#34;y&#34;:0.466},{&#34;x&#34;:85.71,&#34;y&#34;:0.484},{&#34;x&#34;:86.01,&#34;y&#34;:0.501},{&#34;x&#34;:86.31,&#34;y&#34;:0.526},{&#34;x&#34;:86.61,&#34;y&#34;:0.551},{&#34;x&#34;:86.9,&#34;y&#34;:0.577},{&#34;x&#34;:87.2,&#34;y&#34;:0.603},{&#34;x&#34;:87.5,&#34;y&#34;:0.631},{&#34;x&#34;:87.8,&#34;y&#34;:0.659},{&#34;x&#34;:88.1,&#34;y&#34;:0.688},{&#34;x&#34;:88.39,&#34;y&#34;:0.718},{&#34;x&#34;:88.69,&#34;y&#34;:0.751},{&#34;x&#34;:88.99,&#34;y&#34;:0.787},{&#34;x&#34;:89.29,&#34;y&#34;:0.831},{&#34;x&#34;:89.58,&#34;y&#34;:0.88},{&#34;x&#34;:89.88,&#34;y&#34;:0.929},{&#34;x&#34;:90.18,&#34;y&#34;:0.979},{&#34;x&#34;:90.48,&#34;y&#34;:1.031},{&#34;x&#34;:90.77,&#34;y&#34;:1.084},{&#34;x&#34;:91.07,&#34;y&#34;:1.139},{&#34;x&#34;:91.37,&#34;y&#34;:1.205},{&#34;x&#34;:91.67,&#34;y&#34;:1.277},{&#34;x&#34;:91.96,&#34;y&#34;:1.348},{&#34;x&#34;:92.26,&#34;y&#34;:1.428},{&#34;x&#34;:92.56,&#34;y&#34;:1.512},{&#34;x&#34;:92.86,&#34;y&#34;:1.602},{&#34;x&#34;:93.15,&#34;y&#34;:1.701},{&#34;x&#34;:93.45,&#34;y&#34;:1.808},{&#34;x&#34;:93.75,&#34;y&#34;:1.93},{&#34;x&#34;:94.05,&#34;y&#34;:2.061},{&#34;x&#34;:94.35,&#34;y&#34;:2.194},{&#34;x&#34;:94.64,&#34;y&#34;:2.357},{&#34;x&#34;:94.94,&#34;y&#34;:2.584},{&#34;x&#34;:95.24,&#34;y&#34;:2.845},{&#34;x&#34;:95.54,&#34;y&#34;:3.226},{&#34;x&#34;:95.83,&#34;y&#34;:3.625},{&#34;x&#34;:96.13,&#34;y&#34;:4.345},{&#34;x&#34;:96.43,&#34;y&#34;:5.089},{&#34;x&#34;:96.73,&#34;y&#34;:5.86},{&#34;x&#34;:97.02,&#34;y&#34;:6.696},{&#34;x&#34;:97.32,&#34;y&#34;:7.642},{&#34;x&#34;:97.62,&#34;y&#34;:9.124},{&#34;x&#34;:97.92,&#34;y&#34;:10.954},{&#34;x&#34;:98.21,&#34;y&#34;:13.384},{&#34;x&#34;:98.51,&#34;y&#34;:16.34},{&#34;x&#34;:98.81,&#34;y&#34;:20.45},{&#34;x&#34;:99.11,&#34;y&#34;:25.634},{&#34;x&#34;:99.4,&#34;y&#34;:31.675},{&#34;x&#34;:99.7,&#34;y&#34;:53.505},{&#34;x&#34;:100.0,&#34;y&#34;:100.0}]},&#34;mark&#34;:{&#34;type&#34;:&#34;line&#34;,&#34;color&#34;:&#34;#00aeff&#34;,&#34;tooltip&#34;:true},&#34;encoding&#34;:{&#34;x&#34;:{&#34;field&#34;:&#34;x&#34;,&#34;type&#34;:&#34;quantitative&#34;,&#34;title&#34;:&#34;Cumulative % of links (fewest measurements first)&#34;,&#34;scale&#34;:{&#34;domain&#34;:[0,100]}},&#34;y&#34;:{&#34;field&#34;:&#34;y&#34;,&#34;type&#34;:&#34;quantitative&#34;,&#34;title&#34;:&#34;Cumulative % of measurements&#34;,&#34;scale&#34;:{&#34;domain&#34;:[0,100]}}}}]}&lt;/vegachart&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;The Lorenz curve runs almost flat along the bottom and only shoots up at the very end. The 90% of links with the fewest measurements add up to just 0.93% of the total, and even the bottom 99% account for only 20.45%. The top 4 links take about 79.5%, and the single largest (DW&#39;s Global media, id &lt;code&gt;10006&lt;/code&gt;) is 46.5% on its own.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Which bucket each link&#39;s lifetime measurement count falls into &lt;vegachart style=&#39;width: 100%&#39; class=&#34;vegalite&#34;&gt;{&#34;description&#34;:&#34;Distribution of lifetime measurement counts per link&#34;,&#34;data&#34;:{&#34;values&#34;:[{&#34;bucket&#34;:&#34;= 0&#34;,&#34;links&#34;:112,&#34;share&#34;:0.0,&#34;order&#34;:0},{&#34;bucket&#34;:&#34;1–99&#34;,&#34;links&#34;:81,&#34;share&#34;:0.0,&#34;order&#34;:1},{&#34;bucket&#34;:&#34;100–999&#34;,&#34;links&#34;:73,&#34;share&#34;:0.2,&#34;order&#34;:2},{&#34;bucket&#34;:&#34;1k–9999&#34;,&#34;links&#34;:41,&#34;share&#34;:1.0,&#34;order&#34;:3},{&#34;bucket&#34;:&#34;10k–99k&#34;,&#34;links&#34;:15,&#34;share&#34;:2.4,&#34;order&#34;:4},{&#34;bucket&#34;:&#34;100k–999k&#34;,&#34;links&#34;:12,&#34;share&#34;:28.0,&#34;order&#34;:5},{&#34;bucket&#34;:&#34;1M+&#34;,&#34;links&#34;:2,&#34;share&#34;:68.3,&#34;order&#34;:6}]},&#34;mark&#34;:{&#34;type&#34;:&#34;bar&#34;,&#34;tooltip&#34;:true,&#34;color&#34;:&#34;#0089bf&#34;},&#34;encoding&#34;:{&#34;x&#34;:{&#34;field&#34;:&#34;bucket&#34;,&#34;type&#34;:&#34;ordinal&#34;,&#34;sort&#34;:{&#34;field&#34;:&#34;order&#34;},&#34;title&#34;:&#34;Lifetime measurements (bucket)&#34;,&#34;axis&#34;:{&#34;labelAngle&#34;:-30}},&#34;y&#34;:{&#34;field&#34;:&#34;links&#34;,&#34;type&#34;:&#34;quantitative&#34;,&#34;title&#34;:&#34;Links&#34;},&#34;tooltip&#34;:[{&#34;field&#34;:&#34;bucket&#34;,&#34;title&#34;:&#34;Bucket&#34;},{&#34;field&#34;:&#34;links&#34;,&#34;title&#34;:&#34;Links&#34;},{&#34;field&#34;:&#34;share&#34;,&#34;title&#34;:&#34;% of all measurements&#34;}]}}&lt;/vegachart&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;At the other end of the tail, 112 of the 336 links (33%) have zero lifetime measurements, built and then barely run. 193 (57%) have fewer than 100, and the overall median is just 27. Most Run v2 links get created, run a few times, and stop.&lt;/p&gt; &lt;h2 id=&#34;Where-the-measurements-concentrate&#34;&gt;Where the measurements concentrate&lt;a class=&#34;headerlink&#34; href=&#34;#Where-the-measurements-concentrate&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;The concentration above only describes the shape of the distribution, not what the data is actually used for. Once the links are grouped by list topic, the most heavily-observed cohorts show a common way of working.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Share of all measurements by use case (orange is the anoni.net community) &lt;vegachart style=&#39;width: 100%&#39; class=&#34;vegalite&#34;&gt;{&#34;description&#34;:&#34;Share of all measurements by use-case cohort&#34;,&#34;data&#34;:{&#34;values&#34;:[{&#34;group&#34;:&#34;DW (international media)&#34;,&#34;share&#34;:72.4,&#34;links&#34;:3,&#34;measurements&#34;:10265315},{&#34;group&#34;:&#34;Spain / LaLiga blocking&#34;,&#34;share&#34;:10.8,&#34;links&#34;:13,&#34;measurements&#34;:1529544},{&#34;group&#34;:&#34;Venezuela / VeSinFiltro&#34;,&#34;share&#34;:6.5,&#34;links&#34;:4,&#34;measurements&#34;:925351},{&#34;group&#34;:&#34;Uruguay / UCU research&#34;,&#34;share&#34;:6.1,&#34;links&#34;:49,&#34;measurements&#34;:863016},{&#34;group&#34;:&#34;Long tail (other)&#34;,&#34;share&#34;:2.1,&#34;links&#34;:199,&#34;measurements&#34;:300815},{&#34;group&#34;:&#34;Thailand gov sites&#34;,&#34;share&#34;:1.7,&#34;links&#34;:2,&#34;measurements&#34;:239430},{&#34;group&#34;:&#34;OONI official&#34;,&#34;share&#34;:0.3,&#34;links&#34;:59,&#34;measurements&#34;:43385},{&#34;group&#34;:&#34;anoni.net (Taiwan)&#34;,&#34;share&#34;:0.0,&#34;links&#34;:7,&#34;measurements&#34;:4771}]},&#34;mark&#34;:{&#34;type&#34;:&#34;bar&#34;,&#34;tooltip&#34;:true},&#34;encoding&#34;:{&#34;y&#34;:{&#34;field&#34;:&#34;group&#34;,&#34;type&#34;:&#34;nominal&#34;,&#34;sort&#34;:&#34;-x&#34;,&#34;title&#34;:null},&#34;x&#34;:{&#34;field&#34;:&#34;share&#34;,&#34;type&#34;:&#34;quantitative&#34;,&#34;title&#34;:&#34;% of all measurements&#34;},&#34;color&#34;:{&#34;condition&#34;:{&#34;test&#34;:&#34;datum.group == &#39;anoni.net (Taiwan)&#39;&#34;,&#34;value&#34;:&#34;#ef6c00&#34;},&#34;value&#34;:&#34;#00aeff&#34;},&#34;tooltip&#34;:[{&#34;field&#34;:&#34;group&#34;,&#34;title&#34;:&#34;Use case&#34;},{&#34;field&#34;:&#34;links&#34;,&#34;title&#34;:&#34;Links&#34;},{&#34;field&#34;:&#34;measurements&#34;,&#34;title&#34;:&#34;Measurements&#34;},{&#34;field&#34;:&#34;share&#34;,&#34;title&#34;:&#34;Share %&#34;}]}}&lt;/vegachart&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Deutsche Welle (DW) uses 3 lists to continuously monitor the reachability of international media across many places, taking 72.4%. Spain&#39;s conexionsegura uses 13 lists to watch the piracy blocks ordered by the LaLiga football league, at 10.8%. Venezuela&#39;s vesinfiltro uses 4 lists to track local blocking, at 6.5%. Add Uruguay&#39;s UCU research team and an observer who has long tested Thai government websites. The most heavily-observed cohorts share a clear common thread: each list targets one specific censorship or blocking phenomenon, paired with a continuously-running measurement backend that watches it day after day. That is the underestimated way to use it.&lt;/p&gt; &lt;p&gt;Listing the top 15 links by measurement count makes the same pattern concrete.&lt;/p&gt; &lt;table&gt; &lt;thead&gt; &lt;tr&gt; &lt;th&gt;link id&lt;/th&gt; &lt;th style=&#34;text-align: right;&#34;&gt;Lifetime measurements&lt;/th&gt; &lt;th style=&#34;text-align: right;&#34;&gt;List size&lt;/th&gt; &lt;th&gt;Created&lt;/th&gt; &lt;th&gt;Author&lt;/th&gt; &lt;th&gt;List name&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;10006&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;6,589,070&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;223&lt;/td&gt; &lt;td&gt;2024-07-03&lt;/td&gt; &lt;td&gt;dw.com&lt;/td&gt; &lt;td&gt;Global media&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;10005&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;3,093,765&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;91&lt;/td&gt; &lt;td&gt;2024-06-13&lt;/td&gt; &lt;td&gt;dw.com&lt;/td&gt; &lt;td&gt;Selected (inter)national media&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;10236&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;856,036&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;167&lt;/td&gt; &lt;td&gt;2026-05-14&lt;/td&gt; &lt;td&gt;conexionsegura&lt;/td&gt; &lt;td&gt;La Liga bloqueos.es&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;10158&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;734,627&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;4635&lt;/td&gt; &lt;td&gt;2025-04-03&lt;/td&gt; &lt;td&gt;ucu (UY)&lt;/td&gt; &lt;td&gt;lista global final&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;10004&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;582,480&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;15&lt;/td&gt; &lt;td&gt;2024-12-11&lt;/td&gt; &lt;td&gt;dw.com&lt;/td&gt; &lt;td&gt;Trusted International Media&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;10154&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;418,978&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;131&lt;/td&gt; &lt;td&gt;2025-03-26&lt;/td&gt; &lt;td&gt;vesinfiltro&lt;/td&gt; &lt;td&gt;MagisTV y FlujoTV&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;10135&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;344,268&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;819&lt;/td&gt; &lt;td&gt;2025-04-16&lt;/td&gt; &lt;td&gt;conexionsegura&lt;/td&gt; &lt;td&gt;Test Bloqueos LaLiga&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;10153&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;259,331&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;102&lt;/td&gt; &lt;td&gt;2025-03-24&lt;/td&gt; &lt;td&gt;vesinfiltro&lt;/td&gt; &lt;td&gt;PriorityList&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;10143&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;210,078&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;134&lt;/td&gt; &lt;td&gt;2025-03-05&lt;/td&gt; &lt;td&gt;vesinfiltro&lt;/td&gt; &lt;td&gt;VSF News y otros&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;10298&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;133,991&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;72&lt;/td&gt; &lt;td&gt;2026-05-04&lt;/td&gt; &lt;td&gt;Thailand observer&lt;/td&gt; &lt;td&gt;Test Thai gov websites&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;10226&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;118,509&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;170&lt;/td&gt; &lt;td&gt;2025-09-15&lt;/td&gt; &lt;td&gt;conexionsegura&lt;/td&gt; &lt;td&gt;Bloqueos LaLiga - Dominios&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;10235&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;109,276&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;293&lt;/td&gt; &lt;td&gt;2025-09-20&lt;/td&gt; &lt;td&gt;conexionsegura&lt;/td&gt; &lt;td&gt;VE media http+https check&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;10214&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;105,439&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;67&lt;/td&gt; &lt;td&gt;2025-10-04&lt;/td&gt; &lt;td&gt;Thailand observer&lt;/td&gt; &lt;td&gt;Test Thai gov websites&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;10114&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;102,096&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;256&lt;/td&gt; &lt;td&gt;2026-05-05&lt;/td&gt; &lt;td&gt;jiyul.org&lt;/td&gt; &lt;td&gt;revi&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;10118&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;56,541&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;3044&lt;/td&gt; &lt;td&gt;2025-03-26&lt;/td&gt; &lt;td&gt;ucu (UY)&lt;/td&gt; &lt;td&gt;LISTA GLOBAL&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;h2 id=&#34;Long-term-observation-comes-from-a-continuously-running-backend-list-size-barely-matters&#34;&gt;Long-term observation comes from a continuously-running backend, list size barely matters&lt;a class=&#34;headerlink&#34; href=&#34;#Long-term-observation-comes-from-a-continuously-running-backend-list-size-barely-matters&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;An intuitive guess is that the more sites a list collects, the more data it produces. The data does not support that guess. Plotting each link&#39;s list size (number of inputs) against its lifetime measurements shows almost no relationship.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;List size vs lifetime measurements (orange = anoni.net&#39;s two links; 2 links with 0 inputs are dropped by the log axis) &lt;vegachart style=&#39;width: 100%&#39; class=&#34;vegalite&#34;&gt;{&#34;description&#34;:&#34;List size (inputs) vs lifetime measurements per link&#34;,&#34;data&#34;:{&#34;values&#34;:[{&#34;id&#34;:10000,&#34;inputs&#34;:3,&#34;measurements&#34;:0,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10001,&#34;inputs&#34;:3,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10002,&#34;inputs&#34;:3,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10003,&#34;inputs&#34;:2,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10004,&#34;inputs&#34;:15,&#34;measurements&#34;:582480,&#34;group&#34;:&#34;DW (international media)&#34;},{&#34;id&#34;:10005,&#34;inputs&#34;:91,&#34;measurements&#34;:3093765,&#34;group&#34;:&#34;DW (international media)&#34;},{&#34;id&#34;:10006,&#34;inputs&#34;:223,&#34;measurements&#34;:6589070,&#34;group&#34;:&#34;DW (international media)&#34;},{&#34;id&#34;:10007,&#34;inputs&#34;:10,&#34;measurements&#34;:32,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10008,&#34;inputs&#34;:1,&#34;measurements&#34;:2,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10010,&#34;inputs&#34;:3332,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10012,&#34;inputs&#34;:3,&#34;measurements&#34;:6,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10013,&#34;inputs&#34;:6,&#34;measurements&#34;:333,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10014,&#34;inputs&#34;:5,&#34;measurements&#34;:79,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10015,&#34;inputs&#34;:5,&#34;measurements&#34;:230,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10016,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10017,&#34;inputs&#34;:3,&#34;measurements&#34;:150,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10018,&#34;inputs&#34;:8,&#34;measurements&#34;:16,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10019,&#34;inputs&#34;:6,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10020,&#34;inputs&#34;:46,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10021,&#34;inputs&#34;:2,&#34;measurements&#34;:0,&#34;group&#34;:&#34;anoni.net (Taiwan)&#34;},{&#34;id&#34;:10022,&#34;inputs&#34;:3,&#34;measurements&#34;:0,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10023,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10024,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10025,&#34;inputs&#34;:1,&#34;measurements&#34;:71,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10026,&#34;inputs&#34;:28,&#34;measurements&#34;:2520,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10027,&#34;inputs&#34;:2,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10028,&#34;inputs&#34;:27,&#34;measurements&#34;:180,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10029,&#34;inputs&#34;:4,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10030,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10031,&#34;inputs&#34;:5,&#34;measurements&#34;:495,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10032,&#34;inputs&#34;:4,&#34;measurements&#34;:296,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10033,&#34;inputs&#34;:1,&#34;measurements&#34;:15,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10034,&#34;inputs&#34;:7,&#34;measurements&#34;:0,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10035,&#34;inputs&#34;:7,&#34;measurements&#34;:0,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10036,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10037,&#34;inputs&#34;:1,&#34;measurements&#34;:4,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10038,&#34;inputs&#34;:10,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10039,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10040,&#34;inputs&#34;:10,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10041,&#34;inputs&#34;:50,&#34;measurements&#34;:4214,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10042,&#34;inputs&#34;:13,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10043,&#34;inputs&#34;:45,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10044,&#34;inputs&#34;:7,&#34;measurements&#34;:464,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10045,&#34;inputs&#34;:549,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10046,&#34;inputs&#34;:56,&#34;measurements&#34;:56,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10047,&#34;inputs&#34;:7,&#34;measurements&#34;:154,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10048,&#34;inputs&#34;:7,&#34;measurements&#34;:21,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10049,&#34;inputs&#34;:3338,&#34;measurements&#34;:14058,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10050,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10051,&#34;inputs&#34;:18,&#34;measurements&#34;:3861,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10052,&#34;inputs&#34;:48,&#34;measurements&#34;:0,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10053,&#34;inputs&#34;:21,&#34;measurements&#34;:0,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10054,&#34;inputs&#34;:28,&#34;measurements&#34;:0,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10055,&#34;inputs&#34;:27,&#34;measurements&#34;:0,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10056,&#34;inputs&#34;:20,&#34;measurements&#34;:0,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10057,&#34;inputs&#34;:26,&#34;measurements&#34;:0,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10058,&#34;inputs&#34;:4,&#34;measurements&#34;:0,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10059,&#34;inputs&#34;:38,&#34;measurements&#34;:0,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10060,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10061,&#34;inputs&#34;:204,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10062,&#34;inputs&#34;:204,&#34;measurements&#34;:204,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10063,&#34;inputs&#34;:1264,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10064,&#34;inputs&#34;:1250,&#34;measurements&#34;:1264,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10065,&#34;inputs&#34;:1063,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10066,&#34;inputs&#34;:638,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10067,&#34;inputs&#34;:618,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10068,&#34;inputs&#34;:2,&#34;measurements&#34;:54,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10069,&#34;inputs&#34;:3,&#34;measurements&#34;:0,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10070,&#34;inputs&#34;:3,&#34;measurements&#34;:0,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10071,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10072,&#34;inputs&#34;:1,&#34;measurements&#34;:2,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10073,&#34;inputs&#34;:1098,&#34;measurements&#34;:1098,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10074,&#34;inputs&#34;:611,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10075,&#34;inputs&#34;:390,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10076,&#34;inputs&#34;:1410,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10077,&#34;inputs&#34;:441,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10078,&#34;inputs&#34;:473,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10079,&#34;inputs&#34;:829,&#34;measurements&#34;:507,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10080,&#34;inputs&#34;:6,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10081,&#34;inputs&#34;:1069,&#34;measurements&#34;:1150,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10082,&#34;inputs&#34;:640,&#34;measurements&#34;:640,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10083,&#34;inputs&#34;:833,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10084,&#34;inputs&#34;:670,&#34;measurements&#34;:670,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10085,&#34;inputs&#34;:425,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10086,&#34;inputs&#34;:316,&#34;measurements&#34;:632,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10087,&#34;inputs&#34;:370,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10088,&#34;inputs&#34;:171,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10089,&#34;inputs&#34;:831,&#34;measurements&#34;:1662,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10090,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10091,&#34;inputs&#34;:1433,&#34;measurements&#34;:7039,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10092,&#34;inputs&#34;:2217,&#34;measurements&#34;:10137,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10093,&#34;inputs&#34;:1062,&#34;measurements&#34;:1062,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10094,&#34;inputs&#34;:1686,&#34;measurements&#34;:32171,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10095,&#34;inputs&#34;:780,&#34;measurements&#34;:780,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10096,&#34;inputs&#34;:992,&#34;measurements&#34;:3561,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10097,&#34;inputs&#34;:433,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10098,&#34;inputs&#34;:412,&#34;measurements&#34;:441,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10099,&#34;inputs&#34;:838,&#34;measurements&#34;:1676,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10100,&#34;inputs&#34;:4,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10101,&#34;inputs&#34;:1,&#34;measurements&#34;:130,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10102,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10103,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10104,&#34;inputs&#34;:821,&#34;measurements&#34;:821,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10105,&#34;inputs&#34;:7,&#34;measurements&#34;:98,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10106,&#34;inputs&#34;:1,&#34;measurements&#34;:1,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10107,&#34;inputs&#34;:3,&#34;measurements&#34;:1305,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10108,&#34;inputs&#34;:5,&#34;measurements&#34;:13,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10109,&#34;inputs&#34;:9,&#34;measurements&#34;:9,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10110,&#34;inputs&#34;:4,&#34;measurements&#34;:6,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10111,&#34;inputs&#34;:2,&#34;measurements&#34;:2,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10112,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10113,&#34;inputs&#34;:1,&#34;measurements&#34;:1,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10114,&#34;inputs&#34;:256,&#34;measurements&#34;:102096,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10115,&#34;inputs&#34;:2,&#34;measurements&#34;:1,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10116,&#34;inputs&#34;:1,&#34;measurements&#34;:103,&#34;group&#34;:&#34;Spain / LaLiga blocking&#34;},{&#34;id&#34;:10117,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10118,&#34;inputs&#34;:3044,&#34;measurements&#34;:56541,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10119,&#34;inputs&#34;:24,&#34;measurements&#34;:2424,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10120,&#34;inputs&#34;:2,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10121,&#34;inputs&#34;:4,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10122,&#34;inputs&#34;:14,&#34;measurements&#34;:36964,&#34;group&#34;:&#34;Venezuela / VeSinFiltro&#34;},{&#34;id&#34;:10123,&#34;inputs&#34;:5,&#34;measurements&#34;:5,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10124,&#34;inputs&#34;:3,&#34;measurements&#34;:129,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10125,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10126,&#34;inputs&#34;:1,&#34;measurements&#34;:1,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10127,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10128,&#34;inputs&#34;:4,&#34;measurements&#34;:20,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10129,&#34;inputs&#34;:1,&#34;measurements&#34;:1,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10130,&#34;inputs&#34;:1,&#34;measurements&#34;:1,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10131,&#34;inputs&#34;:42,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10132,&#34;inputs&#34;:3,&#34;measurements&#34;:3,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10133,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10134,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10135,&#34;inputs&#34;:819,&#34;measurements&#34;:344268,&#34;group&#34;:&#34;Spain / LaLiga blocking&#34;},{&#34;id&#34;:10136,&#34;inputs&#34;:9,&#34;measurements&#34;:9,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10137,&#34;inputs&#34;:5,&#34;measurements&#34;:185,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10138,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10139,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10140,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Spain / LaLiga blocking&#34;},{&#34;id&#34;:10141,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10142,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10143,&#34;inputs&#34;:134,&#34;measurements&#34;:210078,&#34;group&#34;:&#34;Venezuela / VeSinFiltro&#34;},{&#34;id&#34;:10144,&#34;inputs&#34;:4,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10145,&#34;inputs&#34;:2,&#34;measurements&#34;:6,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10146,&#34;inputs&#34;:2,&#34;measurements&#34;:2,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10147,&#34;inputs&#34;:25,&#34;measurements&#34;:1029,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10148,&#34;inputs&#34;:23,&#34;measurements&#34;:6182,&#34;group&#34;:&#34;Spain / LaLiga blocking&#34;},{&#34;id&#34;:10149,&#34;inputs&#34;:5,&#34;measurements&#34;:110,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10150,&#34;inputs&#34;:1,&#34;measurements&#34;:7,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10151,&#34;inputs&#34;:14,&#34;measurements&#34;:27,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10152,&#34;inputs&#34;:1,&#34;measurements&#34;:8,&#34;group&#34;:&#34;Spain / LaLiga blocking&#34;},{&#34;id&#34;:10153,&#34;inputs&#34;:102,&#34;measurements&#34;:259331,&#34;group&#34;:&#34;Venezuela / VeSinFiltro&#34;},{&#34;id&#34;:10154,&#34;inputs&#34;:131,&#34;measurements&#34;:418978,&#34;group&#34;:&#34;Venezuela / VeSinFiltro&#34;},{&#34;id&#34;:10155,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10156,&#34;inputs&#34;:4,&#34;measurements&#34;:316,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10157,&#34;inputs&#34;:1,&#34;measurements&#34;:1,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10158,&#34;inputs&#34;:4635,&#34;measurements&#34;:734627,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10159,&#34;inputs&#34;:3,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10160,&#34;inputs&#34;:500,&#34;measurements&#34;:1501,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10161,&#34;inputs&#34;:500,&#34;measurements&#34;:505,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10162,&#34;inputs&#34;:500,&#34;measurements&#34;:501,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10163,&#34;inputs&#34;:500,&#34;measurements&#34;:502,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10164,&#34;inputs&#34;:500,&#34;measurements&#34;:500,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10165,&#34;inputs&#34;:500,&#34;measurements&#34;:502,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10166,&#34;inputs&#34;:500,&#34;measurements&#34;:506,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10167,&#34;inputs&#34;:500,&#34;measurements&#34;:505,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10168,&#34;inputs&#34;:500,&#34;measurements&#34;:500,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10169,&#34;inputs&#34;:134,&#34;measurements&#34;:268,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10170,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10171,&#34;inputs&#34;:22,&#34;measurements&#34;:44,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10172,&#34;inputs&#34;:11,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10173,&#34;inputs&#34;:3,&#34;measurements&#34;:7379,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10174,&#34;inputs&#34;:2,&#34;measurements&#34;:4,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10175,&#34;inputs&#34;:15,&#34;measurements&#34;:700,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10176,&#34;inputs&#34;:214,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10177,&#34;inputs&#34;:2,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10178,&#34;inputs&#34;:2,&#34;measurements&#34;:0,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10179,&#34;inputs&#34;:3,&#34;measurements&#34;:75,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10180,&#34;inputs&#34;:3,&#34;measurements&#34;:246,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10181,&#34;inputs&#34;:20,&#34;measurements&#34;:2240,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10182,&#34;inputs&#34;:3,&#34;measurements&#34;:60,&#34;group&#34;:&#34;anoni.net (Taiwan)&#34;},{&#34;id&#34;:10183,&#34;inputs&#34;:166,&#34;measurements&#34;:333,&#34;group&#34;:&#34;Uruguay / UCU research&#34;},{&#34;id&#34;:10184,&#34;inputs&#34;:2,&#34;measurements&#34;:4,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10185,&#34;inputs&#34;:22,&#34;measurements&#34;:20,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10186,&#34;inputs&#34;:2,&#34;measurements&#34;:2,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10187,&#34;inputs&#34;:2,&#34;measurements&#34;:2,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10188,&#34;inputs&#34;:2,&#34;measurements&#34;:2,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10189,&#34;inputs&#34;:4,&#34;measurements&#34;:17,&#34;group&#34;:&#34;anoni.net (Taiwan)&#34;},{&#34;id&#34;:10190,&#34;inputs&#34;:2,&#34;measurements&#34;:0,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10191,&#34;inputs&#34;:3,&#34;measurements&#34;:0,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10192,&#34;inputs&#34;:13,&#34;measurements&#34;:82,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10193,&#34;inputs&#34;:3,&#34;measurements&#34;:3,&#34;group&#34;:&#34;anoni.net (Taiwan)&#34;},{&#34;id&#34;:10194,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10195,&#34;inputs&#34;:5,&#34;measurements&#34;:27,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10196,&#34;inputs&#34;:610,&#34;measurements&#34;:610,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10197,&#34;inputs&#34;:490,&#34;measurements&#34;:490,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10198,&#34;inputs&#34;:673,&#34;measurements&#34;:673,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10199,&#34;inputs&#34;:1363,&#34;measurements&#34;:2036,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10200,&#34;inputs&#34;:1,&#34;measurements&#34;:141,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10201,&#34;inputs&#34;:298,&#34;measurements&#34;:298,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10202,&#34;inputs&#34;:1124,&#34;measurements&#34;:267,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10203,&#34;inputs&#34;:974,&#34;measurements&#34;:974,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10204,&#34;inputs&#34;:303,&#34;measurements&#34;:303,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10205,&#34;inputs&#34;:600,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10206,&#34;inputs&#34;:600,&#34;measurements&#34;:600,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10207,&#34;inputs&#34;:199,&#34;measurements&#34;:398,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10208,&#34;inputs&#34;:654,&#34;measurements&#34;:654,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10209,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10210,&#34;inputs&#34;:30,&#34;measurements&#34;:30,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10211,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10212,&#34;inputs&#34;:30,&#34;measurements&#34;:150,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10213,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10214,&#34;inputs&#34;:67,&#34;measurements&#34;:105439,&#34;group&#34;:&#34;Thailand gov sites&#34;},{&#34;id&#34;:10215,&#34;inputs&#34;:41,&#34;measurements&#34;:2378,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10216,&#34;inputs&#34;:2,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10217,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10218,&#34;inputs&#34;:1,&#34;measurements&#34;:4,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10219,&#34;inputs&#34;:2,&#34;measurements&#34;:2,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10220,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10221,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10222,&#34;inputs&#34;:1,&#34;measurements&#34;:9,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10223,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10224,&#34;inputs&#34;:7,&#34;measurements&#34;:364,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10225,&#34;inputs&#34;:30,&#34;measurements&#34;:349,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10226,&#34;inputs&#34;:170,&#34;measurements&#34;:118509,&#34;group&#34;:&#34;Spain / LaLiga blocking&#34;},{&#34;id&#34;:10227,&#34;inputs&#34;:35,&#34;measurements&#34;:0,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10228,&#34;inputs&#34;:1,&#34;measurements&#34;:4,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10229,&#34;inputs&#34;:2,&#34;measurements&#34;:60,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10230,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10231,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10232,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10233,&#34;inputs&#34;:2,&#34;measurements&#34;:0,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10234,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10235,&#34;inputs&#34;:293,&#34;measurements&#34;:109276,&#34;group&#34;:&#34;Spain / LaLiga blocking&#34;},{&#34;id&#34;:10236,&#34;inputs&#34;:167,&#34;measurements&#34;:856036,&#34;group&#34;:&#34;Spain / LaLiga blocking&#34;},{&#34;id&#34;:10237,&#34;inputs&#34;:9,&#34;measurements&#34;:18,&#34;group&#34;:&#34;anoni.net (Taiwan)&#34;},{&#34;id&#34;:10238,&#34;inputs&#34;:7,&#34;measurements&#34;:14,&#34;group&#34;:&#34;anoni.net (Taiwan)&#34;},{&#34;id&#34;:10239,&#34;inputs&#34;:20,&#34;measurements&#34;:11260,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10240,&#34;inputs&#34;:5,&#34;measurements&#34;:80,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10241,&#34;inputs&#34;:5,&#34;measurements&#34;:50,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10242,&#34;inputs&#34;:5,&#34;measurements&#34;:10,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10243,&#34;inputs&#34;:5,&#34;measurements&#34;:0,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10244,&#34;inputs&#34;:1,&#34;measurements&#34;:42,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10245,&#34;inputs&#34;:10,&#34;measurements&#34;:18577,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10246,&#34;inputs&#34;:4,&#34;measurements&#34;:1820,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10247,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10248,&#34;inputs&#34;:2,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10249,&#34;inputs&#34;:33,&#34;measurements&#34;:99,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10250,&#34;inputs&#34;:24,&#34;measurements&#34;:9464,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10251,&#34;inputs&#34;:269,&#34;measurements&#34;:18828,&#34;group&#34;:&#34;Spain / LaLiga blocking&#34;},{&#34;id&#34;:10252,&#34;inputs&#34;:8,&#34;measurements&#34;:17288,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10253,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10254,&#34;inputs&#34;:2,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10255,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10256,&#34;inputs&#34;:10,&#34;measurements&#34;:8,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10257,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10258,&#34;inputs&#34;:12,&#34;measurements&#34;:420,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10259,&#34;inputs&#34;:4,&#34;measurements&#34;:1550,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10260,&#34;inputs&#34;:104,&#34;measurements&#34;:15120,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10261,&#34;inputs&#34;:4,&#34;measurements&#34;:258,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10262,&#34;inputs&#34;:66,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10263,&#34;inputs&#34;:1,&#34;measurements&#34;:37,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10264,&#34;inputs&#34;:22,&#34;measurements&#34;:2127,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10265,&#34;inputs&#34;:7,&#34;measurements&#34;:5226,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10266,&#34;inputs&#34;:214,&#34;measurements&#34;:7672,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10267,&#34;inputs&#34;:1,&#34;measurements&#34;:35,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10268,&#34;inputs&#34;:3,&#34;measurements&#34;:3,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10269,&#34;inputs&#34;:1,&#34;measurements&#34;:34,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10270,&#34;inputs&#34;:214,&#34;measurements&#34;:7082,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10271,&#34;inputs&#34;:214,&#34;measurements&#34;:3671,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10272,&#34;inputs&#34;:16,&#34;measurements&#34;:353,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10273,&#34;inputs&#34;:10,&#34;measurements&#34;:200,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10274,&#34;inputs&#34;:19,&#34;measurements&#34;:380,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10275,&#34;inputs&#34;:1,&#34;measurements&#34;:20,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10276,&#34;inputs&#34;:20,&#34;measurements&#34;:384,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10277,&#34;inputs&#34;:36,&#34;measurements&#34;:756,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10278,&#34;inputs&#34;:55,&#34;measurements&#34;:1107,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10280,&#34;inputs&#34;:37,&#34;measurements&#34;:789,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10281,&#34;inputs&#34;:42,&#34;measurements&#34;:1051,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10282,&#34;inputs&#34;:38,&#34;measurements&#34;:883,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10283,&#34;inputs&#34;:27,&#34;measurements&#34;:567,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10284,&#34;inputs&#34;:6,&#34;measurements&#34;:10104,&#34;group&#34;:&#34;Spain / LaLiga blocking&#34;},{&#34;id&#34;:10285,&#34;inputs&#34;:22,&#34;measurements&#34;:54022,&#34;group&#34;:&#34;Spain / LaLiga blocking&#34;},{&#34;id&#34;:10286,&#34;inputs&#34;:31,&#34;measurements&#34;:746,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10287,&#34;inputs&#34;:3,&#34;measurements&#34;:2358,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10288,&#34;inputs&#34;:20,&#34;measurements&#34;:473,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10289,&#34;inputs&#34;:1,&#34;measurements&#34;:1,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10290,&#34;inputs&#34;:1,&#34;measurements&#34;:24,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10291,&#34;inputs&#34;:61,&#34;measurements&#34;:2501,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10292,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10293,&#34;inputs&#34;:154,&#34;measurements&#34;:11938,&#34;group&#34;:&#34;Spain / LaLiga blocking&#34;},{&#34;id&#34;:10294,&#34;inputs&#34;:3,&#34;measurements&#34;:72,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10295,&#34;inputs&#34;:1,&#34;measurements&#34;:24,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10296,&#34;inputs&#34;:17,&#34;measurements&#34;:459,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10297,&#34;inputs&#34;:22,&#34;measurements&#34;:4122,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10298,&#34;inputs&#34;:72,&#34;measurements&#34;:133991,&#34;group&#34;:&#34;Thailand gov sites&#34;},{&#34;id&#34;:10299,&#34;inputs&#34;:9,&#34;measurements&#34;:216,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10300,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10301,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10302,&#34;inputs&#34;:1,&#34;measurements&#34;:24,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10303,&#34;inputs&#34;:53,&#34;measurements&#34;:318,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10304,&#34;inputs&#34;:756,&#34;measurements&#34;:23102,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10305,&#34;inputs&#34;:54,&#34;measurements&#34;:2215,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10306,&#34;inputs&#34;:8,&#34;measurements&#34;:304,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10307,&#34;inputs&#34;:4,&#34;measurements&#34;:148,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10308,&#34;inputs&#34;:3,&#34;measurements&#34;:105,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10309,&#34;inputs&#34;:8,&#34;measurements&#34;:327,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10310,&#34;inputs&#34;:14,&#34;measurements&#34;:3988,&#34;group&#34;:&#34;OONI official&#34;},{&#34;id&#34;:10311,&#34;inputs&#34;:47,&#34;measurements&#34;:6887,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10312,&#34;inputs&#34;:25,&#34;measurements&#34;:7523,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10313,&#34;inputs&#34;:1082,&#34;measurements&#34;:3729,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10314,&#34;inputs&#34;:1,&#34;measurements&#34;:2,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10315,&#34;inputs&#34;:1,&#34;measurements&#34;:8,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10316,&#34;inputs&#34;:4,&#34;measurements&#34;:128,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10317,&#34;inputs&#34;:1,&#34;measurements&#34;:16,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10318,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10319,&#34;inputs&#34;:12,&#34;measurements&#34;:870,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10320,&#34;inputs&#34;:1,&#34;measurements&#34;:2,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10321,&#34;inputs&#34;:1,&#34;measurements&#34;:2,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10322,&#34;inputs&#34;:3,&#34;measurements&#34;:166,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10323,&#34;inputs&#34;:5,&#34;measurements&#34;:33,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10324,&#34;inputs&#34;:1082,&#34;measurements&#34;:31,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10325,&#34;inputs&#34;:2,&#34;measurements&#34;:51,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10326,&#34;inputs&#34;:3,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10327,&#34;inputs&#34;:25,&#34;measurements&#34;:3510,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10328,&#34;inputs&#34;:10,&#34;measurements&#34;:4659,&#34;group&#34;:&#34;anoni.net (Taiwan)&#34;},{&#34;id&#34;:10329,&#34;inputs&#34;:12,&#34;measurements&#34;:76,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10330,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10331,&#34;inputs&#34;:2,&#34;measurements&#34;:24,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10332,&#34;inputs&#34;:2,&#34;measurements&#34;:270,&#34;group&#34;:&#34;Spain / LaLiga blocking&#34;},{&#34;id&#34;:10333,&#34;inputs&#34;:1,&#34;measurements&#34;:0,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10334,&#34;inputs&#34;:33,&#34;measurements&#34;:12759,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10335,&#34;inputs&#34;:3,&#34;measurements&#34;:18,&#34;group&#34;:&#34;Long tail (other)&#34;},{&#34;id&#34;:10336,&#34;inputs&#34;:29,&#34;measurements&#34;:1110,&#34;group&#34;:&#34;Long tail (other)&#34;}]},&#34;mark&#34;:{&#34;type&#34;:&#34;point&#34;,&#34;filled&#34;:true,&#34;opacity&#34;:0.55,&#34;tooltip&#34;:true},&#34;encoding&#34;:{&#34;x&#34;:{&#34;field&#34;:&#34;inputs&#34;,&#34;type&#34;:&#34;quantitative&#34;,&#34;scale&#34;:{&#34;type&#34;:&#34;log&#34;},&#34;title&#34;:&#34;List size (inputs, log scale)&#34;},&#34;y&#34;:{&#34;field&#34;:&#34;measurements&#34;,&#34;type&#34;:&#34;quantitative&#34;,&#34;scale&#34;:{&#34;type&#34;:&#34;symlog&#34;},&#34;title&#34;:&#34;Lifetime measurements (symlog, incl. 0)&#34;},&#34;color&#34;:{&#34;condition&#34;:{&#34;test&#34;:&#34;datum.id == 10238 || datum.id == 10328&#34;,&#34;value&#34;:&#34;#ef6c00&#34;},&#34;value&#34;:&#34;#80d1ff&#34;},&#34;size&#34;:{&#34;condition&#34;:{&#34;test&#34;:&#34;datum.id == 10238 || datum.id == 10328&#34;,&#34;value&#34;:120},&#34;value&#34;:45},&#34;tooltip&#34;:[{&#34;field&#34;:&#34;id&#34;,&#34;title&#34;:&#34;link id&#34;},{&#34;field&#34;:&#34;inputs&#34;,&#34;title&#34;:&#34;List size&#34;},{&#34;field&#34;:&#34;measurements&#34;,&#34;title&#34;:&#34;Measurements&#34;},{&#34;field&#34;:&#34;group&#34;,&#34;title&#34;:&#34;Use case&#34;}]}}&lt;/vegachart&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;The two extremes are clearest. UCU&#39;s id &lt;code&gt;10158&lt;/code&gt; packed in 4,635 inputs (the largest on the network) for 734,627 lifetime measurements. DW&#39;s id &lt;code&gt;10004&lt;/code&gt; has only 15 inputs yet 582,480. No matter how big a list gets, without a continuously-running backend to execute it the measurement count stays near 0, which means no observation is happening. What actually lets observation accumulate is whether there is a measurement infrastructure that runs the list every day; how many sites it collects matters far less.&lt;/p&gt; &lt;h2 id=&#34;anoninets-own-coordinates-the-community-is-its-own-controlled-experiment&#34;&gt;anoni.net&#39;s own coordinates: the community is its own controlled experiment&lt;a class=&#34;headerlink&#34; href=&#34;#anoninets-own-coordinates-the-community-is-its-own-controlled-experiment&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;The anoni.net community has built two Run v2 links, which happen to demonstrate the two patterns above. We lay both out, not just the better-performing one.&lt;/p&gt; &lt;p&gt;The first, id &lt;code&gt;10238&lt;/code&gt;, was built on 2025-09-15 with 7 inputs (anoni.net plus our own services: im, matrix, form, pad, search, cinny) and has run only 14 measurements in its lifetime. It sits with the majority: built but not run continuously. The second, id &lt;code&gt;10328&lt;/code&gt;, was built on 2026-05-15, expanded to 10 inputs, and this time paired with a self-operated vantage point that runs continuously. In half a month it accumulated 4,659 measurements, ranking 39th of 336, inside the top 12%.&lt;/p&gt; &lt;p&gt;Same community, same draft list of anoni.net&#39;s own services; the only difference between the two links is whether a continuously-running backend stands behind it. We do not dodge the other side either: &lt;code&gt;10328&lt;/code&gt;&#39;s share of the whole network is still near 0%. In such a long-tailed distribution, just running continuously for half a month already beats 297 links, which shows how many people miss the &#34;run it continuously&#34; threshold. The move from &lt;code&gt;10238&lt;/code&gt; to &lt;code&gt;10328&lt;/code&gt; is the record of the community crossing that threshold itself.&lt;/p&gt; &lt;h2 id=&#34;What-it-means-for-communities-and-OONI&#34;&gt;What it means for communities and OONI&lt;a class=&#34;headerlink&#34; href=&#34;#What-it-means-for-communities-and-OONI&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;For communities that want to run local connectivity observation, the census points in a clear direction. Run v2&#39;s value comes from a curated list aimed at a specific phenomenon plus a continuously-running measurement backend; missing either one drops you into the long tail. Opening more links by itself brings no data.&lt;/p&gt; &lt;p&gt;The same pattern applies to many topics. The DW, conexionsegura, and vesinfiltro cases above are three already-running examples: international media reachability, sports-piracy blocking, and local blocking. If you want to start, here are a few directions to consider.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Election observation&lt;/strong&gt;: from before to after an election, continuously track the reachability of news media, candidate, and election-authority websites in a given region, recording any blocking or interference during the voting period, giving election observers and researchers an evidentiary time series.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Real-time observation of major events&lt;/strong&gt;: during protests, strikes, disasters, or shutdowns, continuously test independent media, messaging services (Signal, Telegram), and help-and-information sites, to see in real time which are blocked and when.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Specific communities and issues&lt;/strong&gt;: sites that are often blocked in some regions, such as LGBTQ+, religious minorities, women&#39;s rights, and human-rights organizations, observed longitudinally to accumulate evidence that research can cite.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Circumvention-tool availability&lt;/strong&gt;: track the official sites and download endpoints of VPNs, Tor, bridges, and other circumvention tools, whether they are still reachable in a given place and when blocking begins, which is especially useful for groups helping local people stay connected.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Cross-border media and diaspora communities&lt;/strong&gt;: the overseas media that diaspora communities rely on (for Chinese-language readers, for example RFA or Initium Media), observed for reachability differences across ASNs and changes over time.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Platform-level blocking events&lt;/strong&gt;: when an app or service is suddenly blocked in a country, quickly build a list and observe across ASNs, measuring the scope and the start and end times of the block, turning a single event into analyzable data.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Pick a topic you care about most, list a dozen or so relevant sites, and have one vantage point run it every day; within a few weeks you will have your own reachability time series to analyze. For OONI and data-analysis partners: the aggregation API supports filtering by &lt;code&gt;ooni_run_link_id&lt;/code&gt;, which makes a meta-analysis of the Run v2 ecosystem itself feasible. This report was produced exactly that way. The anoni.net community has written up this approach as a measurement-model proposal in &lt;a href=&#34;https://github.com/anoni-net/docs/issues/78&#34; target=&#34;_blank&#34;&gt;issue #78&lt;/a&gt;; the call for feedback is still open, and we welcome discussion from the community and the OONI team.&lt;/p&gt; &lt;div class=&#34;admonition info&#34;&gt; &lt;p class=&#34;admonition-title&#34;&gt;Summary of the issue #78 measurement model&lt;/p&gt; &lt;p&gt;Issue #78 proposes a civic-internet-watch measurement model that splits the system into two layers.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;List governance&lt;/strong&gt;: the community maintains its own list of civil-society websites, with the single source of truth in the community&#39;s git repo. Inclusion criteria, consultation status, and sensitivity tiers are all decided by the community according to local context, and the git history is itself the record of list governance.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Measurement and data&lt;/strong&gt;: using the standard Web Connectivity test, a Run v2 link generated from the list does the measuring. Volunteer phones and self-operated vantage points consume the same link and carry the same Run Link ID, and all results flow into OONI&#39;s public dataset, queryable via the OONI API and Explorer, citable by researchers, with no data lock-in.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;List governance does not churn the shared Citizen Lab &lt;code&gt;tw.csv&lt;/code&gt;, avoiding the breaks in long-term measurement time series that repeated edits to a shared list would cause. &lt;code&gt;tw.csv&lt;/code&gt; is demoted from a required path to optional, additive feedback: only mature, non-sensitive organizations are fed back additively in exchange for the cross-platform baseline, while sensitive organizations stay in the community-managed list and Run v2 and never enter a public PR.&lt;/p&gt; &lt;/div&gt; &lt;h2 id=&#34;Data-and-caveats&#34;&gt;Data and caveats&lt;a class=&#34;headerlink&#34; href=&#34;#Data-and-caveats&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;This report&#39;s data is a snapshot taken on 2026-06-01, pulled link by link from OONI&#39;s public aggregation API&lt;sup id=&#34;fnref2:1&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:1&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; (filtered by &lt;code&gt;ooni_run_link_id&lt;/code&gt;). Measurement counts keep growing over time, so re-querying later yields slightly higher numbers, while the shape of the concentration stays stable. A few caveats before reading the figures.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Measurement counts come from the aggregation API&#39;s &lt;code&gt;measurement_count&lt;/code&gt;, a point-in-time query as of 2026-06-01 that keeps growing.&lt;/li&gt; &lt;li&gt;The lifetime query spans &lt;code&gt;2024-01-01&lt;/code&gt; to &lt;code&gt;2026-06-30&lt;/code&gt;, covering the whole history of Run v2.&lt;/li&gt; &lt;li&gt;A link with 0 measurements may be a test or draft, and does not necessarily mean &#34;failure&#34;.&lt;/li&gt; &lt;li&gt;A link can be run by probes in any country; the use-case cohorts are inferred from list topic, not an official OONI label.&lt;/li&gt; &lt;li&gt;Full disclosure: the community&#39;s own two links (&lt;code&gt;10238&lt;/code&gt;, &lt;code&gt;10328&lt;/code&gt;) are both included in the analysis and discussion; we did not cherry-pick the better-performing &lt;code&gt;10328&lt;/code&gt;.&lt;/li&gt; &lt;/ul&gt; &lt;h2 id=&#34;Related-reading&#34;&gt;Related reading&lt;a class=&#34;headerlink&#34; href=&#34;#Related-reading&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&#34;https://ooni.org/support/ooni-run/&#34; target=&#34;_blank&#34;&gt;OONI Run, the official guide&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&#34;https://explorer.ooni.org/&#34; target=&#34;_blank&#34;&gt;OONI Explorer&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&#34;https://ooni.org/data/&#34; target=&#34;_blank&#34;&gt;OONI data and the public dataset&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&#34;../../05/2026-onionoo-mcp-public/&#34;&gt;onionoo MCP is now public: query the Tor relay network in plain language&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;script src=&#34;https://cdn.jsdelivr.net/npm/vega@5&#34;&gt;&lt;/script&gt; &lt;script src=&#34;https://cdn.jsdelivr.net/npm/vega-lite@5&#34;&gt;&lt;/script&gt; &lt;script src=&#34;https://cdn.jsdelivr.net/npm/vega-embed@6/build/vega-embed.min.js&#34;&gt;&lt;/script&gt; &lt;div class=&#34;footnote&#34;&gt; &lt;hr /&gt; &lt;ol&gt; &lt;li id=&#34;fn:1&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://api.ooni.org/&#34; target=&#34;_blank&#34;&gt;OONI API (aggregation endpoint)&lt;/a&gt; - OONI&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:1&#34; title=&#34;Jump back to footnote 1 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref2:1&#34; title=&#34;Jump back to footnote 1 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;/ol&gt; &lt;/div&gt;</description> <link>https://ipfs.anoni.net/en/blog/2026/06/2026-ooni-run-v2-usage-patterns/</link> <pubDate>Fri, 21 Aug 2026 18:09:43 +0000</pubDate> <source url="https://ipfs.anoni.net/en/feed_rss_updated.xml">anoni.net Docs — Sinophone Asia-Pacific Networked Freedom Observatory</source><guid isPermaLink="true">https://ipfs.anoni.net/en/blog/2026/06/2026-ooni-run-v2-usage-patterns/</guid> <enclosure url="https://ipfs.anoni.net/en/assets/images/social/blog/2026/06/2026-ooni-run-v2-usage-patterns.png" type="image/png" length="54955" /> </item> <item> <title>Thirty Minutes of Mobile Throttling in Northern Taiwan, Read from OONI&#39;s Public Data</title> <author>anoni.net Community</author> <category>Community</category> <category>OONI</category> <description>&lt;h1 id=&#34;Thirty-Minutes-of-Mobile-Throttling-in-Northern-Taiwan-Read-from-OONIs-Public-Data&#34;&gt;Thirty Minutes of Mobile Throttling in Northern Taiwan, Read from OONI&#39;s Public Data&lt;a class=&#34;headerlink&#34; href=&#34;#Thirty-Minutes-of-Mobile-Throttling-in-Northern-Taiwan-Read-from-OONIs-Public-Data&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt; &lt;p&gt;&lt;img alt=&#34;Measuring the mobile throttle of 13 August together&#34; src=&#34;../../../assets/images/ooni-run-v2.webp&#34; style=&#34;border-radius: 10px;box-shadow:1px 1px 0.6rem #00aeff;&#34; /&gt;&lt;/p&gt; &lt;p&gt;Taiwan has long gone without large-scale throttling or shutdowns. That is good for daily life, and for anyone trying to understand network anomalies it means there is no local sample to compare against. &lt;a href=&#34;https://ooni.org/about/&#34; target=&#34;_blank&#34;&gt;OONI&lt;/a&gt; is a long-running open source project measuring network interference and connection quality worldwide; anyone can install its app to contribute, and every result is published. Taiwan&#39;s record in that database has consistently shown a network working normally.&lt;/p&gt; &lt;p&gt;In the 30 days before 13 August, the three mobile carriers in Taiwan recorded 564 successful connection speed tests (the test is named &lt;code&gt;ndt&lt;/code&gt;), with a median download of &lt;code&gt;12,425&lt;/code&gt; kbit/s and only 4 measurements below &lt;code&gt;2,000&lt;/code&gt; kbit/s, two of which were failures. kbit/s counts thousands of bits transferred per second — higher is faster, and &lt;code&gt;1,000&lt;/code&gt; kbit/s is roughly 1 Mbps.&lt;/p&gt; &lt;p&gt;From 14:30 to 15:00 Taipei time on 13 August, mobile networks across seven northern counties were throttled for 30 minutes. &lt;a href=&#34;../ooni-mobile-throttle-drill/&#34;&gt;Two days earlier the community put out a call&lt;/a&gt; asking people to run OONI Probe&#39;s performance tests during that window. Taiwan recorded 238 connection speed tests and 235 video streaming tests (named &lt;code&gt;dash&lt;/code&gt;) that day, with 170 and 168 of them completed on mobile networks, coming from 47 devices. During the equivalent window at the central Taiwan drill on 10 August, the whole country produced zero mobile performance measurements.&lt;/p&gt; &lt;p&gt;The call started with community member &lt;a href=&#34;https://mashbean.net/about/&#34; target=&#34;_blank&#34;&gt;mashbean&lt;/a&gt;, who proposed using the drill as a rare measurement opportunity. The two sides then prepared separately, one writing the call and the operating instructions, the other observing in the field on the day. He wrote his own record up as &lt;a href=&#34;https://mashbean.net/blog/2026/0813-16xy2v/&#34; target=&#34;_blank&#34;&gt;a separate post&lt;/a&gt;, which follows the network past the announced end of the drill and covers a period this dataset cannot see. Read together, the two posts span the full afternoon.&lt;/p&gt; &lt;p&gt;One Chunghwa Telecom Mobile handset measured &lt;code&gt;788&lt;/code&gt; to &lt;code&gt;1,709&lt;/code&gt; kbit/s during the throttle. Taiwan&#39;s public data had never shown figures of that order. It should be said up front that those figures come from 6 records left by a single device: enough to stand as one complete case, not enough to generalise to the country or to any carrier.&lt;/p&gt; &lt;p&gt;This post records network conditions. Whether carriers followed instructions precisely, and whether the officially published figure is accurate, are both outside its scope. Taiwan had no data on what throttling looks like, and preserving these 30 minutes is the point. Every query below works without authentication or an API key, so readers can run them again.&lt;/p&gt; &lt;p&gt;The most useful thing to come out of the analysis has nothing to do with throttling itself. It is a reading method: &lt;strong&gt;throttling and blocking produce completely different shapes in OONI data&lt;/strong&gt;. Blocking sends anomaly rates up and leaves confirmed-blocking records behind, while throttling leaves the verdict fields untouched and shows up only in throughput and latency values. Taiwan&#39;s web connectivity anomaly rate that day was &lt;code&gt;1.0%&lt;/code&gt;, in the same band as the usual &lt;code&gt;0.6%&lt;/code&gt;, with confirmed blocking at &lt;code&gt;0&lt;/code&gt; all day. Only speed went down. Describing a throttle through blocking anomaly rates returns a figure close to normal, and leads to the conclusion that nothing happened.&lt;/p&gt; &lt;!-- more --&gt; &lt;h2 id=&#34;The-overall-shape-of-that-days-data&#34;&gt;The overall shape of that day&#39;s data&lt;a class=&#34;headerlink&#34; href=&#34;#The-overall-shape-of-that-days-data&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Grouping every connection speed test in Taiwan that day into 15-minute buckets makes the community mobilisation visible in the data itself.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Connection speed tests per 15-minute interval on 13 August, orange marks the throttle window&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&lt;vegachart style=&#39;width: 100%&#39; class=&#34;vegalite&#34;&gt;{&#34;description&#34;:&#34;OONI ndt measurements per 15 minutes in Taiwan on 2026-08-13&#34;,&#34;data&#34;:{&#34;values&#34;:[{&#34;t&#34;:&#34;13:00&#34;,&#34;n&#34;:3,&#34;g&#34;:&#34;Normal hours&#34;},{&#34;t&#34;:&#34;13:15&#34;,&#34;n&#34;:4,&#34;g&#34;:&#34;Normal hours&#34;},{&#34;t&#34;:&#34;13:30&#34;,&#34;n&#34;:11,&#34;g&#34;:&#34;Normal hours&#34;},{&#34;t&#34;:&#34;13:45&#34;,&#34;n&#34;:4,&#34;g&#34;:&#34;Normal hours&#34;},{&#34;t&#34;:&#34;14:00&#34;,&#34;n&#34;:9,&#34;g&#34;:&#34;Normal hours&#34;},{&#34;t&#34;:&#34;14:15&#34;,&#34;n&#34;:27,&#34;g&#34;:&#34;Normal hours&#34;},{&#34;t&#34;:&#34;14:30&#34;,&#34;n&#34;:13,&#34;g&#34;:&#34;Throttle window&#34;},{&#34;t&#34;:&#34;14:45&#34;,&#34;n&#34;:50,&#34;g&#34;:&#34;Throttle window&#34;},{&#34;t&#34;:&#34;15:00&#34;,&#34;n&#34;:31,&#34;g&#34;:&#34;Normal hours&#34;},{&#34;t&#34;:&#34;15:15&#34;,&#34;n&#34;:15,&#34;g&#34;:&#34;Normal hours&#34;},{&#34;t&#34;:&#34;15:30&#34;,&#34;n&#34;:2,&#34;g&#34;:&#34;Normal hours&#34;},{&#34;t&#34;:&#34;15:45&#34;,&#34;n&#34;:2,&#34;g&#34;:&#34;Normal hours&#34;}]},&#34;mark&#34;:{&#34;type&#34;:&#34;bar&#34;,&#34;tooltip&#34;:true,&#34;cornerRadiusEnd&#34;:4},&#34;encoding&#34;:{&#34;x&#34;:{&#34;field&#34;:&#34;t&#34;,&#34;type&#34;:&#34;ordinal&#34;,&#34;title&#34;:&#34;Taipei time (15-minute buckets)&#34;,&#34;axis&#34;:{&#34;labelAngle&#34;:-45}},&#34;y&#34;:{&#34;field&#34;:&#34;n&#34;,&#34;type&#34;:&#34;quantitative&#34;,&#34;title&#34;:&#34;Connection speed tests&#34;},&#34;color&#34;:{&#34;field&#34;:&#34;g&#34;,&#34;type&#34;:&#34;nominal&#34;,&#34;title&#34;:null,&#34;scale&#34;:{&#34;domain&#34;:[&#34;Normal hours&#34;,&#34;Throttle window&#34;],&#34;range&#34;:[&#34;#0089bf&#34;,&#34;#e65100&#34;]},&#34;legend&#34;:{&#34;orient&#34;:&#34;top&#34;}}}}&lt;/vegachart&gt;&lt;/p&gt; &lt;p&gt;The call asked people to set an alarm for &lt;code&gt;14:35&lt;/code&gt;, and to add &lt;code&gt;14:15&lt;/code&gt; and &lt;code&gt;15:10&lt;/code&gt; if they had time. All three peaks show up, with the 50 measurements between &lt;code&gt;14:45&lt;/code&gt; and &lt;code&gt;15:00&lt;/code&gt; the highest point of the day. Over the previous 30 days Taiwan averaged about 34 connection speed tests per day, mostly from a handful of devices on automatic schedules. A single 15-minute bucket that afternoon beat a normal full day.&lt;/p&gt; &lt;details class=&#34;note&#34;&gt; &lt;summary&gt;Full counts per 15-minute interval&lt;/summary&gt; &lt;table&gt; &lt;thead&gt; &lt;tr&gt; &lt;th&gt;Taipei time&lt;/th&gt; &lt;th style=&#34;text-align: right;&#34;&gt;Measurements&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;13:00&lt;/code&gt; to &lt;code&gt;13:15&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;3&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;13:15&lt;/code&gt; to &lt;code&gt;13:30&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;4&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;13:30&lt;/code&gt; to &lt;code&gt;13:45&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;11&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;13:45&lt;/code&gt; to &lt;code&gt;14:00&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;4&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;14:00&lt;/code&gt; to &lt;code&gt;14:15&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;9&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;14:15&lt;/code&gt; to &lt;code&gt;14:30&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;27&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;14:30&lt;/code&gt; to &lt;code&gt;14:45&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;13&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;14:45&lt;/code&gt; to &lt;code&gt;15:00&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;50&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;15:00&lt;/code&gt; to &lt;code&gt;15:15&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;31&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;15:15&lt;/code&gt; to &lt;code&gt;15:30&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;15&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;15:30&lt;/code&gt; to &lt;code&gt;15:45&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;2&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;15:45&lt;/code&gt; to &lt;code&gt;16:00&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;2&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;/details&gt; &lt;p&gt;Participation by carrier is below. An &lt;code&gt;AS&lt;/code&gt; number is the global identifier for an autonomous network; carriers, companies, and universities each have their own. OONI records only down to that level and never the user&#39;s location. Device counts are deduplicated by the anonymous device identifier (&lt;code&gt;probe_id&lt;/code&gt;) that OONI generates.&lt;/p&gt; &lt;table&gt; &lt;thead&gt; &lt;tr&gt; &lt;th&gt;Carrier&lt;/th&gt; &lt;th style=&#34;text-align: right;&#34;&gt;13 Aug&lt;/th&gt; &lt;th style=&#34;text-align: right;&#34;&gt;Previous 30 days&lt;/th&gt; &lt;th style=&#34;text-align: right;&#34;&gt;Devices that day&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;AS17421&lt;/code&gt; Chunghwa Telecom Mobile&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;68&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;20&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;22&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;AS9674&lt;/code&gt; FarEasTone&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;51&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;12&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;15&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;AS24158&lt;/code&gt; Taiwan Mobile&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;55&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;538&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;9&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt;All three numeric columns count connection speed tests. The first two are measurement counts, the last is distinct devices: one phone testing three times counts as 3 measurements and 1 device.&lt;/p&gt; &lt;p&gt;Chunghwa Telecom Mobile and FarEasTone were the two thinnest carriers in Taiwan&#39;s OONI record. One afternoon exceeded what each had accumulated over the previous 30 days. Taiwan Mobile&#39;s 30-day count was already high, driven by a few devices running on long-term automation, so the 9 new devices that day represent a distribution that did not exist before.&lt;/p&gt; &lt;p&gt;The data cannot tell who measured because of the call. The performance test in the app is a built-in card (numbered &lt;code&gt;00107&lt;/code&gt;), and every user worldwide taps the same one; over a thousand measurements carried that number outside Taiwan on the same day. The effect of the call can only be estimated from before-and-after volume, never traced to individual participants.&lt;/p&gt; &lt;h2 id=&#34;Zooming-in-on-one-handsets-30-minutes&#34;&gt;Zooming in on one handset&#39;s 30 minutes&lt;a class=&#34;headerlink&#34; href=&#34;#Zooming-in-on-one-handsets-30-minutes&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;The device identifier makes it possible to string together every measurement from the same phone. One Chunghwa Telecom Mobile Android handset ran tests both before and during the throttle, leaving 6 records for each of the two performance tests.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Download and upload throughput from a single handset. The grey band marks the throttle window, the vertical axis is logarithmic, and the data spans more than two orders of magnitude. Nothing was measured between 13:33 and 14:36, so the line breaks there&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&lt;vegachart style=&#39;width: 100%&#39; class=&#34;vegalite&#34;&gt;{&#34;description&#34;:&#34;Download vs upload throughput of a single mobile device during the 2026-08-13 throttling drill&#34;,&#34;layer&#34;:[{&#34;data&#34;:{&#34;values&#34;:[{&#34;s&#34;:&#34;2026-08-13T14:30:00&#34;,&#34;e&#34;:&#34;2026-08-13T15:00:00&#34;}]},&#34;mark&#34;:{&#34;type&#34;:&#34;rect&#34;,&#34;opacity&#34;:0.12,&#34;color&#34;:&#34;#546e7a&#34;},&#34;encoding&#34;:{&#34;x&#34;:{&#34;field&#34;:&#34;s&#34;,&#34;type&#34;:&#34;temporal&#34;},&#34;x2&#34;:{&#34;field&#34;:&#34;e&#34;}}},{&#34;data&#34;:{&#34;values&#34;:[{&#34;t&#34;:&#34;2026-08-13T13:32:00&#34;,&#34;d&#34;:&#34;Download&#34;,&#34;seg&#34;:&#34;Before&#34;,&#34;v&#34;:89510},{&#34;t&#34;:&#34;2026-08-13T13:33:00&#34;,&#34;d&#34;:&#34;Download&#34;,&#34;seg&#34;:&#34;Before&#34;,&#34;v&#34;:174682},{&#34;t&#34;:&#34;2026-08-13T14:36:00&#34;,&#34;d&#34;:&#34;Download&#34;,&#34;seg&#34;:&#34;During&#34;,&#34;v&#34;:788},{&#34;t&#34;:&#34;2026-08-13T14:39:00&#34;,&#34;d&#34;:&#34;Download&#34;,&#34;seg&#34;:&#34;During&#34;,&#34;v&#34;:881},{&#34;t&#34;:&#34;2026-08-13T14:51:00&#34;,&#34;d&#34;:&#34;Download&#34;,&#34;seg&#34;:&#34;During&#34;,&#34;v&#34;:1565},{&#34;t&#34;:&#34;2026-08-13T14:52:00&#34;,&#34;d&#34;:&#34;Download&#34;,&#34;seg&#34;:&#34;During&#34;,&#34;v&#34;:1709},{&#34;t&#34;:&#34;2026-08-13T13:32:00&#34;,&#34;d&#34;:&#34;Upload&#34;,&#34;seg&#34;:&#34;Before&#34;,&#34;v&#34;:21510},{&#34;t&#34;:&#34;2026-08-13T13:33:00&#34;,&#34;d&#34;:&#34;Upload&#34;,&#34;seg&#34;:&#34;Before&#34;,&#34;v&#34;:16348},{&#34;t&#34;:&#34;2026-08-13T14:36:00&#34;,&#34;d&#34;:&#34;Upload&#34;,&#34;seg&#34;:&#34;During&#34;,&#34;v&#34;:26300},{&#34;t&#34;:&#34;2026-08-13T14:39:00&#34;,&#34;d&#34;:&#34;Upload&#34;,&#34;seg&#34;:&#34;During&#34;,&#34;v&#34;:31789},{&#34;t&#34;:&#34;2026-08-13T14:51:00&#34;,&#34;d&#34;:&#34;Upload&#34;,&#34;seg&#34;:&#34;During&#34;,&#34;v&#34;:22370},{&#34;t&#34;:&#34;2026-08-13T14:52:00&#34;,&#34;d&#34;:&#34;Upload&#34;,&#34;seg&#34;:&#34;During&#34;,&#34;v&#34;:32695}]},&#34;mark&#34;:{&#34;type&#34;:&#34;line&#34;,&#34;strokeWidth&#34;:2,&#34;point&#34;:{&#34;size&#34;:70,&#34;filled&#34;:true},&#34;tooltip&#34;:true},&#34;encoding&#34;:{&#34;x&#34;:{&#34;field&#34;:&#34;t&#34;,&#34;type&#34;:&#34;temporal&#34;,&#34;title&#34;:&#34;Taipei time&#34;,&#34;axis&#34;:{&#34;format&#34;:&#34;%H:%M&#34;},&#34;scale&#34;:{&#34;padding&#34;:18}},&#34;y&#34;:{&#34;field&#34;:&#34;v&#34;,&#34;type&#34;:&#34;quantitative&#34;,&#34;scale&#34;:{&#34;type&#34;:&#34;log&#34;,&#34;domain&#34;:[500,250000],&#34;nice&#34;:false},&#34;title&#34;:&#34;Throughput kbit/s (log scale)&#34;},&#34;color&#34;:{&#34;field&#34;:&#34;d&#34;,&#34;type&#34;:&#34;nominal&#34;,&#34;title&#34;:null,&#34;scale&#34;:{&#34;domain&#34;:[&#34;Download&#34;,&#34;Upload&#34;],&#34;range&#34;:[&#34;#0089bf&#34;,&#34;#e65100&#34;]},&#34;legend&#34;:{&#34;orient&#34;:&#34;top&#34;}},&#34;detail&#34;:{&#34;field&#34;:&#34;seg&#34;,&#34;type&#34;:&#34;nominal&#34;}}}]}&lt;/vegachart&gt;&lt;/p&gt; &lt;p&gt;The two download segments sit two orders of magnitude apart. The two upload segments sit at almost the same height.&lt;/p&gt; &lt;p&gt;The first two records come from about an hour before the throttle began, the last four from inside the window. The median download fell from &lt;code&gt;132,096&lt;/code&gt; kbit/s to &lt;code&gt;1,223&lt;/code&gt; kbit/s, and the two tests independently produce ratios of &lt;code&gt;1/108&lt;/code&gt; and &lt;code&gt;1/88&lt;/code&gt;. Put back into the context of Taiwan&#39;s data the gap is starker still: across 18 measurements in the previous 30 days, Chunghwa Telecom Mobile&#39;s lowest value was &lt;code&gt;42,197&lt;/code&gt; kbit/s, so the &lt;code&gt;788&lt;/code&gt; kbit/s recorded during the throttle is an order that carrier had never shown in public data.&lt;/p&gt; &lt;p&gt;The same measurements also record round-trip time and retransmission rate. All six in full:&lt;/p&gt; &lt;table&gt; &lt;thead&gt; &lt;tr&gt; &lt;th&gt;Taipei time&lt;/th&gt; &lt;th style=&#34;text-align: right;&#34;&gt;Download&lt;/th&gt; &lt;th style=&#34;text-align: right;&#34;&gt;Upload&lt;/th&gt; &lt;th style=&#34;text-align: right;&#34;&gt;Streaming bitrate&lt;/th&gt; &lt;th style=&#34;text-align: right;&#34;&gt;Min RTT&lt;/th&gt; &lt;th style=&#34;text-align: right;&#34;&gt;Avg RTT&lt;/th&gt; &lt;th style=&#34;text-align: right;&#34;&gt;Retransmit&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;13:32&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;89,510&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;21,510&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;138,513&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;18.39&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;66.78&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;0.000%&lt;/code&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;13:33&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;174,682&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;16,348&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;119,179&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;17.85&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;82.05&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;0.001%&lt;/code&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;14:36&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;788&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;26,300&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;1,308&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;16.85&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;168.40&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;0.522%&lt;/code&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;14:39&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;881&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;31,789&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;1,608&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;19.97&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;137.24&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;0.202%&lt;/code&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;14:51&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;1,565&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;22,370&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;1,624&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;18.72&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;130.05&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;0.000%&lt;/code&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;14:52&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;1,709&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;32,695&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;821&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;18.28&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;114.79&lt;/code&gt;&lt;/td&gt; &lt;td style=&#34;text-align: right;&#34;&gt;&lt;code&gt;0.000%&lt;/code&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt;The first three numeric columns are in kbit/s and higher is faster; &lt;code&gt;1,308&lt;/code&gt; kbit/s corresponds roughly to standard-definition streaming. The two RTT columns are in milliseconds and lower is faster. Minimum RTT takes the quickest round trip across the whole test and approximates the path itself, while average RTT also absorbs any queuing along the way. The retransmission rate is the share of packets that had to be sent again.&lt;/p&gt; &lt;p&gt;One caveat applies when reading the throughput. The connection speed test terminates at an M-Lab server, so the figure covers both the last mile and the international leg to that server, and a single result cannot separate the two. The latency fields answer that concern directly: minimum RTT held between 17 and 20 ms throughout, consistent with an unchanged packet path, which makes it less likely the speed change originated on the international leg. Average RTT rose from 67 to 82 ms up to 115 to 168 ms, indicating packets queuing somewhere. The retransmission rate rose in two of the four records, from near &lt;code&gt;0&lt;/code&gt; to &lt;code&gt;0.522%&lt;/code&gt; and &lt;code&gt;0.202%&lt;/code&gt; — a large relative change, though the absolute value stayed under &lt;code&gt;0.6%&lt;/code&gt;, which fits delayed delivery rather than heavy discarding.&lt;/p&gt; &lt;p&gt;Taken together, the three fields form the signature of traffic shaping. Had the mechanism been packet dropping, the retransmission rate would have climbed far more sharply. Had the cause been signal degradation or a cell handover, minimum RTT would usually have moved with it. This reading, too, rests on a single device.&lt;/p&gt; &lt;p&gt;The Executive Yuan described the method as core-network rate limiting, capping mobile download speed at 256KB&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:2&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;. The original wording does not state a unit. Read as 256 KB per second it converts to &lt;code&gt;2,048&lt;/code&gt; kbit/s. Read as 256 kbit/s it would be an entirely different order. This post makes no numerical comparison against that figure and cites it only so readers know what magnitude was announced.&lt;/p&gt; &lt;h2 id=&#34;Measurements-without-a-throttle-signal-carry-the-comparison&#34;&gt;Measurements without a throttle signal carry the comparison&lt;a class=&#34;headerlink&#34; href=&#34;#Measurements-without-a-throttle-signal-carry-the-comparison&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Of the 47 devices, 46 measured normal speeds during the window. Across the three mobile carriers, the median download was &lt;code&gt;42.2&lt;/code&gt; Mbps during the throttle, &lt;code&gt;53.2&lt;/code&gt; Mbps before it, and &lt;code&gt;58.5&lt;/code&gt; Mbps after, all in the same band.&lt;/p&gt; &lt;p&gt;A whole batch of normal figures underneath is exactly what makes a single device&#39;s &lt;code&gt;788&lt;/code&gt; kbit/s stand out. Had everyone measured low speeds that day, the reasonable reading would be a nationwide slowdown or ordinary variation. Had only one phone been measuring, the low figure could equally have come from that handset&#39;s own situation, such as poor signal or a background app consuming bandwidth. With 32 devices running the same tests in the same window and 31 of them normal, a single device&#39;s anomaly holds up.&lt;/p&gt; &lt;p&gt;That is why the call asked people outside the throttled area to measure as well. Those measurements were not wasted; they determine whether the figures from inside the area can be read at all. Someone in Tainan, in Kaohsiung, or not in Taiwan at all, contributes to the comparison simply by running the test at the same moment, because it all lands in the same public database.&lt;/p&gt; &lt;p&gt;Thousands of identical performance tests ran worldwide that day. What distinguishes Taiwan&#39;s is only that they map onto a known event with sharp time boundaries. Without the comparison group, what remains is an isolated low figure that establishes nothing.&lt;/p&gt; &lt;h2 id=&#34;How-the-experience-maps-onto-specific-fields&#34;&gt;How the experience maps onto specific fields&lt;a class=&#34;headerlink&#34; href=&#34;#How-the-experience-maps-onto-specific-fields&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;No experience survey was run, so the following works backwards from the data to what using a phone would have felt like.&lt;/p&gt; &lt;h3 id=&#34;Video-stuck-buffering&#34;&gt;Video stuck buffering&lt;a class=&#34;headerlink&#34; href=&#34;#Video-stuck-buffering&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;The streaming test records how long playback waits before it starts. Both records before the throttle show &lt;code&gt;0&lt;/code&gt; seconds; the three during it show &lt;code&gt;0.12&lt;/code&gt;, &lt;code&gt;0.12&lt;/code&gt;, and &lt;code&gt;5.29&lt;/code&gt; seconds. That last one waited more than five seconds to buffer, which is exactly the spinner people watch after tapping a video.&lt;/p&gt; &lt;h3 id=&#34;Messages-and-photos-still-went-out-smoothly&#34;&gt;Messages and photos still went out smoothly&lt;a class=&#34;headerlink&#34; href=&#34;#Messages-and-photos-still-went-out-smoothly&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;The four uploads during the throttle measured &lt;code&gt;26,300&lt;/code&gt;, &lt;code&gt;31,789&lt;/code&gt;, &lt;code&gt;22,370&lt;/code&gt;, and &lt;code&gt;32,695&lt;/code&gt; kbit/s, no lower than the &lt;code&gt;21,510&lt;/code&gt; and &lt;code&gt;16,348&lt;/code&gt; kbit/s recorded before it. Upload ran 33, 36, 14, and 19 times faster than download. The rate limiting was one-directional, applied only downstream. That also explains something the call had warned about: measurement results uploaded fine during the throttle and went out immediately, with no need to wait for the network to recover.&lt;/p&gt; &lt;h3 id=&#34;A-pause-between-tapping-and-anything-happening&#34;&gt;A pause between tapping and anything happening&lt;a class=&#34;headerlink&#34; href=&#34;#A-pause-between-tapping-and-anything-happening&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;Average RTT doubled, which stretches the gap between every tap and the screen responding.&lt;/p&gt; &lt;h3 id=&#34;Web-pages-still-loaded-only-slowly&#34;&gt;Web pages still loaded, only slowly&lt;a class=&#34;headerlink&#34; href=&#34;#Web-pages-still-loaded-only-slowly&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;Taiwan recorded 1,893 web connectivity measurements during the window, with an anomaly rate of &lt;code&gt;1.0%&lt;/code&gt; against &lt;code&gt;0.6%&lt;/code&gt; both before and after. Confirmed blocking was &lt;code&gt;0&lt;/code&gt; in every window. Websites were reachable, and so were Tor and Psiphon: the 33 Tor tests and 33 Psiphon tests during the throttle all returned zero anomalies.&lt;/p&gt; &lt;p&gt;In the data, those 30 minutes appear as speed going down, not as connectivity being cut.&lt;/p&gt; &lt;h2 id=&#34;Throttling-and-shutdowns-are-two-different-shapes-in-the-data&#34;&gt;Throttling and shutdowns are two different shapes in the data&lt;a class=&#34;headerlink&#34; href=&#34;#Throttling-and-shutdowns-are-two-different-shapes-in-the-data&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Most OONI tests perform a blocking verdict, among them web connectivity, Telegram, and Signal. When real blocking or a shutdown occurs, anomaly rates climb, confirmed-blocking records appear, and in severe cases measurements fail outright and reports never leave the device, leaving a gap in the database. Under throttling every connection succeeds, reports upload as usual, and the verdict fields do not move at all.&lt;/p&gt; &lt;table&gt; &lt;thead&gt; &lt;tr&gt; &lt;th&gt;&lt;/th&gt; &lt;th&gt;Blocking or shutdown&lt;/th&gt; &lt;th&gt;Throttling&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;Connections&lt;/td&gt; &lt;td&gt;Many fail&lt;/td&gt; &lt;td&gt;All succeed&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Anomaly rate&lt;/td&gt; &lt;td&gt;Rises clearly&lt;/td&gt; &lt;td&gt;Unchanged&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Confirmed blocking&lt;/td&gt; &lt;td&gt;May appear&lt;/td&gt; &lt;td&gt;Stays at &lt;code&gt;0&lt;/code&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Throughput&lt;/td&gt; &lt;td&gt;Not necessarily affected&lt;/td&gt; &lt;td&gt;Drops clearly&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Which tests to read&lt;/td&gt; &lt;td&gt;Tests with blocking verdicts&lt;/td&gt; &lt;td&gt;Values from performance tests&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt;The rule of thumb follows. To observe throttling, read the values from performance tests. To observe blocking, read the tests that carry verdicts. Get it the wrong way round and the numbers will point at the wrong conclusion.&lt;/p&gt; &lt;p&gt;That is also why the call asked only for performance tests. Running verdict-bearing tests under a rate limit means the handset times out repeatedly while the test helper server behaves normally, and the comparison gets flagged with the signature of blocking, injecting a batch of censorship-looking records into Taiwan&#39;s public data. The results show no such false signal appeared.&lt;/p&gt; &lt;p&gt;Both shapes can be inspected directly. In Taiwan&#39;s &lt;a href=&#34;https://explorer.ooni.org/chart/mat?probe_cc=TW&amp;amp;test_name=web_connectivity&amp;amp;since=2026-08-13&amp;amp;until=2026-08-14&amp;amp;axis_x=measurement_start_day&amp;amp;time_grain=hour&#34; target=&#34;_blank&#34;&gt;hourly breakdown for 13 August&lt;/a&gt;, confirmed blocking holds at &lt;code&gt;0&lt;/code&gt; all day, including the throttled hour. Blocking events verified by the OONI team are collected in &lt;a href=&#34;https://explorer.ooni.org/findings&#34; target=&#34;_blank&#34;&gt;Findings&lt;/a&gt;, each linked to its underlying measurements, where confirmed-blocking counts can be seen climbing during an event. Both views query the same database and the same fields; only the values differ.&lt;/p&gt; &lt;h2 id=&#34;How-each-conclusion-comes-out-of-the-public-data&#34;&gt;How each conclusion comes out of the public data&lt;a class=&#34;headerlink&#34; href=&#34;#How-each-conclusion-comes-out-of-the-public-data&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;h3 id=&#34;Step-one-pull-the-measurements-in-a-time-range&#34;&gt;Step one, pull the measurements in a time range&lt;a class=&#34;headerlink&#34; href=&#34;#Step-one-pull-the-measurements-in-a-time-range&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;The measurements endpoint needs no authentication and accepts a range specified to the second.&lt;/p&gt; &lt;div class=&#34;highlight&#34;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;https://api.ooni.org/api/v1/measurements?probe_cc=TW&amp;amp;test_name=ndt &amp;amp;since=2026-08-13T06:00:00Z&amp;amp;until=2026-08-13T08:00:00Z&amp;amp;limit=200 &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt; &lt;p&gt;All times are UTC; Taipei time is 8 hours ahead, so the throttle window is &lt;code&gt;06:30&lt;/code&gt; to &lt;code&gt;07:00&lt;/code&gt;. To capture a full day in Taipei time, shift both bounds back 8 hours, giving &lt;code&gt;2026-08-12T16:00:00Z&lt;/code&gt; to &lt;code&gt;2026-08-13T16:00:00Z&lt;/code&gt;. Every record returned carries a network number (&lt;code&gt;probe_asn&lt;/code&gt;) and a measurement id (&lt;code&gt;measurement_uid&lt;/code&gt;). When the count exceeds &lt;code&gt;limit&lt;/code&gt; the response includes &lt;code&gt;next_url&lt;/code&gt;, and every page has to be fetched or data goes missing: there were 238 connection speed tests that day, more than a single &lt;code&gt;limit=200&lt;/code&gt; returns.&lt;/p&gt; &lt;h3 id=&#34;Step-two-open-the-raw-JSON-for-the-values&#34;&gt;Step two, open the raw JSON for the values&lt;a class=&#34;headerlink&#34; href=&#34;#Step-two-open-the-raw-JSON-for-the-values&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;The listing itself carries no throughput figures, so each &lt;code&gt;measurement_url&lt;/code&gt; has to be opened. Connection speed test values live under &lt;code&gt;test_keys.summary&lt;/code&gt;, covering download (&lt;code&gt;download&lt;/code&gt;), upload (&lt;code&gt;upload&lt;/code&gt;), minimum round-trip time (&lt;code&gt;min_rtt&lt;/code&gt;), average round-trip time (&lt;code&gt;avg_rtt&lt;/code&gt;), and retransmission rate (&lt;code&gt;retransmit_rate&lt;/code&gt;). Streaming test values live under &lt;code&gt;test_keys.simple&lt;/code&gt;, covering median bitrate (&lt;code&gt;median_bitrate&lt;/code&gt;) and playback wait (&lt;code&gt;min_playout_delay&lt;/code&gt;).&lt;/p&gt; &lt;h3 id=&#34;Step-three-drop-everything-that-is-not-a-mobile-network&#34;&gt;Step three, drop everything that is not a mobile network&lt;a class=&#34;headerlink&#34; href=&#34;#Step-three-drop-everything-that-is-not-a-mobile-network&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;The network type field in the raw JSON (&lt;code&gt;annotations.network_type&lt;/code&gt;) marks mobile (&lt;code&gt;mobile&lt;/code&gt;), Wi-Fi (&lt;code&gt;wifi&lt;/code&gt;), wired (&lt;code&gt;wired_ethernet&lt;/code&gt;), or VPN (&lt;code&gt;vpn&lt;/code&gt;). Of the 238 connection speed tests that day, only 170 were marked mobile. Without that filter, home fibre and VPN measurements mix in, and neither was inside the throttled area to begin with.&lt;/p&gt; &lt;h3 id=&#34;Step-four-use-the-device-identifier-to-group-one-handset&#34;&gt;Step four, use the device identifier to group one handset&lt;a class=&#34;headerlink&#34; href=&#34;#Step-four-use-the-device-identifier-to-group-one-handset&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;The identifier sits at the top level of the raw JSON under &lt;code&gt;probe_id&lt;/code&gt;, a sibling of &lt;code&gt;test_keys&lt;/code&gt; rather than something inside it. Its value is an anonymous hash OONI generates per device, and every measurement from the same phone carries the same value, so collecting matching values reconstructs that device&#39;s full record for the day. Of the 238 connection speed tests that day, 18 carry no identifier, cannot be attributed to any device, and are excluded from the device counts here.&lt;/p&gt; &lt;p&gt;A single measurement is hard to read on its own, because handset model, location, and signal strength all differ. One phone compared against itself is far more direct, and that is where the key table in this post comes from.&lt;/p&gt; &lt;h3 id=&#34;Step-five-rule-out-false-positives&#34;&gt;Step five, rule out false positives&lt;a class=&#34;headerlink&#34; href=&#34;#Step-five-rule-out-false-positives&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;Two cases came up on the day.&lt;/p&gt; &lt;p&gt;A Taiwan Mobile device measured &lt;code&gt;3,124&lt;/code&gt; kbit/s at 14:54, which looks like throttling. But it measured &lt;code&gt;3,126&lt;/code&gt; kbit/s again at 20:11 the same day, and its streaming bitrate stayed between &lt;code&gt;2,072&lt;/code&gt; and &lt;code&gt;2,909&lt;/code&gt; kbit/s throughout. The figures are stable all day and come from that subscription&#39;s own speed cap, unrelated to the drill. Looking only at the throttle window, it would easily have been counted as evidence.&lt;/p&gt; &lt;p&gt;Another 5 measurements failed outright during the window, with connection timeouts, a DNS lookup failure, and a refused connection. The cause of a failure cannot be determined from a single result — it might come from the throttle, or from ordinary connection trouble — so none are included.&lt;/p&gt; &lt;h3 id=&#34;Step-six-build-a-comparison-group&#34;&gt;Step six, build a comparison group&lt;a class=&#34;headerlink&#34; href=&#34;#Step-six-build-a-comparison-group&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;During the same window on 10, 11, and 12 August, not one mobile performance measurement fell below &lt;code&gt;2,000&lt;/code&gt; kbit/s; the lowest of the 7 taken on 12 August was &lt;code&gt;8,399&lt;/code&gt; kbit/s. Measurements below &lt;code&gt;2,000&lt;/code&gt; kbit/s appear only in the throttle window on 13 August, and nowhere else that day. Only with a comparison group can an observed low speed be separated from ordinary variation.&lt;/p&gt; &lt;h2 id=&#34;Questions-that-fall-outside-this-dataset&#34;&gt;Questions that fall outside this dataset&lt;a class=&#34;headerlink&#34; href=&#34;#Questions-that-fall-outside-this-dataset&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;h3 id=&#34;Location&#34;&gt;Location&lt;a class=&#34;headerlink&#34; href=&#34;#Location&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;OONI records country and ASN, never counties and never cell tower locations. The data shows that a measurement came from &lt;code&gt;AS17421&lt;/code&gt;; it cannot show whether the phone was in Taipei or Tainan. Only 1 of the 47 devices left a clear throttle signal, and the most likely explanation is that the others were outside the seven affected counties, which the public data cannot verify.&lt;/p&gt; &lt;p&gt;Omitting location is a deliberate OONI design choice made to protect participants. In countries with heavy censorship, a measurer&#39;s location translates directly into personal risk. The trade-off is the right one, and the cost is that events with sharp geographic boundaries are hard to align precisely. Adding a location dimension requires the community to collect it separately, for instance through a voluntary county-level form that records nothing finer than the county and is never joined to device identifiers, so it does not reconstruct the tracking capability OONI deliberately removed.&lt;/p&gt; &lt;h3 id=&#34;Coverage-across-carriers&#34;&gt;Coverage across carriers&lt;a class=&#34;headerlink&#34; href=&#34;#Coverage-across-carriers&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;The devices with a complete before-and-after record cluster on Chunghwa Telecom Mobile. For Taiwan Mobile and FarEasTone, the low values during the window were all measurement failures, leaving nothing readable. That gap comes from where participants and measurements happened to fall, and says nothing about differences between the carriers&#39; networks. Seeing how different carriers behaved in the same window would require each of them to have devices completing measurements before, during, and after.&lt;/p&gt; &lt;h3 id=&#34;How-long-recovery-took&#34;&gt;How long recovery took&lt;a class=&#34;headerlink&#34; href=&#34;#How-long-recovery-took&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;The handset with the complete throttle record took its last measurement at 14:52 and ran nothing afterwards, so the before-and-after comparison in this post ends there. The 30 minutes after the window contain 38 measurements, all from devices that showed no throttle signal, which leaves no single device spanning both.&lt;/p&gt; &lt;p&gt;The public data does hold a trace of the recovery period, and this post&#39;s own filter is what excluded it. A Taiwan Mobile device measured &lt;code&gt;55&lt;/code&gt; kbit/s at 15:08, and its streaming test two minutes later returned &lt;code&gt;0&lt;/code&gt; — both after the announced end of the drill. Neither entered the statistics here, because the network type field is empty on both, and this post counts only measurements explicitly marked as mobile in order to exclude fixed-line and VPN results. The filter that removes noise removed the signal along with it.&lt;/p&gt; &lt;p&gt;What fills that gap is &lt;a href=&#34;https://mashbean.net/blog/2026/0813-16xy2v/&#34; target=&#34;_blank&#34;&gt;mashbean&#39;s field observation&lt;/a&gt;. He recorded downloads still at &lt;code&gt;55&lt;/code&gt; kbit/s at 15:08, streaming tests moving from timeout to completion, and usable service only returning at 17:47, and argues from that record that restoration time belongs among the criteria for evaluating a resilience exercise, with functional recovery and a return to baseline judged separately. Whose hand the device was in, whether it was really on a mobile network, which county the person was standing in — the dimensions OONI does not record are the ones only the measurer can supply.&lt;/p&gt; &lt;p&gt;Laying both sets of observations on one timeline is what completes the picture of that afternoon.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Timeline of that afternoon, with the grey band marking the announced throttle window and rows grouped by source&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&lt;vegachart style=&#39;width: 100%&#39; class=&#34;vegalite&#34;&gt;{&#34;description&#34;:&#34;Timeline of drill events and observations on 2026-08-13 afternoon&#34;,&#34;layer&#34;:[{&#34;data&#34;:{&#34;values&#34;:[{&#34;s&#34;:&#34;2026-08-13T14:30:00&#34;,&#34;e&#34;:&#34;2026-08-13T15:00:00&#34;}]},&#34;mark&#34;:{&#34;type&#34;:&#34;rect&#34;,&#34;opacity&#34;:0.12,&#34;color&#34;:&#34;#546e7a&#34;},&#34;encoding&#34;:{&#34;x&#34;:{&#34;field&#34;:&#34;s&#34;,&#34;type&#34;:&#34;temporal&#34;},&#34;x2&#34;:{&#34;field&#34;:&#34;e&#34;}}},{&#34;data&#34;:{&#34;values&#34;:[{&#34;t&#34;:&#34;2026-08-13T14:30:00&#34;,&#34;src&#34;:&#34;Executive Yuan&#34;,&#34;e&#34;:&#34;Throttle begins&#34;},{&#34;t&#34;:&#34;2026-08-13T15:00:00&#34;,&#34;src&#34;:&#34;Executive Yuan&#34;,&#34;e&#34;:&#34;Throttle ends&#34;},{&#34;t&#34;:&#34;2026-08-13T14:36:00&#34;,&#34;src&#34;:&#34;This dataset&#34;,&#34;e&#34;:&#34;788 kbit/s, lowest of the day&#34;},{&#34;t&#34;:&#34;2026-08-13T14:39:00&#34;,&#34;src&#34;:&#34;This dataset&#34;,&#34;e&#34;:&#34;881 kbit/s&#34;},{&#34;t&#34;:&#34;2026-08-13T14:52:00&#34;,&#34;src&#34;:&#34;This dataset&#34;,&#34;e&#34;:&#34;1,709 kbit/s, that device&#39;s last&#34;},{&#34;t&#34;:&#34;2026-08-13T15:08:00&#34;,&#34;src&#34;:&#34;This dataset&#34;,&#34;e&#34;:&#34;Another device at 55 kbit/s&#34;},{&#34;t&#34;:&#34;2026-08-13T15:10:00&#34;,&#34;src&#34;:&#34;This dataset&#34;,&#34;e&#34;:&#34;Streaming test returns 0&#34;},{&#34;t&#34;:&#34;2026-08-13T17:47:00&#34;,&#34;src&#34;:&#34;mashbean field&#34;,&#34;e&#34;:&#34;Usable service returns&#34;}]},&#34;mark&#34;:{&#34;type&#34;:&#34;point&#34;,&#34;size&#34;:110,&#34;filled&#34;:true,&#34;color&#34;:&#34;#0089bf&#34;,&#34;tooltip&#34;:true},&#34;encoding&#34;:{&#34;x&#34;:{&#34;field&#34;:&#34;t&#34;,&#34;type&#34;:&#34;temporal&#34;,&#34;title&#34;:&#34;Taipei time&#34;,&#34;axis&#34;:{&#34;format&#34;:&#34;%H:%M&#34;},&#34;scale&#34;:{&#34;padding&#34;:26}},&#34;y&#34;:{&#34;field&#34;:&#34;src&#34;,&#34;type&#34;:&#34;nominal&#34;,&#34;title&#34;:null,&#34;sort&#34;:[&#34;Executive Yuan&#34;,&#34;This dataset&#34;,&#34;mashbean field&#34;]},&#34;tooltip&#34;:[{&#34;field&#34;:&#34;t&#34;,&#34;type&#34;:&#34;temporal&#34;,&#34;format&#34;:&#34;%H:%M&#34;,&#34;title&#34;:&#34;Time&#34;},{&#34;field&#34;:&#34;e&#34;,&#34;type&#34;:&#34;nominal&#34;,&#34;title&#34;:&#34;Event&#34;}]}}]}&lt;/vegachart&gt;&lt;/p&gt; &lt;p&gt;The longest stretch on that chart is empty. The announced end was &lt;code&gt;15:00&lt;/code&gt;, the last low-speed record lands at &lt;code&gt;15:08&lt;/code&gt;, and usable service returned at &lt;code&gt;17:47&lt;/code&gt;. The three timestamps each mean something different, and nearly three hours separate them.&lt;/p&gt; &lt;details class=&#34;note&#34;&gt; &lt;summary&gt;Full event list for the timeline&lt;/summary&gt; &lt;table&gt; &lt;thead&gt; &lt;tr&gt; &lt;th&gt;Taipei time&lt;/th&gt; &lt;th&gt;Event&lt;/th&gt; &lt;th&gt;Source&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;14:30&lt;/code&gt;&lt;/td&gt; &lt;td&gt;Announced start of throttling&lt;/td&gt; &lt;td&gt;Executive Yuan&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;14:36&lt;/code&gt;&lt;/td&gt; &lt;td&gt;Single device measures &lt;code&gt;788&lt;/code&gt; kbit/s, lowest of the day&lt;/td&gt; &lt;td&gt;This post&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;14:39&lt;/code&gt;&lt;/td&gt; &lt;td&gt;Same device at &lt;code&gt;881&lt;/code&gt; kbit/s, upload still &lt;code&gt;31,789&lt;/code&gt;&lt;/td&gt; &lt;td&gt;This post&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;14:52&lt;/code&gt;&lt;/td&gt; &lt;td&gt;Same device&#39;s last record, &lt;code&gt;1,709&lt;/code&gt; kbit/s&lt;/td&gt; &lt;td&gt;This post&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;15:00&lt;/code&gt;&lt;/td&gt; &lt;td&gt;Announced end of throttling&lt;/td&gt; &lt;td&gt;Executive Yuan&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;15:08&lt;/code&gt;&lt;/td&gt; &lt;td&gt;Another device still measures &lt;code&gt;55&lt;/code&gt; kbit/s&lt;/td&gt; &lt;td&gt;This post and mashbean&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;15:10&lt;/code&gt;&lt;/td&gt; &lt;td&gt;Same device&#39;s streaming test returns &lt;code&gt;0&lt;/code&gt;&lt;/td&gt; &lt;td&gt;This post and mashbean&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;17:47&lt;/code&gt;&lt;/td&gt; &lt;td&gt;Usable service returns&lt;/td&gt; &lt;td&gt;mashbean&#39;s field observation&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;/details&gt; &lt;h3 id=&#34;How-much-one-device-can-represent&#34;&gt;How much one device can represent&lt;a class=&#34;headerlink&#34; href=&#34;#How-much-one-device-can-represent&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;What this post says about the direction and layer of the rate limiting rests on 6 measurements from one handset. The figures are internally consistent and two independent tests point the same way, which makes it a complete record of a single case. Talking about distributions, average magnitude, or confidence intervals would need far more samples than that.&lt;/p&gt; &lt;p&gt;The 47 devices are also community members who volunteered after seeing the call, not a random sample. Any inference across carriers or regions would have to account for that selection bias first.&lt;/p&gt; &lt;h2 id=&#34;Come-and-work-with-OONIs-public-data&#34;&gt;Come and work with OONI&#39;s public data&lt;a class=&#34;headerlink&#34; href=&#34;#Come-and-work-with-OONIs-public-data&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Nothing unusual was needed for this analysis: a public API and some data wrangling. OONI&#39;s data has four entry points, each suited to different work.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://explorer.ooni.org/&#34; target=&#34;_blank&#34;&gt;OONI Explorer&lt;/a&gt;&lt;/strong&gt;: a web interface for looking up individual measurements or trends by country and ASN, no programming required.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Aggregation API&lt;/strong&gt;: &lt;code&gt;https://api.ooni.org/api/v1/aggregation&lt;/code&gt;, no authentication or key, with breakdowns by country, test, and ASN. Its bounds accept dates only, which suits trends at day granularity and above.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Measurements API&lt;/strong&gt;: &lt;code&gt;https://api.ooni.org/api/v1/measurements&lt;/code&gt;, accepts ranges specified to the second and returns individual records. Most of the data here comes from this endpoint.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;AWS S3 public dataset&lt;/strong&gt;: &lt;code&gt;ooni-data-eu-fra&lt;/code&gt;, raw JSON per measurement, suited to inspecting measurement internals or running large-scale analysis. Access patterns and CSV output are documented in &lt;a href=&#34;../../../../community/asn-coverage-howto/&#34;&gt;ASN coverage data collection and analysis&lt;/a&gt;, along with the community-maintained fetcher.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Participating needs no programming either. Install &lt;a href=&#34;https://ooni.org/install/&#34; target=&#34;_blank&#34;&gt;OONI Probe&lt;/a&gt; and run it once; every measurement enters the public database and becomes part of the long-term record of Taiwan&#39;s network conditions. Taiwan averaged only 34 connection speed tests per day over the previous 30 days, so one more phone measuring routinely thickens the baseline. Whether an unexpected slowdown can later be told apart from a problem at your own end depends on how much has been accumulated beforehand.&lt;/p&gt; &lt;p&gt;Plenty of work in Taiwan is still waiting. The long-term baseline for mobile networks remains thin, with coverage across the three carriers differing by one to two orders of magnitude. To work out which test suits a given question, the &lt;a href=&#34;../../../../community/ooni-nettests-map/&#34;&gt;OONI test reference&lt;/a&gt; lists what each test measures, its specification status, and whether Taiwan has data for it.&lt;/p&gt; &lt;p&gt;The most common misreading of this data is treating an anomaly as blocking. An anomaly only means a test did not complete as expected, which covers censorship, unstable networks, temporary ISP faults, and bugs in the test software. For the Tor test, countries without censorship such as Canada, Switzerland, and New Zealand also sit between &lt;code&gt;16%&lt;/code&gt; and &lt;code&gt;22%&lt;/code&gt;. Treating anomaly rates as blocking rates produces false accusations.&lt;/p&gt; &lt;p&gt;The exercise ran region by region and the northern drill was the last of the year, so the same conditions will not recur until next year. What was recorded is currently the only throttling data in Taiwan tied to a known scenario, which finally gives something to compare against the next time the network degrades unexpectedly.&lt;/p&gt; &lt;p&gt;To help work through the data, plan the next round of measurements, or ask anything about OONI&#39;s public data, join the discussion in the community &lt;a href=&#34;https://matrix.to/#/#community:im.anoni.net&#34; target=&#34;_blank&#34;&gt;Matrix Public Space&lt;/a&gt;.&lt;/p&gt; &lt;h2 id=&#34;Data-and-assumptions&#34;&gt;Data and assumptions&lt;a class=&#34;headerlink&#34; href=&#34;#Data-and-assumptions&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Queried on 2026-08-14. Measurements continue to arrive late, so re-running these queries may return slightly higher counts. All dates are Taipei time, shifted back 8 hours when converted to the UTC the API expects. Parameters such as &lt;code&gt;test_name&lt;/code&gt; are the literal values the API accepts, listed here so the queries can be reproduced.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Individual measurements for the day&lt;/strong&gt; come from the measurements endpoint with &lt;code&gt;probe_cc=TW&lt;/code&gt;, &lt;code&gt;since=2026-08-12T16:00:00Z&lt;/code&gt;, and &lt;code&gt;until=2026-08-13T16:00:00Z&lt;/code&gt;, covering all of 13 August in Taipei time, with &lt;code&gt;test_name&lt;/code&gt; set to &lt;code&gt;ndt&lt;/code&gt;, &lt;code&gt;dash&lt;/code&gt;, &lt;code&gt;web_connectivity&lt;/code&gt;, &lt;code&gt;tor&lt;/code&gt;, and &lt;code&gt;psiphon&lt;/code&gt; in turn. Per-window statistics such as the throttle window use a separate query covering UTC &lt;code&gt;06:00&lt;/code&gt; to &lt;code&gt;07:30&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Throughput, round-trip time, and device identity&lt;/strong&gt; come from the raw JSON of each measurement, retrieved through the &lt;code&gt;measurement_url&lt;/code&gt; in the listing; field locations are given in the walkthrough above. Mobile measurements here count only those with a network type of &lt;code&gt;mobile&lt;/code&gt;, excluding Wi-Fi and VPN. Devices are deduplicated by &lt;code&gt;probe_id&lt;/code&gt;, and measurements without that value are excluded from device counts. The per-carrier counts for the day cover all measurements on that ASN, matching how the 30-day baseline is calculated; after removing 2 VPN measurements and 3 with no network type, the counts completed on mobile networks are 67, 50, and 52. One of the 170 mobile measurements comes from &lt;code&gt;AS9416&lt;/code&gt;, which is not one of the three nationwide carriers and is left out of the carrier table.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;The 30-day mobile baseline&lt;/strong&gt; (564 measurements, median &lt;code&gt;12,425&lt;/code&gt; kbit/s, 4 below &lt;code&gt;2,000&lt;/code&gt; kbit/s, Chunghwa Telecom Mobile&#39;s lowest at &lt;code&gt;42,197&lt;/code&gt; kbit/s) comes from the measurements endpoint with &lt;code&gt;probe_cc=TW&lt;/code&gt;, &lt;code&gt;test_name=ndt&lt;/code&gt;, &lt;code&gt;since=2026-07-13T16:00:00Z&lt;/code&gt;, and &lt;code&gt;until=2026-08-12T16:00:00Z&lt;/code&gt;, covering 14 July to 12 August in Taipei time, with &lt;code&gt;probe_asn&lt;/code&gt; set to &lt;code&gt;AS24158&lt;/code&gt;, &lt;code&gt;AS17421&lt;/code&gt;, and &lt;code&gt;AS9674&lt;/code&gt;, again pulling raw JSON per measurement and dropping everything not on a mobile network.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Comparison days&lt;/strong&gt; use the same measurements parameters with the date changed to 2026-08-10, 2026-08-11, and 2026-08-12, over UTC &lt;code&gt;05:30&lt;/code&gt; to &lt;code&gt;07:30&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;No individual device identifier is published here. The field does appear in OONI&#39;s public data, but writing out specific values would build an index into one participant&#39;s measurement history, which serves no purpose the measurements themselves require.&lt;/p&gt; &lt;p&gt;Details of the exercise follow the &lt;a href=&#34;https://www.ey.gov.tw/Page/9277F759E41CCD91/66c2bed1-6ca3-4c30-ba7c-4fa0f90e00ec&#34; target=&#34;_blank&#34;&gt;Executive Yuan announcement&lt;/a&gt; and the carriers&#39; own notices&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:1&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt; &lt;hr /&gt; &lt;p&gt;&lt;strong&gt;Sources&lt;/strong&gt;: OONI measurements and aggregation APIs (query parameters above; measurement data licensed &lt;a href=&#34;https://github.com/ooni/license/blob/master/data/LICENSE.md&#34; target=&#34;_blank&#34;&gt;CC BY-NC-SA 4.0&lt;/a&gt;), ASN names from &lt;a href=&#34;https://stat.ripe.net/&#34; target=&#34;_blank&#34;&gt;RIPEstat&lt;/a&gt;.&lt;/p&gt; &lt;script src=&#34;https://cdn.jsdelivr.net/npm/vega@5&#34;&gt;&lt;/script&gt; &lt;script src=&#34;https://cdn.jsdelivr.net/npm/vega-lite@5&#34;&gt;&lt;/script&gt; &lt;script src=&#34;https://cdn.jsdelivr.net/npm/vega-embed@6/build/vega-embed.min.js&#34;&gt;&lt;/script&gt; &lt;div class=&#34;footnote&#34;&gt; &lt;hr /&gt; &lt;ol&gt; &lt;li id=&#34;fn:1&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://www.ey.gov.tw/Page/9277F759E41CCD91/66c2bed1-6ca3-4c30-ba7c-4fa0f90e00ec&#34; target=&#34;_blank&#34;&gt;2026 Urban Resilience (Air Defence) Exercise: mobile network throttling drill&lt;/a&gt; - Executive Yuan&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:1&#34; title=&#34;Jump back to footnote 1 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:2&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://www.cna.com.tw/news/aipl/202608100327.aspx&#34; target=&#34;_blank&#34;&gt;Executive Yuan elaborates on the throttling method&lt;/a&gt; - CNA&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:2&#34; title=&#34;Jump back to footnote 2 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;/ol&gt; &lt;/div&gt;</description> <link>https://ipfs.anoni.net/en/blog/2026/08/ooni-mobile-throttle-drill-results/</link> <pubDate>Fri, 21 Aug 2026 18:09:43 +0000</pubDate> <source url="https://ipfs.anoni.net/en/feed_rss_updated.xml">anoni.net Docs — Sinophone Asia-Pacific Networked Freedom Observatory</source><guid isPermaLink="true">https://ipfs.anoni.net/en/blog/2026/08/ooni-mobile-throttle-drill-results/</guid> <enclosure url="https://ipfs.anoni.net/en/assets/images/ooni-run-v2.webp" type="image/webp" length="21650" /> </item> <item> <title>Android 17 ships: the real GrapheneOS story is who decides what runs on your phone</title> <author>anoni.net Community</author> <category>Privacy</category> <category>Update</category> <description>&lt;h1 id=&#34;Android-17-ships-the-real-GrapheneOS-story-is-who-decides-what-runs-on-your-phone&#34;&gt;Android 17 ships: the real GrapheneOS story is who decides what runs on your phone&lt;a class=&#34;headerlink&#34; href=&#34;#Android-17-ships-the-real-GrapheneOS-story-is-who-decides-what-runs-on-your-phone&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt; &lt;figure&gt; &lt;a href=&#34;https://assets.anoni.net/blog/2026-grapheneos-android-17.jpg&#34; target=&#34;_blank&#34;&gt; &lt;img src=&#34;https://assets.anoni.net/blog/2026-grapheneos-android-17.jpg&#34; alt=&#34;Android 17 and GrapheneOS: who decides what runs on the phone you bought&#34; style=&#34;border-radius: 5px;&#34;&gt; &lt;/a&gt; &lt;figcaption markdown=&#34;span&#34;&gt;Image: a smartphone wrapped in a chain and padlock, standing in for a device locked down by outside rules. Photo by Towfiqu barbhuiya, via &lt;a href=&#34;https://www.pexels.com/photo/close-up-of-a-smart-phone-with-a-lock-11391947/&#34; target=&#34;_blank&#34;&gt;Pexels&lt;/a&gt; (Pexels License).&lt;/figcaption&gt; &lt;/figure&gt; &lt;p&gt;You paid for the phone, but what it can run and what it can install is increasingly &lt;strong&gt;not yours to decide&lt;/strong&gt;. That question stays invisible until an app refuses to open because it &#34;detected a non-stock OS,&#34; or an open-source OS you rely on gets harder to maintain because the hardware data behind it stops being public. &lt;a href=&#34;https://source.android.com/docs/whatsnew/android-17-release&#34; target=&#34;_blank&#34;&gt;Android 17&lt;/a&gt; landed on &lt;strong&gt;2026-06-16&lt;/strong&gt;, and it pushed that question one step further.&lt;/p&gt; &lt;p&gt;For privacy-minded users, the OS in the middle of this is &lt;a href=&#34;https://grapheneos.org/&#34; target=&#34;_blank&#34;&gt;GrapheneOS&lt;/a&gt;: a hardened, de-Googled Android built on AOSP. It runs almost exclusively on Google Pixel hardware, and Google has spent the past year adjusting how open Android and the Pixel actually are.&lt;/p&gt; &lt;h2 id=&#34;Why-this-matters-especially-in-APAC&#34;&gt;Why this matters (especially in APAC)&lt;a class=&#34;headerlink&#34; href=&#34;#Why-this-matters-especially-in-APAC&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;This reads like a US/EU story about Google and Brussels, but it is close to home for readers across &lt;strong&gt;East and Southeast Asia&lt;/strong&gt; and the &lt;strong&gt;Chinese-speaking world&lt;/strong&gt;. Android 17&#39;s new sideloading &#34;developer verification&#34; flow is rolling out &lt;strong&gt;first in Brazil, Indonesia, Singapore and Thailand in 2026&lt;/strong&gt;, expanding from there. Banking, payment and government apps across the region increasingly check whether a device is in &#34;stock&#34; state, and in mainland China that posture — device attestation plus real-name requirements — is already the norm. The losers are the same everywhere: people who want a phone they actually control.&lt;/p&gt; &lt;!-- more --&gt; &lt;h2 id=&#34;Googles-two-step-squeeze&#34;&gt;Google&#39;s two-step squeeze&lt;a class=&#34;headerlink&#34; href=&#34;#Googles-two-step-squeeze&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;GrapheneOS depends on Google publishing Android source and Pixel hardware data. Two moves tightened exactly that supply.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;March 2025&lt;/strong&gt;: Google moved Android&#39;s mainline development into private branches, publishing source to AOSP only at release. It is still open source, but outsiders no longer see the development in motion.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:1&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;June 2025&lt;/strong&gt;: with Android 16, Google stopped shipping the Pixel &lt;strong&gt;device tree&lt;/strong&gt; (the config that lets an OS actually drive a given phone&#39;s hardware) to AOSP, switching the reference target to the &lt;strong&gt;Cuttlefish&lt;/strong&gt; virtual device. Third-party OS developers are left reverse-engineering each month&#39;s hardware changes from prebuilt binaries.&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:2&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Even so, GrapheneOS &lt;strong&gt;ported Android 17 on launch day&lt;/strong&gt; (2026-06-16); after working around an upstream recovery-sideload bug, build &lt;code&gt;2026061800&lt;/code&gt; reached the Alpha channel on 2026-06-18.&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:3&#34;&gt;3&lt;/a&gt;&lt;/sup&gt; The porting speed held, but the reverse-engineering cost climbs with every release — a cost Google&#39;s policy added unilaterally.&lt;/p&gt; &lt;h2 id=&#34;The-other-squeeze-attestation&#34;&gt;The other squeeze: attestation&lt;a class=&#34;headerlink&#34; href=&#34;#The-other-squeeze-attestation&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Beyond development, GrapheneOS faces pressure on the &lt;strong&gt;usage&lt;/strong&gt; side through &lt;strong&gt;attestation&lt;/strong&gt; — apps checking in the background whether your phone is &#34;factory-approved.&#34; Google&#39;s &lt;strong&gt;Play Integrity API&lt;/strong&gt; marks non-Google-certified systems as failing; GrapheneOS, despite being &lt;em&gt;more&lt;/em&gt; secure than stock, gets lumped in with rooted phones. The more secure OS is the one shut out.&lt;/p&gt; &lt;p&gt;That line tightened through 2026:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Microsoft Authenticator&lt;/strong&gt; began root detection on Android in late February, flagging GrapheneOS via Play Integrity, with a staged plan to wipe affected Entra credentials by &lt;strong&gt;July 2026&lt;/strong&gt; (not yet reached at the time of writing).&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:4&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt; &lt;li&gt;The EU&#39;s &lt;strong&gt;Unified Attestation&lt;/strong&gt; proposal is, in GrapheneOS&#39;s reading, a European re-run of Play Integrity; the project has called on privacy-focused developers to &lt;strong&gt;boycott&lt;/strong&gt; it.&lt;sup id=&#34;fnref:5&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:5&#34;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Each mechanism has a stated reason — fraud, abuse, child safety — but stacked together they make an unapproved OS harder to use day to day.&lt;/p&gt; &lt;h2 id=&#34;GrapheneOSs-response-and-the-Pixel-question&#34;&gt;GrapheneOS&#39;s response, and the Pixel question&lt;a class=&#34;headerlink&#34; href=&#34;#GrapheneOSs-response-and-the-Pixel-question&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Facing Pixel uncertainty, GrapheneOS is looking for other hardware. At &lt;strong&gt;MWC 2026 (2026-03-01)&lt;/strong&gt; it announced a long-term partnership with &lt;strong&gt;Motorola&lt;/strong&gt; to ship devices preloaded with GrapheneOS and proper unlock/relock support — its first step beyond Pixel, though no model or date is confirmed yet.&lt;sup id=&#34;fnref:6&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:6&#34;&gt;6&lt;/a&gt;&lt;/sup&gt; GrapheneOS says Google&#39;s decision to stop publishing shared Pixel driver source is what pushed Motorola to reach out in the first place.&lt;sup id=&#34;fnref:7&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:7&#34;&gt;7&lt;/a&gt;&lt;/sup&gt; On Pixel itself, the project only says it is &#34;not sure&#34; whether it will add support for &lt;em&gt;newly launched&lt;/em&gt; Pixels after the current line — reporters inferred Pixel 11 might be the last, but that is inference, not a GrapheneOS commitment.&lt;sup id=&#34;fnref:8&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:8&#34;&gt;8&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt; &lt;h2 id=&#34;The-real-question&#34;&gt;The real question&lt;a class=&#34;headerlink&#34; href=&#34;#The-real-question&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Google tightening AOSP, Play Integrity deciding which systems pass, Microsoft excluding the ones that fail, the EU drafting its own certification, Android 17 gating sideloading — stacked up, what your phone can run and install is less and less your call. This is the same shape we wrote about in &lt;a href=&#34;../../02/2026-discord-matrix-statement/&#34;&gt;why we self-host Matrix&lt;/a&gt; and &lt;a href=&#34;../../05/2026-financial-companies-as-censors/&#34;&gt;when financial companies act like censors&lt;/a&gt;: when critical infrastructure sits with a few platforms that set the rules alone, ordinary users can neither take part nor opt out. The mobile OS is the most intimate layer of all — location, messages, photos, identity all live there.&lt;/p&gt; &lt;p&gt;GrapheneOS matters because it keeps that choice technically possible. It is not perfect — Pixel-bound, blocked by some apps, with a learning curve — but it proves a phone you actually control can still exist. If that is what you care about, GrapheneOS is the most mature option today, and the clearest place to watch where Google goes next.&lt;/p&gt; &lt;div class=&#34;admonition info&#34;&gt; &lt;p class=&#34;admonition-title&#34;&gt;Sources&lt;/p&gt; &lt;p&gt;Based on reporting from &lt;a href=&#34;https://9to5google.com/2025/03/26/google-android-aosp-developement-private/&#34; target=&#34;_blank&#34;&gt;9to5Google&lt;/a&gt;, &lt;a href=&#34;https://www.androidauthority.com/google-not-killing-aosp-3566882/&#34; target=&#34;_blank&#34;&gt;Android Authority&lt;/a&gt;, &lt;a href=&#34;https://piunikaweb.com/2026/03/12/grapheneos-explains-motorola-partnership-origin-the-uncertain-future-of-pixels/&#34; target=&#34;_blank&#34;&gt;PiunikaWeb&lt;/a&gt; and &lt;a href=&#34;https://www.theregister.com/on-prem/2026/03/10/microsoft_tightens_authenticator_checks_on/&#34; target=&#34;_blank&#34;&gt;The Register&lt;/a&gt;, plus the official &lt;a href=&#34;https://source.android.com/docs/whatsnew/android-17-release&#34; target=&#34;_blank&#34;&gt;Android 17 release notes&lt;/a&gt; and &lt;a href=&#34;https://grapheneos.org/&#34; target=&#34;_blank&#34;&gt;GrapheneOS&lt;/a&gt;. This is an anoni.net take with an APAC and Chinese-speaking-region angle, not a translation of any single source.&lt;/p&gt; &lt;/div&gt; &lt;div class=&#34;footnote&#34;&gt; &lt;hr /&gt; &lt;ol&gt; &lt;li id=&#34;fn:1&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://9to5google.com/2025/03/26/google-android-aosp-developement-private/&#34; target=&#34;_blank&#34;&gt;Google will develop the Android OS fully in private going forward&lt;/a&gt; - 9to5Google&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:1&#34; title=&#34;Jump back to footnote 1 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:2&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://www.androidauthority.com/google-not-killing-aosp-3566882/&#34; target=&#34;_blank&#34;&gt;AOSP isn&#39;t dead, but Google just landed a huge blow to custom ROM developers&lt;/a&gt; - Android Authority&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:2&#34; title=&#34;Jump back to footnote 2 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:3&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://discuss.grapheneos.org/d/36469-grapheneos-has-been-ported-to-android-17-and-official-releases-are-coming-soon&#34; target=&#34;_blank&#34;&gt;GrapheneOS has been ported to Android 17 and official releases are coming soon&lt;/a&gt; - GrapheneOS Discussion Forum&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:3&#34; title=&#34;Jump back to footnote 3 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:4&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://www.theregister.com/on-prem/2026/03/10/microsoft_tightens_authenticator_checks_on/&#34; target=&#34;_blank&#34;&gt;Microsoft tightens Authenticator checks on Android and iOS&lt;/a&gt; - The Register&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:4&#34; title=&#34;Jump back to footnote 4 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:5&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://piunikaweb.com/2026/03/10/grapheneos-calls-on-privacy-focused-app-developers-to-boycott-european-unified-attestation/&#34; target=&#34;_blank&#34;&gt;GrapheneOS calls on privacy-focused app developers to boycott European Unified Attestation&lt;/a&gt; - PiunikaWeb&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:5&#34; title=&#34;Jump back to footnote 5 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:6&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://9to5google.com/2026/03/01/motorola-confirms-grapheneos-partnership-for-a-future-smartphone-porting-features/&#34; target=&#34;_blank&#34;&gt;Motorola confirms GrapheneOS partnership for a future smartphone&lt;/a&gt; - 9to5Google&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:6&#34; title=&#34;Jump back to footnote 6 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:7&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://piunikaweb.com/2026/03/12/grapheneos-explains-motorola-partnership-origin-the-uncertain-future-of-pixels/&#34; target=&#34;_blank&#34;&gt;GrapheneOS explains Motorola partnership origin &amp;amp; the uncertain future of Pixels&lt;/a&gt; - PiunikaWeb&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:7&#34; title=&#34;Jump back to footnote 7 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:8&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://piunikaweb.com/2026/01/26/pixel-11-could-be-the-last-new-pixel-to-gain-grapheneos-support/&#34; target=&#34;_blank&#34;&gt;Pixel 11 could be the last new Pixel to gain GrapheneOS support&lt;/a&gt; - PiunikaWeb&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:8&#34; title=&#34;Jump back to footnote 8 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;/ol&gt; &lt;/div&gt;</description> <link>https://ipfs.anoni.net/en/blog/2026/07/2026-grapheneos-android-17/</link> <pubDate>Wed, 19 Aug 2026 17:45:46 +0000</pubDate> <source url="https://ipfs.anoni.net/en/feed_rss_updated.xml">anoni.net Docs — Sinophone Asia-Pacific Networked Freedom Observatory</source><guid isPermaLink="true">https://ipfs.anoni.net/en/blog/2026/07/2026-grapheneos-android-17/</guid> <enclosure url="https://assets.anoni.net/blog/2026-grapheneos-android-17.jpg" type="image/jpeg" length="887950" /> </item> <item> <title>Section 702 Has Expired: A Sinophone Asia-Pacific Read on Warrantless US Surveillance</title> <author>anoni.net Community</author> <category>Privacy</category> <category>Translated Article</category> <category>Update</category> <description>&lt;h1 id=&#34;Section-702-Has-Expired-A-Sinophone-Asia-Pacific-Read-on-Warrantless-US-Surveillance&#34;&gt;Section 702 Has Expired: A Sinophone Asia-Pacific Read on Warrantless US Surveillance&lt;a class=&#34;headerlink&#34; href=&#34;#Section-702-Has-Expired-A-Sinophone-Asia-Pacific-Read-on-Warrantless-US-Surveillance&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt; &lt;figure&gt; &lt;a href=&#34;https://assets.anoni.net/blog/2026-victory-702-has-expired.png&#34; target=&#34;_blank&#34;&gt; &lt;img src=&#34;https://assets.anoni.net/blog/2026-victory-702-has-expired.png&#34; alt=&#34;EFF&#39;s NSA eagle graphic, reworking the NSA seal into an eagle plugging its talons into telecom lines, representing warrantless mass surveillance&#34; style=&#34;border-radius: 10px;&#34;&gt; &lt;/a&gt; &lt;figcaption markdown=&#34;span&#34;&gt;Image: EFF designer Hugh D&#39;Andrade&#39;s &#34;NSA eagle,&#34; which reworks the NSA seal into an eagle plugging its talons into the nation&#39;s telecom lines. From &lt;a href=&#34;https://www.eff.org/nsa-spying&#34; target=&#34;_blank&#34;&gt;EFF&#39;s NSA spying work&lt;/a&gt;, licensed under &lt;a href=&#34;https://creativecommons.org/licenses/by/4.0/&#34; target=&#34;_blank&#34;&gt;CC BY 4.0&lt;/a&gt;&lt;sup id=&#34;fnref:img&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:img&#34;&gt;10&lt;/a&gt;&lt;/sup&gt;.&lt;/figcaption&gt; &lt;/figure&gt; &lt;div class=&#34;admonition info&#34;&gt; &lt;p&gt;This post is an anoni.net reading based on the EFF Deeplinks article:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&#34;https://www.eff.org/deeplinks/2026/06/victory-702-has-expired&#34; target=&#34;_blank&#34;&gt;Victory! 702 has Expired! | June 12, 2026&lt;/a&gt; by India McKinney&lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;p&gt;At midnight on &lt;strong&gt;12 June 2026&lt;/strong&gt;, Section 702 of the Foreign Intelligence Surveillance Act lapsed&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:1&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;. EFF, which spent years arguing the program should require a warrant before the FBI reaches Americans&#39; communications — or else expire — calls the lapse a victory&lt;sup id=&#34;fnref2:1&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:1&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt; &lt;p&gt;It is a real victory, and a narrow one. Section 702 was always built to collect the communications of &lt;em&gt;non-US persons&lt;/em&gt; located abroad. That means everyone outside America — including readers in Taiwan, Hong Kong, mainland China, Macau, Singapore, and Malaysia — has always been a lawful target of this authority. The fight that just lapsed it was overwhelmingly a fight about protecting Americans. For the rest of us, the lapse changes much less than the headline suggests.&lt;/p&gt; &lt;!-- more --&gt; &lt;h2 id=&#34;What-Section-702-is&#34;&gt;What Section 702 is&lt;a class=&#34;headerlink&#34; href=&#34;#What-Section-702-is&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Section 702 was created by the FISA Amendments Act of 2008&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:3&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;. It lets US intelligence agencies collect the communications — emails, messages, calls — of foreigners abroad believed to hold foreign intelligence value, without an individual warrant. US citizens are shielded by the Fourth Amendment and a warrant requirement; non-US persons are not.&lt;/p&gt; &lt;p&gt;In practice, 702 also sweeps up large volumes of Americans&#39; communications through what the government calls &#34;incidental collection&#34;: whenever an American corresponds with a targeted foreigner, their side of the conversation lands in the database too. That is where the domestic controversy starts.&lt;/p&gt; &lt;p&gt;Two collection methods sit under 702, and the names are familiar:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Downstream (formerly PRISM):&lt;/strong&gt; the government compels companies such as Google, Microsoft, Apple, Facebook, and Yahoo to hand over matching user communications&lt;sup id=&#34;fnref2:2&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:2&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Upstream:&lt;/strong&gt; the NSA collects traffic directly from the internet backbone — the cables and switches that carry it&lt;sup id=&#34;fnref3:2&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:2&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;.&lt;/li&gt; &lt;/ul&gt; &lt;h2 id=&#34;The-Snowden-connection&#34;&gt;The Snowden connection&lt;a class=&#34;headerlink&#34; href=&#34;#The-Snowden-connection&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;The link to Edward Snowden is direct. PRISM and Upstream are the two concrete programs the 2013 disclosures revealed&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:2&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;, and both run on Section 702 as their legal basis. When the world first learned in June 2013 that the US could collect global internet traffic at this scale, what it was looking at was Section 702 in operation. Snowden exposed &lt;em&gt;how&lt;/em&gt; the collection works; Section 702 is &lt;em&gt;what makes it lawful&lt;/em&gt;.&lt;/p&gt; &lt;p&gt;Thirteen years later, the authority behind those programs has lapsed for the first time.&lt;/p&gt; &lt;h2 id=&#34;Backdoor-searches-the-core-of-the-fight&#34;&gt;Backdoor searches: the core of the fight&lt;a class=&#34;headerlink&#34; href=&#34;#Backdoor-searches-the-core-of-the-fight&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;702 nominally targets foreigners. What drew the constitutional fight inside the US is the &lt;strong&gt;backdoor search&lt;/strong&gt; — officially a &#34;US person query.&#34; Because incidental collection fills the 702 database with Americans&#39; communications, the FBI, CIA, and NSA can query it using an American&#39;s name, email, or phone number, with no separate warrant — routing around the Fourth Amendment.&lt;/p&gt; &lt;p&gt;The numbers are large, and so are the compliance failures. The FBI ran close to 5 million US person queries between 2019 and 2022; the queries were mostly procedurally permitted, but the dispute is that most lacked a documented justification&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:4&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;. In a single reporting period the government disclosed more than 278,000 noncompliant searches of the Section 702 database&lt;sup id=&#34;fnref2:4&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:4&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;. The 2024 Reforming Intelligence and Securing America Act (RISAA) added modest reforms but left warrantless querying intact, and by August 2024 the FBI was reported to be using a tool that sidestepped even those limits&lt;sup id=&#34;fnref3:4&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:4&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt; &lt;h2 id=&#34;What-happened-in-June-2026&#34;&gt;What happened in June 2026&lt;a class=&#34;headerlink&#34; href=&#34;#What-happened-in-June-2026&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;The lapse turned on a personnel fight. President Trump named Bill Pulte — then director of the Federal Housing Finance Agency — as acting Director of National Intelligence, replacing the departing Tulsi Gabbard&lt;sup id=&#34;fnref3:1&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:1&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;sup id=&#34;fnref:5&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:5&#34;&gt;5&lt;/a&gt;&lt;/sup&gt;. The DNI oversees the agencies that run 702, and handing that post to someone with no intelligence background who had pursued the president&#39;s political opponents on mortgage-fraud allegations was enough that Senate Democrats refused to advance their reauthorization bill, while the House rejected even a short-term extension&lt;sup id=&#34;fnref4:1&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:1&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;sup id=&#34;fnref2:5&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:5&#34;&gt;5&lt;/a&gt;&lt;/sup&gt;. After several temporary extensions, the authority stopped at midnight on 12 June&lt;sup id=&#34;fnref5:1&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:1&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt; &lt;p&gt;Expiry does not mean collection stopped that day. The Foreign Intelligence Surveillance Court&#39;s existing certifications run through March 2027, giving collection a legal basis in the meantime; as one legal expert put it, &#34;702 will not go dark — that is a myth&#34;&lt;sup id=&#34;fnref3:5&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:5&#34;&gt;5&lt;/a&gt;&lt;/sup&gt;. The lapse is a legal and political turning point, not an off switch.&lt;/p&gt; &lt;h2 id=&#34;Why-EFF-still-calls-it-a-victory&#34;&gt;Why EFF still calls it a victory&lt;a class=&#34;headerlink&#34; href=&#34;#Why-EFF-still-calls-it-a-victory&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;EFF&#39;s point is that the abuse risk never depended on any one person or administration. If Congress is worried that someone might reach Americans&#39; sensitive data, the responsible fix is stronger structural transparency, accountability, and oversight — not swapping out a single nominee&lt;sup id=&#34;fnref6:1&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:1&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;. Across 2026, bipartisan appetite for reform grew, with more members opposing any reauthorization that lacks a warrant requirement for backdoor searches&lt;sup id=&#34;fnref7:1&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:1&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;. An authority that ran for over a decade, survived Snowden, and repeatedly beat back reform was forced into a lapse — that, by itself, shows sustained advocacy works.&lt;/p&gt; &lt;h2 id=&#34;Seen-from-outside-the-US&#34;&gt;Seen from outside the US&lt;a class=&#34;headerlink&#34; href=&#34;#Seen-from-outside-the-US&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;If you are outside America, the most important thing to take from the lapse is your position in the structure. 702 targets non-US persons, so simply being in Taiwan, Hong Kong, mainland China, Macau, Singapore, or anywhere else outside the US already places you inside the lawful scope. The backdoor-search fight is about Americans whose Fourth Amendment protection was routed around. You were never inside that protection — querying your 702-collected communications is not even a back door for the US government; it is the front door.&lt;/p&gt; &lt;p&gt;A common reflex is to assume this does not matter because you are not personally a target. But privacy protects against &lt;em&gt;capability&lt;/em&gt;, not against present intent. An agency that is not interested in you today does not thereby give up the capability, and the targets and uses of mass collection shift with politics. Putting any actor with mass-collection capability into the same threat model is more reliable than betting that you will stay uninteresting.&lt;/p&gt; &lt;p&gt;And the lapse does not close the other doors. The NSA&#39;s primary authority for overseas signals intelligence is &lt;strong&gt;Executive Order 12333&lt;/strong&gt; (signed in 1981), which has no FISA Court supervision, limited congressional oversight, and is entirely unaffected by the 702 lapse&lt;sup id=&#34;fnref:6&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:6&#34;&gt;6&lt;/a&gt;&lt;/sup&gt;. Collection of non-US persons can continue with or without 702. That is why the &#34;victory&#34; is thinner from outside America, and why the durable answer is encryption you control rather than any single statute.&lt;/p&gt; &lt;p&gt;Data residency is the next misunderstanding. Sinophone Asia-Pacific users lean heavily on US cloud and communication services — Google Workspace, Microsoft 365, iCloud, AWS, and Meta&#39;s WhatsApp and Instagram (some of which require getting around blocking inside mainland China, but are everyday tools in Hong Kong, Macau, Singapore, Malaysia, and the diaspora). Keeping data in a local data center does not exempt it: if the provider is headquartered in the US, the &lt;strong&gt;CLOUD Act&lt;/strong&gt; (2018) can compel it to hand over data it controls regardless of where the servers sit&lt;sup id=&#34;fnref:7&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:7&#34;&gt;7&lt;/a&gt;&lt;/sup&gt;. The EU spent years litigating this same problem with the US; the Sinophone region has no equivalent arrangement at all. The defense that actually holds is end-to-end encryption (E2EE): if the keys are not in the provider&#39;s hands, data handed over or intercepted in transit stays unreadable — which is what blunts both incidental collection and backdoor searches.&lt;/p&gt; &lt;p&gt;Encryption protects content; &lt;strong&gt;Tor&lt;/strong&gt; also hides the connection itself. Upstream reads traffic off the backbone — where you connect, who you talk to. Places like Taiwan and Hong Kong route most international traffic over submarine cables&lt;sup id=&#34;fnref:8&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:8&#34;&gt;8&lt;/a&gt;&lt;/sup&gt;, and the trans-Pacific routes to the US west and east coasts are major trunks; whenever a connection&#39;s destination or path crosses a US backbone, the packets fall within Upstream&#39;s reach. Tor encrypts and relays traffic through multiple hops, so the backbone sees only encrypted Tor traffic and the provider cannot tie it to the real user, breaking the connection mapping that PRISM and Upstream rely on. Tor blunts this kind of bulk passive collection, though not targeted active attacks — the NSA&#39;s own &#34;Tor Stinks&#34; deck conceded it could only deanonymize a small fraction of users&lt;sup id=&#34;fnref:9&#34;&gt;&lt;a class=&#34;footnote-ref&#34; href=&#34;#fn:9&#34;&gt;9&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt; &lt;p&gt;Risk is not evenly spread. Journalists and civil-society groups who work with overseas newsrooms, international bodies, and sources already carry heavy cross-border traffic, so incidental collection reaches them more often; those roles are worth raising the bar for — sensitive collaboration over Tor, source lists kept off US-company clouds. And for many Sinophone users, the more immediate threat is domestic surveillance — from mainland China&#39;s censorship and real-name systems to the varying communications-interception regimes across the region — against which the same tools, E2EE and Tor, are the same line of defense. anoni.net invests in decentralization, self-hosting, and encryption precisely because, as 12 June showed, collection continues and EO 12333 is untouched: the prudent move is capability you hold yourself, not a law you hope holds.&lt;/p&gt; &lt;p&gt;The lapse will not make surveillance disappear, and it will not zero out the privacy risk on cross-border communication. For anyone outside the US, the thing to watch is the legal structure that authorizes collection — and the first concrete step is small: move everyday contact onto tools that are end-to-end encrypted by default, and route sensitive connections through Tor.&lt;/p&gt; &lt;h2 id=&#34;Related-reading&#34;&gt;Related reading&lt;a class=&#34;headerlink&#34; href=&#34;#Related-reading&#34; title=&#34;Permanent link&#34;&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&#34;../../../../basics/internet-freedom/&#34;&gt;Why internet freedom matters&lt;/a&gt;: the structural framing behind authorities like 702&lt;/li&gt; &lt;li&gt;&lt;a href=&#34;https://www.eff.org/pages/upstream-prism&#34; target=&#34;_blank&#34;&gt;Upstream vs. PRISM&lt;/a&gt; — EFF, on the two 702 collection methods&lt;/li&gt; &lt;li&gt;&lt;a href=&#34;https://www.brennancenter.org/our-work/research-reports/section-702-foreign-intelligence-surveillance-act&#34; target=&#34;_blank&#34;&gt;Section 702, Explained&lt;/a&gt; — Brennan Center&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&lt;em&gt;English coverage of the technical defenses here is still thin on this site; the deeper concept and tool pages exist in Mandarin and are on the roadmap for English.&lt;/em&gt;&lt;/p&gt; &lt;div class=&#34;footnote&#34;&gt; &lt;hr /&gt; &lt;ol&gt; &lt;li id=&#34;fn:1&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://www.eff.org/deeplinks/2026/06/victory-702-has-expired&#34; target=&#34;_blank&#34;&gt;Victory! 702 has Expired!&lt;/a&gt; - EFF Deeplinks (India McKinney, 2026-06-12)&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:1&#34; title=&#34;Jump back to footnote 1 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref2:1&#34; title=&#34;Jump back to footnote 1 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref3:1&#34; title=&#34;Jump back to footnote 1 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref4:1&#34; title=&#34;Jump back to footnote 1 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref5:1&#34; title=&#34;Jump back to footnote 1 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref6:1&#34; title=&#34;Jump back to footnote 1 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref7:1&#34; title=&#34;Jump back to footnote 1 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:2&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://www.eff.org/pages/upstream-prism&#34; target=&#34;_blank&#34;&gt;Upstream vs. PRISM&lt;/a&gt; - EFF (the two collection methods under 702 and their link to the 2013 Snowden disclosures)&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:2&#34; title=&#34;Jump back to footnote 2 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref2:2&#34; title=&#34;Jump back to footnote 2 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref3:2&#34; title=&#34;Jump back to footnote 2 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:3&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://www.eff.org/deeplinks/2026/06/702-ultimatum-warrant-requirement-or-bust&#34; target=&#34;_blank&#34;&gt;The 702 Ultimatum: Warrant Requirement or Bust&lt;/a&gt; - EFF Deeplinks&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:3&#34; title=&#34;Jump back to footnote 3 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:4&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://www.brennancenter.org/our-work/research-reports/section-702-foreign-intelligence-surveillance-act&#34; target=&#34;_blank&#34;&gt;Section 702 of the Foreign Intelligence Surveillance Act, Explained&lt;/a&gt; - Brennan Center for Justice (backdoor-search counts, compliance violations, RISAA background)&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:4&#34; title=&#34;Jump back to footnote 4 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref2:4&#34; title=&#34;Jump back to footnote 4 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref3:4&#34; title=&#34;Jump back to footnote 4 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:5&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://www.cbsnews.com/news/fisa-section-702-expiring-congress-what-that-means/&#34; target=&#34;_blank&#34;&gt;A key spy authority, Section 702, expired due to inaction in Congress. Here&#39;s what happens next.&lt;/a&gt; - CBS News (timeline, Pulte appointment, certifications continuing through March 2027)&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:5&#34; title=&#34;Jump back to footnote 5 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref2:5&#34; title=&#34;Jump back to footnote 5 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref3:5&#34; title=&#34;Jump back to footnote 5 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:6&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://www.brennancenter.org/our-work/research-reports/foreign-intelligence-surveillance-fisa-section-702-executive-order-12333&#34; target=&#34;_blank&#34;&gt;Foreign Intelligence Surveillance (FISA Section 702, Executive Order 12333, and Section 215 of the Patriot Act): A Resource Page&lt;/a&gt; - Brennan Center for Justice (EO 12333 as the primary overseas authority, without FISC oversight, unaffected by the 702 lapse)&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:6&#34; title=&#34;Jump back to footnote 6 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:7&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://www.congress.gov/crs-product/R45173&#34; target=&#34;_blank&#34;&gt;Cross-Border Data Sharing Under the CLOUD Act&lt;/a&gt; - Congressional Research Service (US providers can be compelled to disclose data they control regardless of server location)&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:7&#34; title=&#34;Jump back to footnote 7 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:8&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://taiwaninsight.org/2024/10/02/the-most-critical-resilience-questions-of-them-all-taiwans-undersea-cables/&#34; target=&#34;_blank&#34;&gt;Taiwan&#39;s undersea cables&lt;/a&gt; - Taiwan Insight (Taiwan&#39;s dependence on international submarine cables)&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:8&#34; title=&#34;Jump back to footnote 8 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:9&#34;&gt; &lt;p&gt;&lt;a href=&#34;https://www.schneier.com/essays/archives/2013/10/nsa_and_gchq_target.html&#34; target=&#34;_blank&#34;&gt;NSA and GCHQ target Tor network that protects anonymity of web users&lt;/a&gt; - Bruce Schneier (originally in The Guardian, on the &#34;Tor Stinks&#34; and EgotisticalGiraffe documents)&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:9&#34; title=&#34;Jump back to footnote 9 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;li id=&#34;fn:img&#34;&gt; &lt;p&gt;Header image &lt;a href=&#34;https://www.eff.org/files/banner_library/NSA-eagle-2_0.png&#34; target=&#34;_blank&#34;&gt;NSA-eagle-2_0.png&lt;/a&gt;, from &lt;a href=&#34;https://www.eff.org/nsa-spying&#34; target=&#34;_blank&#34;&gt;EFF&#39;s NSA spying work&lt;/a&gt;, by EFF designer Hugh D&#39;Andrade, licensed &lt;a href=&#34;https://creativecommons.org/licenses/by/4.0/&#34; target=&#34;_blank&#34;&gt;CC BY 4.0&lt;/a&gt;.&amp;#160;&lt;a class=&#34;footnote-backref&#34; href=&#34;#fnref:img&#34; title=&#34;Jump back to footnote 10 in the text&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;/ol&gt; &lt;/div&gt;</description> <link>https://ipfs.anoni.net/en/blog/2026/07/2026-victory-702-has-expired/</link> <pubDate>Wed, 19 Aug 2026 17:45:46 +0000</pubDate> <source url="https://ipfs.anoni.net/en/feed_rss_updated.xml">anoni.net Docs — Sinophone Asia-Pacific Networked Freedom Observatory</source><guid isPermaLink="true">https://ipfs.anoni.net/en/blog/2026/07/2026-victory-702-has-expired/</guid> <enclosure url="https://assets.anoni.net/blog/2026-victory-702-has-expired.png" type="image/png" length="57767" /> </item> </channel> </rss>