Skip to content

Commit 39795c7

Browse files
committed
Add --url alternative onionoo relay list option
1 parent cf52224 commit 39795c7

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

src/tor_relay_scanner/scanner.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,14 @@ def _grab(self, url):
4646
with requests.get(url, timeout=int(self.timeout), proxies=self.proxy) as r:
4747
return r.json()
4848

49-
def grab(self):
49+
def grab(self, preferred_urls_list=None):
5050
BASEURL = "https://onionoo.torproject.org/details?type=relay&running=true&fields=fingerprint,or_addresses"
5151
# Use public CORS proxy as a regular proxy in case if onionoo.torproject.org is unreachable
52-
URLS = (BASEURL,
53-
"https://icors.vercel.app/?" + urllib.parse.quote(BASEURL))
52+
URLS = [BASEURL,
53+
"https://icors.vercel.app/?" + urllib.parse.quote(BASEURL)]
54+
if preferred_urls_list:
55+
for pref_url in preferred_urls_list:
56+
URLS.insert(0, pref_url)
5457

5558
for url in URLS:
5659
try:
@@ -60,8 +63,8 @@ def grab(self):
6063
urllib.parse.urlparse(url).hostname, e
6164
), file=sys.stderr)
6265

63-
def grab_parse(self):
64-
grabbed = self.grab()
66+
def grab_parse(self, preferred_urls_list=None):
67+
grabbed = self.grab(preferred_urls_list)
6568
if grabbed:
6669
grabbed = grabbed["relays"]
6770
return grabbed
@@ -133,7 +136,7 @@ async def main_async(args):
133136
print(f"Tor Relay Scanner. Will scan up to {WORKING_RELAY_NUM_GOAL}" +
134137
" working relays (or till the end)", file=sys.stderr)
135138
print("Downloading Tor Relay information from onionoo.torproject.org…", file=sys.stderr)
136-
relays = TorRelayGrabber(timeout=TIMEOUT, proxy=args.proxy).grab_parse()
139+
relays = TorRelayGrabber(timeout=TIMEOUT, proxy=args.proxy).grab_parse(args.url)
137140
if not relays:
138141
print("Tor Relay information can't be downloaded!", file=sys.stderr)
139142
return 1
@@ -241,6 +244,7 @@ def main():
241244
parser.add_argument('-o', '--outfile', type=argparse.FileType('w'), default=sys.stdout, help='Output reachable relays to file')
242245
parser.add_argument('--torrc', action='store_true', dest='torrc_fmt', help='Output reachable relays in torrc format (with "Bridge" prefix)')
243246
parser.add_argument('--proxy', type=str, help='Set proxy for onionoo information download. Format: http://user:pass@host:port; socks5h://user:pass@host:port')
247+
parser.add_argument('--url', type=str, action='append', help='Preferred alternative URL for onionoo relay list. Could be used multiple times.')
244248
parser.add_argument('-p', type=int, dest='port', action='append', help='Scan for relays running on specified port number. Could be used multiple times.')
245249
parser.add_argument('--browser', type=str, nargs='?', metavar='/path/to/prefs.js', dest='prefsjs',
246250
const='Browser/TorBrowser/Data/Browser/profile.default/prefs.js',

0 commit comments

Comments
 (0)