Add a script to process OONI tor test data using the OONI API
OONI publishes tor test data on the reachability of our default bridges and directory authorities as a part of their tor test suite. This data is available through the OONI API.
A request like https://api.ooni.io/api/v1/measurements?until=2021-04-15&since=2021-04-01&probe_cc=BY&test_name=tor will return a json with measurement ids and summary information. A followup API request for individual measurement IDs such as https://ams-pg.ooni.org/api/v1/raw_measurement?report_id=20210414T221337Z_tor_BY_42772_n1_LfXbFf0lY7tjmRKm will return more fine-grained information.
There are a few gotchas with interacting with the APIs and the OONI data:
- requests that take too long will return a 500 error. In this case, a request for a shorter time duration is needed.
- anomalies are not necessarily due to censorship events and there is a lot of noise due to variations in connection success and quality
In aggregate, this data is useful for seeing how blocking events vary across ASes and corrolates with our default bridge metrics. For example:
These two plots are correlated and show that default bridges were still reachable by the major ASes in early February, that all ASes other than 6697 blocked Tor bridges later in February and that the more complete blocking in AS6697 likely contributed to the even lower user counts in March.