diff --git a/02-footnotes.md b/02-footnotes.md
index 031dbd7..5fa4630 100644
--- a/02-footnotes.md
+++ b/02-footnotes.md
@@ -17,6 +17,7 @@
- :sos: site returned no data, or is down, or curl experienced a transient or permanent network error; may also reflect a problem with the RWOS server connection
- :boom: same as :sos: but curl specifically mentioned SSL certificates as an issue
- :alarm_clock: same as :sos: but curl specifically mentioned timeout as an issue
+- :question: same as :sos: but curl specifically mentioned inability to resolve an onion descriptor
- :new: site is newly added, no data yet
You can also see the [history of updates](https://github.com/alecmuffett/real-world-onion-sites/commits/master/README.md).
diff --git a/README.md b/README.md
index 0b079fd..aa6dd25 100644
--- a/README.md
+++ b/README.md
@@ -83,7 +83,7 @@ You can find techical details and the legend/key for symbols in the [footnotes s
* link: [https://xw226dvxac7jzcpsf4xb64r4epr6o5hgn46dxlqk7gnjptakik6xnzqd.onion/](https://xw226dvxac7jzcpsf4xb64r4epr6o5hgn46dxlqk7gnjptakik6xnzqd.onion/)
* plain: `https://xw226dvxac7jzcpsf4xb64r4epr6o5hgn46dxlqk7gnjptakik6xnzqd.onion/`
* proof: [link](https://mdleom.com)
-* check: :white_check_mark::white_check_mark::white_check_mark::white_check_mark::sos::white_check_mark::white_check_mark::white_check_mark::white_check_mark::white_check_mark::white_check_mark::white_check_mark::white_check_mark::white_check_mark:
+* check: :white_check_mark::white_check_mark::white_check_mark::white_check_mark::question::white_check_mark::white_check_mark::white_check_mark::white_check_mark::white_check_mark::white_check_mark::white_check_mark::white_check_mark::white_check_mark:
### [Nick Frichette](https://nickf43ab43xxf3yqgzy5uedsjij6h473rmbyzq6inohcnr3lohlu3yd.onion/)
* transport: :closed_lock_with_key: **HTTPS**
@@ -1115,7 +1115,7 @@ You can find techical details and the legend/key for symbols in the [footnotes s
* link: [http://gppg43zz5d2yfuom3yfmxnnokn3zj4mekt55onlng3zs653ty4fio6qd.onion](http://gppg43zz5d2yfuom3yfmxnnokn3zj4mekt55onlng3zs653ty4fio6qd.onion)
* plain: `http://gppg43zz5d2yfuom3yfmxnnokn3zj4mekt55onlng3zs653ty4fio6qd.onion`
* proof: [link](https://www.cbc.ca/securedrop)
-* check: :white_check_mark::white_check_mark::white_check_mark::white_check_mark::white_check_mark::sos::sos::sos::white_check_mark::white_check_mark::white_check_mark::white_check_mark::white_check_mark::white_check_mark:
+* check: :white_check_mark::white_check_mark::white_check_mark::white_check_mark::white_check_mark::question::question::question::white_check_mark::white_check_mark::white_check_mark::white_check_mark::white_check_mark::white_check_mark:
### [CNN](http://qmifwf762qftydprw2adbg7hs2mkunac5xrz3cb5busaflji3rja5lid.onion)
*via: https://securedrop.org/api/v1/directory/*
@@ -1416,6 +1416,7 @@ These sites have apparently stopped responding.
- :sos: site returned no data, or is down, or curl experienced a transient or permanent network error; may also reflect a problem with the RWOS server connection
- :boom: same as :sos: but curl specifically mentioned SSL certificates as an issue
- :alarm_clock: same as :sos: but curl specifically mentioned timeout as an issue
+- :question: same as :sos: but curl specifically mentioned inability to resolve an onion descriptor
- :new: site is newly added, no data yet
You can also see the [history of updates](https://github.com/alecmuffett/real-world-onion-sites/commits/master/README.md).
diff --git a/rwos-db.py b/rwos-db.py
index e41e3f1..a441312 100755
--- a/rwos-db.py
+++ b/rwos-db.py
@@ -3,6 +3,7 @@ from datetime import datetime, timezone
from multiprocessing import Pool, Lock
import csv
import datetime as dt
+import re
import sqlite3
import subprocess
import sys
@@ -40,6 +41,7 @@ EMOJI_5xx = ':stop_sign:'
EMOJI_DEAD = ':sos:'
EMOJI_NO_DATA = ':new:'
EMOJI_BAD_CERT = ':boom:'
+EMOJI_NO_DESC = ':question:'
EMOJI_TIMED_OUT = ':alarm_clock:'
H1 = '#'
@@ -251,12 +253,15 @@ def get_summary(url):
elif hcode >= 500 and hcode < 600:
emoji = EMOJI_5xx
elif hcode >= BADNESS:
+ emoji = EMOJI_DEAD # default
if 'SSL certificate' in errstr:
emoji = EMOJI_BAD_CERT
elif 'timed out' in errstr:
emoji = EMOJI_TIMED_OUT
- else:
- emoji = EMOJI_DEAD
+ elif "Can't complete SOCKS5 connection" in errstr:
+ # todo: parse out socks error codes from https://datatracker.ietf.org/doc/html/rfc1928#section-6
+ if re.search(r'\(4\)$', errstr):
+ emoji = EMOJI_NO_DESC
t = datetime.fromtimestamp(when, timezone.utc)
result.append('{0}'.format(emoji, attempt, hcode, ecode, t))
return result