valdikss / blockcheck Goto Github PK
View Code? Open in Web Editor NEWRussian ISP blocking type checker NOTE: NOT WORKING CURRENTLY. ВНИМАНИЕ: НЕ РАБОТАЕТ НА ТЕКУЩИЙ МОМЕНТ
License: MIT License
Russian ISP blocking type checker NOTE: NOT WORKING CURRENTLY. ВНИМАНИЕ: НЕ РАБОТАЕТ НА ТЕКУЩИЙ МОМЕНТ
License: MIT License
Открываем https://2chru.net/
[☠] Сайт не открывается[!] Результат:
[☺] Ваш провайдер не блокирует сайты.
blockcheck_0.0.6.2
В браузере же:
2chru.net uses an invalid security certificate. The certificate is not trusted because the issuer certificate is unknown. The server might not be sending the appropriate intermediate certificates. An additional root certificate may need to be imported. The certificate is only valid for zapret.at-home.ru (Error code: sec_error_unknown_issuer)
В дополнение, можно потестить
http://danbooru.donmai.us
http://www.furaffinity.net
Пара интерсных моментов, на первый скрипт не обратил внимание:
/tmp/blockcheck-0.0.8.4 $ python3 ./blockcheck.py --console
Traceback (most recent call last):
File "./blockcheck.py", line 10, in <module>
import dns.resolver
File "/usr/local/lib/python3.2/dist-packages/dns/resolver.py", line 33, in <module>
import dns.ipv4
File "/usr/local/lib/python3.2/dist-packages/dns/ipv4.py", line 34
return (u'%u.%u.%u.%u' % (address[0], address[1],
^
SyntaxError: invalid syntax
/tmp/blockcheck-0.0.8.4 $ python3 --version
Python 3.2.3
Интересно, а можно ли все это провернуть через браузер? Чтобы скинул знакомому ссылку, а у него сразу же результат.
Traceback (most recent call last):
File "./blockcheck.py", line 453, in <module>
main()
File "./blockcheck.py", line 384, in main
print("IP: {}, \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440: {}".format(ip_isp[0], ip_isp[1]))
File "./blockcheck.py", line 110, in print
__builtins__.print(*args, **kwargs)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 20-28: ordinal not in range(128)
Система ArchLinux.
Есть ли возможность добавить проверку на работу заблокированных сайтов через IPv6?
привет всем! это шикарная утилита.. но я выявил следующую особенность...
некоторые провайдеры делают подмену в DNS-пакетах только тогда, когда блокируемый сайт нужно блокировать по HTTPS-протоколу (но не по HTTP).
вот пример на моём ноутбуке:
blockcheck (версия --- git checkout 0.0.4
) пишет следующее:
[O] Тестируем DNS
Адреса через системный DNS: ['162.159.249.129', '162.159.250.129', '188.95.48.66', '208.100.25.82']
Адреса через Google DNS: ['162.159.249.129', '162.159.250.129', '188.95.48.66', '208.100.25.82']
Адреса через DNS AntiZapret: ['107.150.11.192', '107.150.11.192', '107.150.11.192']
[✓] DNS записи не подменяются
[✓] DNS не перенаправляется
однако на самом деле DNS-пакеты подменяются.
это можно увидить тут (с того же самого ноутбука).. обратите внимание на @8.8.8.8
:
$ dig 2chru.net @8.8.8.8
; <<>> DiG 9.9.2-P2 <<>> 2chru.net @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34358
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;2chru.net. IN A
;; ANSWER SECTION:
2chru.net. 600 IN A 92.255.241.100
;; Query time: 1 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun Aug 3 21:28:42 2014
;; MSG SIZE rcvd: 43
правильный (не подменённый) DNS-ответ выглядеть должен был бы следующим образом:
$ dig 2chru.net
; <<>> DiG 9.9.2-P2 <<>> 2chru.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27565
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;2chru.net. IN A
;; ANSWER SECTION:
2chru.net. 229 IN A 162.159.251.219
2chru.net. 229 IN A 198.41.249.219
;; Query time: 45 msec
;; SERVER: 2001:4860:4860::8888#53(2001:4860:4860::8888)
;; WHEN: Sun Aug 3 21:28:46 2014
;; MSG SIZE rcvd: 70
Тунельный IPv6 (не teredo/6to4) вводит в смуты в результаты ответов. Допустим он определяет провайдера как полный DPI где его нет.
Я думаю имеет смысл полностью разделить проверки как независимые друг от друга по IPv4 и IPv6 сети.
Открываем https://rutracker.org/forum/index.php
Сайт не открывается
Но я ведь на рутеркер каждый день по https захожу...по http он действительно не доступен.
$ ./blockcheck.py --console
BlockCheck v0.0.8.4
IP: 77.37.208.123, провайдер: National cable Networks/ OnLime
[O] Тестируем DNS
[O] Получаем эталонные DNS с сервера
Эталонные адреса: ['104.20.74.106', '104.20.75.106', '104.25.118.23', '104.25.119.23', '212.47.251.61', '5.178.68.100']
Адреса через системный DNS: ['104.20.74.106', '104.20.75.106', '104.25.118.23', '104.25.119.23', '212.47.251.61', '5.178.68.100']
Адреса через Google DNS: ['104.20.74.106', '104.20.75.106', '104.25.118.23', '104.25.119.23', '212.47.251.61', '5.178.68.100']
Адреса через DNS AntiZapret: ['195.123.209.38', '195.123.209.38', '195.123.209.38', '195.123.209.38']
[✓] DNS-записи не подменяются
[✓] DNS не перенаправляется
[O] Тестируем HTTP
Открываем http://rule34.xxx/index.php?page=post&s=view&id=879177
[☠] Получен неожиданный ответ, скорее всего, страница-заглушка провайдера. Пробуем через прокси.
[✓] Сайт открывается через прокси
Открываем http://rutracker.org/forum/index.php
[☠] Получен неожиданный ответ, скорее всего, страница-заглушка провайдера. Пробуем через прокси.
[✓] Сайт открывается через прокси
Открываем http://a.putinhuylo.com/
[✓] Сайт открывается
Открываем http://gelbooru.com/index.php?page=post&s=view&id=1989610
[☠] Получен неожиданный ответ, скорее всего, страница-заглушка провайдера. Пробуем через прокси.
[✓] Сайт открывается через прокси
Открываем http://rule34.xxx/
[✓] Сайт открывается
Открываем http://gelbooru.com/
[✓] Сайт открывается
[O] Тестируем HTTPS
Открываем https://e621.net/
[✓] Сайт открывается
Открываем https://uberbooru.com/
Traceback (most recent call last):
File "./blockcheck.py", line 158, in _get_url
opened = urllib.request.urlopen(req, timeout=15, cadefault=True)
TypeError: urlopen() got an unexpected keyword argument 'cadefault'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.2/urllib/request.py", line 1140, in do_open
h.request(req.get_method(), req.selector, req.data, headers)
File "/usr/lib/python3.2/http/client.py", line 970, in request
self._send_request(method, url, body, headers)
File "/usr/lib/python3.2/http/client.py", line 1008, in _send_request
self.endheaders(body)
File "/usr/lib/python3.2/http/client.py", line 966, in endheaders
self._send_output(message_body)
File "/usr/lib/python3.2/http/client.py", line 811, in _send_output
self.send(msg)
File "/usr/lib/python3.2/http/client.py", line 749, in send
self.connect()
File "/usr/lib/python3.2/http/client.py", line 1111, in connect
server_hostname=server_hostname)
File "/usr/lib/python3.2/ssl.py", line 189, in wrap_socket
_context=self)
File "/usr/lib/python3.2/ssl.py", line 276, in init
raise x
File "/usr/lib/python3.2/ssl.py", line 272, in init
self.do_handshake()
File "/usr/lib/python3.2/ssl.py", line 451, in do_handshake
self._sslobj.do_handshake()
socket.error: [Errno 104] Connection reset by peer
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "./blockcheck.py", line 163, in _get_url
opened = urllib.request.urlopen(req, timeout=15, cafile="/etc/ssl/certs/ca-certificates.crt")
File "/usr/lib/python3.2/urllib/request.py", line 139, in urlopen
return opener.open(url, data, timeout)
File "/usr/lib/python3.2/urllib/request.py", line 370, in open
response = self._open(req, data)
File "/usr/lib/python3.2/urllib/request.py", line 388, in _open
'_open', req)
File "/usr/lib/python3.2/urllib/request.py", line 348, in _call_chain
result = func(*args)
File "/usr/lib/python3.2/urllib/request.py", line 1176, in https_open
context=self._context, check_hostname=self._check_hostname)
File "/usr/lib/python3.2/urllib/request.py", line 1143, in do_open
raise URLError(err)
urllib.error.URLError: <urlopen error [Errno 104] Connection reset by peer>
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "./blockcheck.py", line 629, in
main()
File "./blockcheck.py", line 523, in main
https = test_https_cert()
File "./blockcheck.py", line 462, in test_https_cert
result = _get_url(site, None)
File "./blockcheck.py", line 165, in _get_url
except FileNotFoundError:
NameError: global name 'FileNotFoundError' is not defined
========================= мой комп =====================
$ uname -a
Linux dimedrol-pc 3.4.85-custom1 #1 SMP Wed Apr 9 10:29:46 MSK 2014 x86_64 GNU/Linux
$ cat /etc/debian_version
7.8
$ dpkg -l | grep python
ii libpython2.7 2.7.3-6+deb7u2 amd64 Shared Python runtime library (version 2.7)
ii python 2.7.3-4+deb7u1 all interactive high-level object-oriented language (default version)
ii python-apt 0.8.8.2 amd64 Python interface to libapt-pkg
ii python-apt-common 0.8.8.2 all Python interface to libapt-pkg (locales)
ii python-aptdaemon 0.45-2 all Python module for the server and client of aptdaemon
ii python-aptdaemon.gtk3widgets 0.45-2 all Python GTK+ 3 widgets to run an aptdaemon client
ii python-beautifulsoup 3.2.1-1 all error-tolerant HTML parser for Python
ii python-brlapi 4.4-10+deb7u1 amd64 Python bindings for BrlAPI
ii python-cairo 1.8.8-1+b2 amd64 Python bindings for the Cairo vector graphics library
ii python-chardet 2.0.1-2 all universal character encoding detector
ii python-chm 0.8.4-1+b2 amd64 Python binding for CHMLIB
ii python-dbus 1.1.1-1 amd64 simple interprocess messaging system (Python interface)
ii python-dbus-dev 1.1.1-1 all main loop integration development files for python-dbus
ii python-debian 0.1.21 all Python modules to work with Debian-related data formats
ii python-debianbts 1.11 all Python interface to Debian's Bug Tracking System
ii python-defer 1.0.6-2 all Small framework for asynchronous programming (Python 2)
ii python-dev 2.7.3-4+deb7u1 all header files and a static library for Python (default)
ii python-feedparser 5.1.2-1 all Universal Feed Parser for Python
ii python-fpconst 0.7.2-5 all Utilities for handling IEEE 754 floating point special values
ii python-gconf 2.28.1+dfsg-1 amd64 Python bindings for the GConf configuration database system
ii python-gi 3.2.2-2 amd64 Python 2.x bindings for gobject-introspection libraries
ii python-gi-cairo 3.2.2-2 amd64 Python Cairo bindings for the GObject library
ii python-glade2 2.24.0-3+b1 amd64 GTK+ bindings: Glade support
ii python-gnome2 2.28.1+dfsg-1 amd64 Python bindings for the GNOME desktop environment
ii python-gnupginterface 0.3.2-9.1 all Python interface to GnuPG (GPG)
ii python-gobject 3.2.2-2 all Python 2.x bindings for GObject - transitional package
ii python-gobject-2 2.28.6-10 amd64 deprecated static Python bindings for the GObject library
ii python-gst0.10 0.10.22-3 amd64 generic media-playing framework (Python bindings)
ii python-gtk-vnc 0.5.0-3.1 amd64 VNC viewer widget for GTK+2 (Python binding)
ii python-gtk2 2.24.0-3+b1 amd64 Python bindings for the GTK+ widget set
ii python-httplib2 0.7.4-2+deb7u1 all comprehensive HTTP client library written for Python
ii python-imaging 1.1.7-4+deb7u1 amd64 Python Imaging Library
ii python-ipy 1:0.75-1 all Python module for handling IPv4 and IPv6 addresses and networks
ii python-libvirt 0.9.12.3-1+deb7u1 amd64 libvirt Python bindings
ii python-libxml2 2.8.0+dfsg1-7+wheezy4 amd64 Python bindings for the GNOME XML library
ii python-louis 2.4.1-1 amd64 Python bindings for liblouis
ii python-magic 5.11-2+deb7u8 amd64 File type determination library using "magic" numbers (Python bindings)
ii python-mako 0.7.0-1.1 all fast and lightweight templating for the Python platform
ii python-markupsafe 0.15-1 amd64 XML/HTML/XHTML Markup safe string for Python
ii python-minimal 2.7.3-4+deb7u1 all minimal subset of the Python language (default version)
ii python-notify 0.1.1-3 amd64 Python bindings for libnotify
ii python-numpy 1:1.6.2-1.2 amd64 Numerical Python adds a fast array facility to the Python language
ii python-packagekit 0.7.6-3 all PackageKit backend Python bindings
ii python-pexpect 2.4-1 all Python module for automating interactive applications
ii python-pkg-resources 0.6.24-1 all Package Discovery and Resource Access using pkg_resources
ii python-pyatspi 2.5.3+dfsg-3 all Assistive Technology Service Provider Interface - Python bindings
ii python-pyatspi2 2.5.3+dfsg-3 all Transitional package for assistive technology Python bindings
ii python-pycurl 7.19.0-5 amd64 Python bindings to libcurl
ii python-pyorbit 2.24.0-6+b1 amd64 A Python language binding for the ORBit2 CORBA implementation
ii python-renderpm 2.5-1.1 amd64 python low level render interface
ii python-reportbug 6.4.4+deb7u1 all Python modules for interacting with bug tracking systems
ii python-reportlab 2.5-1.1 all ReportLab library to create PDF documents using Python
ii python-reportlab-accel 2.5-1.1 amd64 C coded extension accelerator for the ReportLab Toolkit
ii python-soappy 0.12.0-4 all SOAP Support for Python
ii python-software-properties 0.82.7.1debian1 all manage the repositories that you install software from
ii python-speechd 0.7.1-6.2 all Python interface to Speech Dispatcher
ii python-spice-client-gtk 0.12-5 amd64 GTK2 widget for SPICE clients (Python binding)
ii python-support 1.0.15 all automated rebuilding support for Python modules
ii python-uno 1:3.5.4+dfsg2-0+deb7u4 amd64 Python-UNO bridge
ii python-urlgrabber 3.9.1-4 all A high-level cross-protocol url-grabber
ii python-utidylib 0.2-8 all Python wrapper for TidyLib
ii python-vte 1:0.28.2-5 amd64 Python bindings for the VTE widget set
ii python-wnck 2.32.0+dfsg-2+b1 amd64 Python bindings for the WNCK library
ii python-xapian 1.2.12-2 amd64 Xapian search engine interface for Python
ii python-xdg 0.19-5 all Python library to access freedesktop.org standards
ii python2.6 2.6.8-1.1 amd64 Interactive high-level object-oriented language (version 2.6)
ii python2.6-minimal 2.6.8-1.1 amd64 Minimal subset of the Python language (version 2.6)
ii python2.7 2.7.3-6+deb7u2 amd64 Interactive high-level object-oriented language (version 2.7)
ii python2.7-dev 2.7.3-6+deb7u2 amd64 Header files and a static library for Python (v2.7)
ii python2.7-minimal 2.7.3-6+deb7u2 amd64 Minimal subset of the Python language (version 2.7)
ii python3 3.2.3-6 all interactive high-level object-oriented language (default python3 version)
ii python3-dnspython 1.10.0-1 all DNS toolkit for Python (Python 3)
ii python3-minimal 3.2.3-6 all minimal subset of the Python language (default python3 version)
ii python3-tk 3.2.3-1 amd64 Tkinter - Writing Tk applications with Python 3.x
ii python3.2 3.2.3-7 amd64 Interactive high-level object-oriented language (version 3.2)
ii python3.2-minimal 3.2.3-7 amd64 Minimal subset of the Python language (version 3.2)
Суть ошибки три ссылки открылись, а одна нет.
BlockCheck v0.0.9.2
Для получения корректных результатов используйте DNS-сервер провайдера и отключите средства обхода блокировок.
Проверка работоспособности IPv6: IPv6 недоступен.
IP: НЕВАЖНО, провайдер: НЕВАЖНО
[O] Тестируем IPv4 DNS
Через системный DNS: ['104.24.10.70', '104.24.11.70', '184.173.146.95', '195.8.215.136', '195.82.146.214', '5.178.68.100', '67.202.114.133', '67.202.114.134']
Через Google DNS: ['104.24.10.70', '104.24.11.70', '184.173.146.95', '195.8.215.136', '195.82.146.214', '5.178.68.100', '67.202.114.133', '67.202.114.134']
Через Google API: ['104.24.10.70', '104.24.11.70', '184.173.146.95', '195.8.215.136', '195.82.146.214', '5.178.68.100', '67.202.114.133', '67.202.114.134']
Несуществующий DNS не вернул адресов (это не ошибка)
[✓] DNS-записи не подменяются
[✓] DNS не перенаправляется
[O] Тестируем HTTP
Открываем http://a.putinhuylo.com/
[✓] Сайт открывается
Открываем http://pbooru.com/index.php?page=post&s=view&id=303026
[✓] Сайт открывается
Открываем http://furry.booru.org/
[✓] Сайт открывается
Открываем http://pbooru.com/
[✓] Сайт открывается
Открываем http://furry.booru.org/index.php?page=post&s=view&id=111173
[✓] Сайт открывается
Открываем http://rutracker.org/forum/index.php
[✓] Сайт открывается
[O] Тестируем HTTPS
Открываем https://lolibooru.moe/
[✓] Сайт открывается
Открываем https://e621.net/
[✓] Сайт открывается
Открываем https://rutracker.org/forum/index.php
[✓] Сайт открывается
Открываем https://dailymotion.com/
[☠] Сайт не открывается
[☠] isup.me не поддерживает HTTPS, считаем, что сайт работает, а проблемы только у нас
[!] Результат:
[⚠] Ваш провайдер полностью блокирует доступ к HTTPS-сайтам из реестра.
Провайдер Связьинформ. BlockCheck утверждает, что подменяются только DNS-записи, но это не так. При попытке открыть ресурс провайдер отдаёт вот это:
БЧ считает при этом, что сумел открыть тестируемый сайт.
Превед, Влад.
1 вы форсите свой сервис prostovpn
2 ваш скрипт коннектится на заблокированные сайты из списка
3 ваш скрипт использует ваш сервис.
Кажется, он на самом деле "дохлый":
А в результате, на результат работы скрипта страшно смотреть.
На данный момент http://sukebei.nyaa.se/ лежит. Так как скрипт не может его открыть, в т.ч. через прокси, он воспринимает это как блокировку через «полный DPI».
Предлагаю встроить проверку через сторонний сервер, например isup.me. Если и он не может достучаться до сайта, не учитывать этот сайт вообще. Конкретно для isup.me есть скрипт вот здесь: https://github.com/fenhl/isup
Могу прислать пулл-реквест, когда будет время, если нет идеи лучше.
Добрый день.
При запуске утилиты (windows) выдается такой результат:
[O] Тестируем HTTPS
Открываем https://e621.net/
[✓] Сайт открывается
Открываем https://2chru.net/
[☠] Сертификат подменяется
[!] Результат:
[⚠] Ваш провайдер лезет в HTTPS.
При этом результат аналогичный как в случае работы через vpn так и напрямую.
В браузере сертификаты обоих доменов выглядят не подмененными.
blockcheck.py, line 149: "У вашего провайдер"
Не показывает результат, останавливаясь на Открываем https://e621.net/
Видимо изза
ssl_error_bad_cert_domain
e621.net использует недействительный сертификат безопасности. Сертификат действителен только для следующих имён: *.netbynet.ru, netbynet.ru
Может глупый вопрос, но как?
python ./blockcheck.py
File "./blockcheck.py", line 88
def print(_args, *_kwargs):
^
SyntaxError: invalid syntax
Вот что мне выдаёт.
Hello, I'm a Chinese. I asked your question before, [email protected] mail seems to be invalid, hope to be able to recover, I have some question want to ask you.
Я понимаю, модно, но не у всех Linux, и экзотические UTF-8 символы в KOI8-R питон перекодировать не может, как ни старается:
File "blockcheck.py", line 115, in test_dns
print("[\u2713] DNS записи не подменяются")
File "blockcheck.py", line 48, in print
builtins.print(_args, *_kwargs)
File "/usr/local/lib/python3.3/encodings/koi8_r.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u2713' in position 1: character maps to
Сейчас у вас есть проверка только на подмену сертификата, но неплохо бы проверять и то, что сайт действительно открывается.
Например, у меня при соединении с https://2chru.net/ провайдер (ростелеком) сразу отдаёт tcp rst в ответ на tcp syn, так что даже соединение не устанавливается.
BlockCheck v0.0.9.5
Для получения корректных результатов используйте DNS-сервер провайдера и отключите средства обхода блокировок.
Проверка работоспособности IPv6: IPv6 недоступен.
IP: 91.235.178.xxx, провайдер: XCOMMUNICATION/ X-COMMUNICATION
[O] Тестируем IPv4 DNS
Через системный DNS: ['104.20.134.45', '104.20.135.45', '104.24.10.70', '104.24.11.70', '184.173.146.95', '195.8.215.136', '195.82.146.214', '5.178.68.100']
Через Google DNS: ['104.20.134.45', '104.20.135.45', '104.24.10.70', '104.24.11.70', '184.173.146.95', '195.8.215.136', '195.82.146.214', '5.178.68.100']
Через Google API: ['104.20.134.45', '104.20.135.45', '104.24.10.70', '104.24.11.70', '184.173.146.95', '195.8.215.136', '195.82.146.214', '5.178.68.100']
Несуществующий DNS не вернул адресов (это не ошибка)
[✓] DNS-записи не подменяются
[✓] DNS не перенаправляется
[O] Тестируем HTTP
Открываем http://a.putinhuylo.com/
[✓] Сайт открывается
Открываем http://pbooru.com/
[✓] Сайт открывается
Открываем http://rutracker.org/forum/index.php
[✓] Сайт открывается
Открываем http://furry.booru.org/
[✓] Сайт открывается
Открываем http://pbooru.com/index.php?page=post&s=view&id=303026
[✓] Сайт открывается
Открываем http://furry.booru.org/index.php?page=post&s=view&id=111173
[✓] Сайт открывается
[O] Тестируем HTTPS
Открываем https://lolibooru.moe/
[✓] Сайт открывается
Открываем https://e621.net/
[☠] Сайт не открывается
Открываем https://rutracker.org/forum/index.php
[✓] Сайт открывается
Открываем https://www.dailymotion.com/
[✓] Сайт открывается
[!] Результат:
[⚠] Ваш провайдер полностью блокирует доступ к HTTPS-сайтам из реестра.
Termux - эмулятор консоли с изкоробочным apt-ом и своими репозиториями. Питон в репозиториях есть, и скрипт можно запустить с одним НО: не будет работать определение DNS блокировок, что портит статистику. Возможность проверки блокировок (хотя бы таким способом) могла бы позволить обнаруживать типы блокировок на мобильном интернете. В данный момент запустить скрипт с работающим определением можно при помощи proot и этого однострочника:
printf 'nameserver %s\nnameserver %s\n' $(getprop net.dns1) $(getprop net.dns2) > ${HOME}/../usr/android-stub/etc/resolv.conf&&proot -b ${HOME}/../usr/android-stub/etc/resolv.conf:/etc/resolv.conf python3 ~/blockcheck/blockcheck.py
Проблема заключается в dnspython, который не знает о способе получения системного днс в андроиде.
Наверное, было бы логичнее сначала составить багрепорт у днспитона.
user@microserver:~/blockcheck$ ./blockcheck.py
[O] Тестируем DNS
[O] Получаем эталонные DNS с сервера
Эталонные адреса: ['104.28.16.79', '104.28.17.79', '5.178.68.100', '69.165.95.242', '78.110.160.185']
Адреса через системный DNS: ['104.28.16.79', '104.28.17.79', '5.178.68.100', '69.165.95.242', '78.110.160.185']
Адреса через Google DNS: ['104.28.16.79', '104.28.17.79', '5.178.68.100', '69.165.95.242', '78.110.160.185']
Адреса через DNS AntiZapret: ['107.150.11.192', '107.150.11.192', '107.150.11.192', '107.150.11.192']
[✓] DNS записи не подменяются
[✓] DNS не перенаправляется
[O] Тестируем HTTP
Открываем http://sukebei.nyaa.se/
Traceback (most recent call last):
File "./blockcheck.py", line 332, in <module>
main()
File "./blockcheck.py", line 275, in main
http = test_http_access(False)
File "./blockcheck.py", line 210, in test_http_access
result = _get_url(site, ip=sites[site].get('ip') if by_ip else None)
File "./blockcheck.py", line 132, in _get_url
opened = urllib.request.urlopen(req, timeout=15, cadefault=True)
TypeError: urlopen() got an unexpected keyword argument 'cadefault'
After running ./blockcheck.py
in a newly cloned repository (also when installing with /usr/lib/python-exec/python3.2/pip install --egg git+https://github.com/ValdikSS/blockcheck
(note --egg
) with dependencies from #3) it does not show anything: just blank window:
. Default python 3 version is 3.2.5-r3, using python-3.3.3 also shows the same behavior. To fix the problem the following patch is sufficient:
diff --git a/blockcheck.py b/blockcheck.py
index f9019ee..1af4667 100755
--- a/blockcheck.py
+++ b/blockcheck.py
@@ -3,6 +3,7 @@
import urllib.request
import dns.resolver
try:
+ import ttttttt
import tkinter as tk
import threading
tkusable = True
(obviously I only trigger except ImportError
to set tkusable
to False
).
Я пытаюсь запустить скрипт на elementary OS Freya (Ubuntu-derivative), но скрипт выдает мне
ImportError: No module named 'dns'
Какие пакеты поставить, чтобы dns появился?
File "blockcheck.py", line 42
def print(_args, *_kwargs):
^
SyntaxError: invalid syntax
Привет. Где-то можно посмотреть, какие способы блокировки используют конкректные провайдеры? Меня интересуют московские. Возможно, вы сами собирали такую статистику.
Писал в twitter, что могу переслать пример того, как выглядет провайдер, использующий zapretservice.ru.
kemko@tmpbook: ~ $ curl -I 52.222.157.102
HTTP/1.1 403 Forbidden
Server: CloudFront
Date: Tue, 09 May 2017 06:45:29 GMT
Content-Type: text/html
Content-Length: 551
X-Cache: Error from cloudfront
X-Amz-Cf-Id: aujPOgH12xGWhsAf5chdlGzBbbTrsCcR2TebaVA4oG816Ptuhj0YVA==
X-Cache: MISS from zapret
Via: 1.1 22e8ec6be29eb9755e0a8dfac5944c51.cloudfront.net (CloudFront), 1.1 zapret (squid/3.5.24)
Connection: keep-alive
Использование видно по заголовкам X-Cache и Via. В целом, если провайдер использует эту штуку, то запросы по tcp:80 пропускаются через этот squid, а запросы по tcp:443 полностью блокируются. Я немного переписывался с ними, и якобы последние версии этого ПО умеют блокировать HTTPS-трафик исходя из переданного SNI, но через оба доступных мне провайдера, которые используют это решение, такого не наблюдаю. Видимо, обновляться особо никто не стремится.
В связи с блокировкой на Украине, добавьте ресурсы для тестирования.
Здравствуйте.
Программа определяет, что у меня открывается, например, http://www.lostfilm.tv. Однако при переходе по этому адресу вручную выскакивает заглушка провайдера о блокировке.
Оператор: Онлайм (Ростелеком)
Сабж при тестировании обхода DPI на OS X 10.11.3
[O] Тестируем обход DPI
Пробуем способ: перенос строки в заголовках в UNIX-стиле
[☠] Ошибка:OSError(57, 'Socket is not connected')
Пробуем способ: точка в конце домена
[☠] Ошибка:OSError(57, 'Socket is not connected')
Пробуем способ: фрагментирование заголовка
[☠] Ошибка:OSError(57, 'Socket is not connected')
Пробуем способ: заголовок host вместо Host
[☠] Ошибка:OSError(57, 'Socket is not connected')
Пробуем способ: дополнительный пробел после GET
[☠] Ошибка:OSError(57, 'Socket is not connected')
В чём может быть дело?
If I use blockcheck --help
I still see it showing the window.
Поясню зачем нужно. У меня везде настроено SRP и запускать исполняемые файлы из TEMP просто нельзя. Соответственно архив мне очень удобен ибо уже давно написан простой инсталляционный скрипт, который кладёт содержимое архива в ProgramFiles а оттуда SRP уже разрешает запуск :)
Вынуть из экзешки содержимое я ничем не смог поэтому прошу вернуть архив или сделать msi файл для установки который сам бы клал файлы в ProgramFiles и ярлычок клал в "меню пуск" :)
P.S. на текущий момент был вынужден откатиться на 0.0.9.1
Не производить проверку IPv6 если будет обнаружен не нативный IPv6. Достаточно сравнить автономную систему IPv4 и IPv6 если они не совпадают отключать IPv6 проверки.
Планирую прислать позже патч
У ТТК рутрекер заблокирован как-то по-особенному, все сайты просто через провайдерский DNS, а там то ли DPI, то ли еще что. В связи с шумихой вокруг рутрекера имеет смысл добавить его в список проверяемых ресурсов.
По IPv6 всё открывается, и у меня туннель не в RU, провайдер не раздаёт IPv6.
When trying to install the package with
/usr/lib/python-exec/python3.3/pip install git+https://github.com/ValdikSS/blockcheck
(pip.conf
includes [install] user = true
) I get the “No module named 'cx_Freeze'” error that gets fixed by installing cx_Freeze
.
Full log:
Downloading/unpacking git+https://github.com/ValdikSS/blockcheck
Cloning https://github.com/ValdikSS/blockcheck to /tmp/pip-hq24cl-build
Running setup.py egg_info for package from git+https://github.com/ValdikSS/blockcheck
Traceback (most recent call last):
File "<string>", line 16, in <module>
File "/tmp/pip-hq24cl-build/setup.py", line 3, in <module>
from cx_Freeze import setup, Executable
ImportError: No module named 'cx_Freeze'
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 16, in <module>
File "/tmp/pip-hq24cl-build/setup.py", line 3, in <module>
from cx_Freeze import setup, Executable
ImportError: No module named 'cx_Freeze'
----------------------------------------
Cleaning up...
Command python setup.py egg_info failed with error code 1 in /tmp/pip-hq24cl-build
Storing complete log in ~/.log/pip-file.log
Traceback (most recent call last):
File "/usr/lib/python-exec/python3.3/pip", line 9, in <module>
load_entry_point('pip==1.4.1', 'console_scripts', 'pip')()
File "/usr/lib64/python3.3/site-packages/pip/__init__.py", line 148, in main
return command.main(args[1:], options)
File "/usr/lib64/python3.3/site-packages/pip/basecommand.py", line 176, in main
logger.fatal('Storing complete log in %s' % log_fn)
File "/usr/lib64/python3.3/site-packages/pip/log.py", line 48, in fatal
self.log(self.FATAL, msg, *args, **kw)
File "/usr/lib64/python3.3/site-packages/pip/log.py", line 75, in log
backwardcompat.fwrite(consumer, rendered)
File "/usr/lib64/python3.3/site-packages/pip/backwardcompat/__init__.py", line 59, in fwrite
f.buffer.write(b(s))
ValueError: write to closed file
Возможно некорректное определение перенаправления при включенной защите.
У меня дом.ру который все DNS направляет на себя
Если ничего не включено, то показывает как есть.
А вот если включен VPN antizapret, то тогда показывает что перенаправляется.
Плюс еще настроил DNSCrypt - системным ресолвится правильно, но вот гуглом - неправильно.
Возможно стоит добавить такие случаи для проверки корректной защиты DNS?
[!] Результат:
[⚠] У вашего провайдера "полный" DPI. Он отслеживает ссылки даже внутри прокси, поэтому вам следует использовать любое шифрованное соединение, например, VPN или Tor.
Читаем выше:
[O] Тестируем HTTP
Открываем http://sukebei.nyaa.se/
[✓] Сайт открывается
Открываем http://www.lostfilm.tv/details.php?id=4141
[☠] Сайт не открывается
Открываем http://www.lostfilm.tv/
[✓] Сайт открывается
Открываем http://sukebei.nyaa.se/?page=view&tid=395631
[☠] Сайт не открывается
Открываем http://gelbooru.com/index.php?page=post&s=view&id=1989610
[☠] Сайт не открывается
Открываем http://gelbooru.com/
[✓] Сайт открывается
Открываем через прокси http://sukebei.nyaa.se/
[✓] Сайт открывается
Открываем через прокси http://www.lostfilm.tv/details.php?id=4141
[☠] Сайт не открывается
Открываем через прокси http://www.lostfilm.tv/
[☠] Сайт не открывается
Открываем через прокси http://sukebei.nyaa.se/?page=view&tid=395631
[✓] Сайт открывается
Открываем через прокси http://gelbooru.com/index.php?page=post&s=view&id=1989610
[✓] Сайт открывается
Открываем через прокси http://gelbooru.com/
[✓] Сайт открывается
http://www.lostfilm.tv/ открывается всегда
его подфорум - тоже, но содержимое видно только через иностранный прокси.
Пчелайн
Exception in thread Thread-1:
Traceback (most recent call last):
File "C:\Dev\Tools\Python3\lib\threading.py", line 920, in _bootstrap_inner
self.run()
File "C:\Dev\Tools\Python3\lib\threading.py", line 868, in run
self._target(*self._args, **self._kwargs)
File "blockcheck.py", line 277, in main
http = test_http_access(True)
File "blockcheck.py", line 221, in test_http_access
result_proxy = _get_url(site, proxy)
File "blockcheck.py", line 135, in _get_url
return (opened.status, str(opened.readall()))
File "C:\Dev\Tools\Python3\lib\http\client.py", line 500, in read
return super(HTTPResponse, self).read(amt)
File "C:\Dev\Tools\Python3\lib\http\client.py", line 539, in readinto
n = self.fp.readinto(b)
File "C:\Dev\Tools\Python3\lib\socket.py", line 371, in readinto
return self._sock.recv_into(b)
socket.timeout: timed out
Script output:
[O] Тестируем DNS
[O] Получаем эталонные DNS с сервера
Эталонные адреса: ['104.28.16.79', '104.28.17.79', '5.178.68.100', '69.165.95.242', '78.110.160.185']
Адреса через системный DNS: ['10.52.34.222', '10.52.34.222', '10.52.34.222', '5.178.68.100']
Адреса через Google DNS: ['104.28.16.79', '104.28.17.79', '5.178.68.100', '69.165.95.242', '78.110.160.185']
Адреса через DNS AntiZapret: ['107.150.11.192', '107.150.11.192', '107.150.11.192', '107.150.11.192']
[☠] DNS записи подменяются
[✓] DNS не перенаправляется
[O] Тестируем HTTP
Открываем http://gelbooru.com/index.php?page=post&s=view&id=1989610
[☠] Сайт не открывается
Открываем http://gelbooru.com/
[✓] Сайт открывается
Открываем http://sukebei.nyaa.se/?page=view&tid=395631
[☠] Сайт не открывается
Открываем http://www.lostfilm.tv/
[✓] Сайт открывается
Открываем http://sukebei.nyaa.se/
[✓] Сайт открывается
Открываем http://www.lostfilm.tv/details.php?id=4141
[✓] Сайт открывается
Открываем через прокси http://gelbooru.com/index.php?page=post&s=view&id=1989610
[✓] Сайт открывается
Открываем через прокси http://gelbooru.com/
[✓] Сайт открывается
Открываем через прокси http://sukebei.nyaa.se/?page=view&tid=395631
[☠] Сайт не открывается
Открываем через прокси http://www.lostfilm.tv/
[✓] Сайт открывается
Открываем через прокси http://sukebei.nyaa.se/
Доброго времени.
Раз blockcheck выходит на межународный рынок, быть может, можно рассмотреть блокировки других стран?
Меня в первую очередь интересует Великобритания. Virgin Broadband блокирует http://gen.lib.rus.ec и ещё я натыкался на другие заблокированные ресурсы, гуляя по Гуглу.
Система - Win7
.exe версия - все работает прекрасно, провайдер блочит (с goodbyeDPI - не блочит :D, спасибо за программку). Но - я не могу скопировать результаты, текст в логе выделить можно, скопировать - нет (правая кнопка, Ctrl+C - не происходит ничего)
питоновская версия - не запускается. Какой питон нужен? (Так уж вышло, что я использовал некоторые программы на питоне - и они вполне корректно открывались двойным щелчком после прописывания файловых ассоциаций. Сейчас стоит версия 3.5.3)
(ну там как нибудь там в свободное время, если оно найдётся.. было бы круто.. да)
BlockCheck v0.0.9.1
Для получения корректных результатов используйте DNS-сервер провайдера и отключите средства обхода блокировок.
Доступная новая версия программы: 0.0.9.2. Обновитесь, пожалуйста.
При попытке протестировать Мегафон 3G выдается ошибка:
./blockcheck.py
[O] Тестируем DNS
Адреса через системный DNS: ['162.159.249.129', '162.159.250.129', '162.159.251.219', '188.95.48.66', '198.41.249.219', '208.100.25.82']
Адреса через Google DNS: ['162.159.249.129', '162.159.250.129', '162.159.251.219', '188.95.48.66', '198.41.249.219', '208.100.25.82']
Адреса через DNS AntiZapret: ['107.150.11.192', '107.150.11.192', '107.150.11.192', '107.150.11.192']
[✓] DNS записи не подменяются
[✓] DNS не перенаправляется
[O] Тестируем HTTP
Открываем http://sukebei.nyaa.se/
[✓] Сайт открывается
Открываем http://www.lostfilm.tv/details.php?id=4141
Traceback (most recent call last):
File "./blockcheck.py", line 266, in
main()
File "./blockcheck.py", line 214, in main
http = test_http_access(False)
File "./blockcheck.py", line 178, in test_http_access
result = _get_url(site, ip=sites[site].get('ip') if by_ip else None)
File "./blockcheck.py", line 114, in _get_url
opened = urllib.request.urlopen(req, timeout=15)
File "/usr/lib/python3.2/urllib/request.py", line 139, in urlopen
return opener.open(url, data, timeout)
File "/usr/lib/python3.2/urllib/request.py", line 370, in open
response = self._open(req, data)
File "/usr/lib/python3.2/urllib/request.py", line 388, in _open
'_open', req)
File "/usr/lib/python3.2/urllib/request.py", line 348, in _call_chain
result = func(*args)
File "/usr/lib/python3.2/urllib/request.py", line 1160, in http_open
return self.do_open(http.client.HTTPConnection, req)
File "/usr/lib/python3.2/urllib/request.py", line 1145, in do_open
r = h.getresponse()
File "/usr/lib/python3.2/http/client.py", line 1052, in getresponse
response.begin()
File "/usr/lib/python3.2/http/client.py", line 346, in begin
version, status, reason = self._read_status()
File "/usr/lib/python3.2/http/client.py", line 308, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/usr/lib/python3.2/socket.py", line 287, in readinto
return self._sock.recv_into(b)
socket.error: [Errno 104] Connection reset by peer
При этом, МТС "Домашний Интернет и ТВ" тестится на ура.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.