[tor-commits] [ooni-probe/master] Address feedback by @bassosimone

art at torproject.org art at torproject.org
Mon May 30 16:28:34 UTC 2016


commit 2d5b7988c23697cd6af390c6ed649d69b7380dff
Author: Arturo Filastò <arturo at filasto.net>
Date:   Tue May 24 11:34:58 2016 +0200

    Address feedback by @bassosimone
    
    * Distinguish between http-failure and http-diff
    
    * Update description of web_connectivity test
    
    * Various consistency and stylistic improvements
---
 ooni/nettests/blocking/web_connectivity.py | 23 ++++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)

diff --git a/ooni/nettests/blocking/web_connectivity.py b/ooni/nettests/blocking/web_connectivity.py
index 4f5f4e4..3560cb0 100644
--- a/ooni/nettests/blocking/web_connectivity.py
+++ b/ooni/nettests/blocking/web_connectivity.py
@@ -68,8 +68,10 @@ class WebConnectivityTest(httpt.HTTPTest, dnst.DNSTest):
     Web connectivity
     """
     name = "Web connectivity"
-    description = ("Performs a HTTP GET request over Tor and one over the "
-                  "local network and compares the two results.")
+    description = ("Identifies the reason for blocking of a given URL by "
+                   "performing DNS resolution of the hostname, doing a TCP "
+                   "connect to the resolved IPs and then fetching the page "
+                   "and comparing all these results with those of a control.")
     author = "Arturo Filastò"
     version = "0.1.0"
 
@@ -126,12 +128,12 @@ class WebConnectivityTest(httpt.HTTPTest, dnst.DNSTest):
                 if not l:
                     continue
                 # Skip comment lines
-                elif l.startswith('#'):
+                if l.startswith('#'):
                     continue
                 yield l
 
+        fh = open(filename)
         try:
-            fh = open(filename)
             line = fh.readline()
             # Detect the line of the citizenlab input file
             if line.startswith("url,"):
@@ -140,7 +142,8 @@ class WebConnectivityTest(httpt.HTTPTest, dnst.DNSTest):
                 fh.seek(0)
                 generator = simple_file_generator(fh)
             for i in generator:
-                if not i.startswith("http"):
+                if (not i.startswith("http://") and
+                        not i.startswith("https://")):
                     i = "http://{}/".format(i)
                 yield i
         finally:
@@ -200,7 +203,7 @@ class WebConnectivityTest(httpt.HTTPTest, dnst.DNSTest):
         log.msg("* doing DNS query for {}".format(self.hostname))
         return self.performALookup(self.hostname)
 
-    def tcp_connect(self, socket):
+    def experiment_tcp_connect(self, socket):
         log.msg("* connecting to {}".format(socket))
         ip_address, port = socket.split(":")
         port = int(port)
@@ -365,12 +368,10 @@ class WebConnectivityTest(httpt.HTTPTest, dnst.DNSTest):
                 experiment_http_failure is not None):
             blocking = 'tcp_ip'
 
-        # XXX we may want to have different codes for these two types of
-        # blocking
         elif (dns_consistent == True and
               tcp_connect == True and
               got_expected_web_page == False):
-            blocking = 'http'
+            blocking = 'http-diff'
 
         elif (dns_consistent == True and
               tcp_connect == True and
@@ -379,7 +380,7 @@ class WebConnectivityTest(httpt.HTTPTest, dnst.DNSTest):
             if experiment_http_failure == 'dns_lookup_error':
                 blocking = 'dns'
             else:
-                blocking = 'http'
+                blocking = 'http-failure'
 
         elif (dns_consistent == False and
                   (got_expected_web_page == False or
@@ -425,7 +426,7 @@ class WebConnectivityTest(httpt.HTTPTest, dnst.DNSTest):
         # STEALTH in here we should make changes to make the test more stealth
         dl = []
         for socket in sockets:
-            dl.append(self.tcp_connect(socket))
+            dl.append(self.experiment_tcp_connect(socket))
         results = yield defer.DeferredList(dl)
 
         experiment_http = self.experiment_http_get_request()





More information about the tor-commits mailing list