Analyzing Network Interference with ooniprobe (with examples)
The ooniprobe command is a powerful tool provided by the Open Observatory of Network Interference (OONI) project. This command allows users to test the blocking of websites and apps, as well as measure the speed and performance of their network. In this article, we will explore different use cases of the ooniprobe command, along with code examples and explanations for each one.
Use Case 1: Listing all tests performed
Code:
ooniprobe list
Motivation:
By listing all tests performed, users can have an overview of the available tests provided by ooniprobe. This can help them determine which specific test they want to run or get more information about.
Explanation:
The “list” argument is used to display the available tests provided by ooniprobe. By running this command, users get a numbered list of tests that can be performed.
Example Output:
1. performance
2. websites
3. chat
4. censorship_test
5. facebook_messenger
6. whatsapp
7. telegram
8. http_invalid_request_line
9. http_header_field_manipulation
10. http_host
...
Use Case 2: Showing information about a specific test
Code:
ooniprobe list 7
Motivation:
Sometimes, users may want to know more details about a specific test provided by ooniprobe before running it. This can help them understand the purpose and scope of the test, as well as any specific requirements or limitations.
Explanation:
The “list” argument followed by a test number is used to display detailed information about a specific test. In this example, the number 7 represents the “telegram” test.
Example Output:
[Features]
This test measures the blocking of Telegram.
[List of Measurements]
- telegram
- telegram_web
[Measurement Specification]
- ID: telegram
- Name: Telegram
- Description: Test the blocking of Telegram.
- Instructions: ...
- Implementation: OONI Team
[Measurement Specification]
- ID: telegram_web
- Name: Telegram Web
- Description: Test the blocking of Telegram Web.
- Instructions: ...
- Implementation: OONI Team
Use Case 3: Running all available tests
Code:
ooniprobe run all
Motivation:
By running all available tests, users can gain comprehensive insights into the blocking and performance characteristics of their network. This can help them identify any potential issues or anomalies.
Explanation:
The “run” argument followed by “all” is used to execute all available tests provided by ooniprobe. This command will run each test one after another and provide detailed measurement results.
Example Output:
Running test: performance
...
Running test: websites
...
Running test: chat
...
...
Use Case 4: Performing a specific test
Code:
ooniprobe run performance
Motivation:
Sometimes, users may want to focus on a specific aspect of their network’s performance. By running a specific test, they can measure and analyze the performance of specific protocols, network services, or data transfer speeds.
Explanation:
The “run” argument followed by the name of the specific test is used to execute that particular test provided by ooniprobe. In this example, the “performance” test will be executed.
Example Output:
Running test: performance
...
...
Use Case 5: Checking the availability of a specific website
Code:
ooniprobe run websites --input https://ooni.org/
Motivation:
Users may want to check if a specific website is accessible or blocked within their network. By providing the URL of the website as input, they can measure and analyze the availability of that website.
Explanation:
The “run” argument followed by “websites” is used to execute the websites test provided by ooniprobe. The “–input” argument is used to specify the URL of the website to be tested. In this example, the availability of “https://ooni.org/" will be checked.
Example Output:
Running test: websites
Testing website: https://ooni.org/
...
...
Use Case 6: Checking the availability of multiple websites listed in a file
Code:
ooniprobe run websites --input-file path/to/my-websites.txt
Motivation:
Users may have a list of multiple websites that they want to test for availability or blocking. By providing a text file containing the list of URLs, they can perform batch tests on all the websites in one go.
Explanation:
The “run” argument followed by “websites” is used to execute the websites test provided by ooniprobe. The “–input-file” argument is used to specify the path to the text file containing the list of websites to be tested. In this example, the availability of websites listed in “my-websites.txt” will be checked.
Example Output:
Running test: websites
Testing website: https://example1.com/
...
Testing website: https://example2.com/
...
...
Use Case 7: Displaying detailed information about a test in JSON format
Code:
ooniprobe show 9
Motivation:
Users may want to retrieve detailed information about a specific test to understand its purpose, scope, and measurement specifications. By displaying this information in JSON format, it can be easily parsed and processed by other tools or scripts.
Explanation:
The “show” argument followed by a test number is used to display detailed information about a specific test in JSON format. In this example, the number 9 represents the “http_host” test.
Example Output:
{
"id": "http_host",
"name": "Host",
"description": "Test the blocking of domains.",
"instructions": "..."
}
Conclusion:
The ooniprobe command provides a versatile tool for analyzing network interference, measuring performance, and testing the availability of websites and apps. From listing available tests to running specific tests, users can gain valuable insights into their network’s behavior using the various features provided by ooniprobe.