Research OONI pt. 1
-
install and run OONI Probe for Android, Desktop and CLI -
collect and read architectural documentation -
check out, fork and build probe-engine and mini-ooni repository
I couldn't find a real documentation how to use mini-ooni, but the source code helped
Specs
developer's intro: https://github.com/ooni/spec/tree/master/probe
introducing new nettests (aka. experiments)
https://github.com/ooni/spec#new-proposal-process
Build mini-ooni from our repository
to build ooni cli a workaround is needed at the moment: https://github.com/ooni/probe-engine/issues/866
cd probe-engine
git pull
git checkout workaround_for_go1.15
./build-cli.sh linux
- the script is also able to build windows and mac cli's
- the resulting cli binary can be found in ./CLI///miniooni
Running tests
- Tests are called experiments
- you can run an experiment by
./CLI/linux/amd64/miniooni <experimentparameter>
available parameter values for experiments can be found in https://0xacab.org/leap/probe-engine/-/blob/master/experiment.go#L442
That are: dash
, example
, example_with_input
, example_with_input_non_interruptible
, example_with_failure
, facebook_messenger
, http_header_field_manipulation
, http_invalid_request_line
, ndt
, psiphon
, sni_blocking
, stun_reachability
, telegram
, tor
, urlgetter
, web_connectivity
, whatsapp
and it's specifications can be found here: https://github.com/ooni/spec/tree/master/nettests
example tests
./CLI/linux/amd64/miniooni example_with_input
fetches input data from the ooni api /api/v1/test-list/urls (see
https://0xacab.org/leap/probe-engine/-/blob/master/libminiooni/libminiooni.go#L349 and
https://0xacab.org/leap/probe-engine/blob/master/probeservices/urls.go#L21)
./CLI/linux/amd64/miniooni -i https://riseup.net/provider.json example_with_input
runs example_with_input experiment for https://riseup.net/provider.json
it is also possible to start an experiment with a list of urls to test:
touch urllist.txt && echo https://riseup.net/provider.json > urllist.txt
./CLI/linux/amd64/miniooni -f urllist.txt example_with_input
Writing tests
As a starting point we can have a look at: