Giter Club home page Giter Club logo

blockcheck's People

Contributors

acharvak avatar galeksandrp avatar grief avatar korden32 avatar nshopik avatar polymorphm avatar valdikss avatar vit9696 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

blockcheck's Issues

Добавить README.md

У меня в Ubuntu скрипт запускаться не хочет. Может имеет смысл добавить README.md с описанием и инструкциями?

_035

Просьба вернуть архив с кучей файлов как альтернативный вариант для загрузки или сделать инсталлятор.

Поясню зачем нужно. У меня везде настроено SRP и запускать исполняемые файлы из TEMP просто нельзя. Соответственно архив мне очень удобен ибо уже давно написан простой инсталляционный скрипт, который кладёт содержимое архива в ProgramFiles а оттуда SRP уже разрешает запуск :)

Вынуть из экзешки содержимое я ничем не смог поэтому прошу вернуть архив или сделать msi файл для установки который сам бы клал файлы в ProgramFiles и ярлычок клал в "меню пуск" :)

P.S. на текущий момент был вынужден откатиться на 0.0.9.1

P.P.S.

Проверка подмены https сертификатов скорее всего не работает

Добрый день.
При запуске утилиты (windows) выдается такой результат:
[O] Тестируем HTTPS
Открываем https://e621.net/
[✓] Сайт открывается
Открываем https://2chru.net/
[☠] Сертификат подменяется

[!] Результат:
[⚠] Ваш провайдер лезет в HTTPS.

При этом результат аналогичный как в случае работы через vpn так и напрямую.
В браузере сертификаты обоих доменов выглядят не подмененными.

Некоректное определение перенаправления DNS

Возможно некорректное определение перенаправления при включенной защите.
У меня дом.ру который все DNS направляет на себя

Если ничего не включено, то показывает как есть.
А вот если включен VPN antizapret, то тогда показывает что перенаправляется.
Плюс еще настроил DNSCrypt - системным ресолвится правильно, но вот гуглом - неправильно.

Возможно стоит добавить такие случаи для проверки корректной защиты DNS?

Missing package dependencies

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

BlockCheck v0.0.9.2(!)

BlockCheck v0.0.9.1
Для получения корректных результатов используйте DNS-сервер провайдера и отключите средства обхода блокировок.

Доступная новая версия программы: 0.0.9.2. Обновитесь, пожалуйста.

Вы - агент гебни?

Превед, Влад.
1 вы форсите свой сервис prostovpn
2 ваш скрипт коннектится на заблокированные сайты из списка
3 ваш скрипт использует ваш сервис.

Как запустить?

Может глупый вопрос, но как?
python ./blockcheck.py
File "./blockcheck.py", line 88
def print(_args, *_kwargs):
^
SyntaxError: invalid syntax
Вот что мне выдаёт.

Ошибка определения открытия сайта

Здравствуйте.
Программа определяет, что у меня открывается, например, http://www.lostfilm.tv. Однако при переходе по этому адресу вручную выскакивает заглушка провайдера о блокировке.

Оператор: Онлайм (Ростелеком)

Ошибка при определении блокировки https

Суть ошибки три ссылки открылись, а одна нет.

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-сайтам из реестра.

Запуск и логирование

Система - Win7
.exe версия - все работает прекрасно, провайдер блочит (с goodbyeDPI - не блочит :D, спасибо за программку). Но - я не могу скопировать результаты, текст в логе выделить можно, скопировать - нет (правая кнопка, Ctrl+C - не происходит ничего)

питоновская версия - не запускается. Какой питон нужен? (Так уж вышло, что я использовал некоторые программы на питоне - и они вполне корректно открывались двойным щелчком после прописывания файловых ассоциаций. Сейчас стоит версия 3.5.3)

неверное определение

Провайдер Связьинформ. BlockCheck утверждает, что подменяются только DNS-записи, но это не так. При попытке открыть ресурс провайдер отдаёт вот это:

closed.zip

БЧ считает при этом, что сумел открыть тестируемый сайт.

Разделить проверки IPv6 и IPv4

Тунельный IPv6 (не teredo/6to4) вводит в смуты в результаты ответов. Допустим он определяет провайдера как полный DPI где его нет.

Я думаю имеет смысл полностью разделить проверки как независимые друг от друга по IPv4 и IPv6 сети.

[☠] Сайт не открывается - [☺] Ваш провайдер не блокирует сайты.

Открываем 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

Пара интерсных моментов, на первый скрипт не обратил внимание:

screenshot_1447691097
screenshot_1447691169

Проверять результат https-запроса

Сейчас у вас есть проверка только на подмену сертификата, но неплохо бы проверять и то, что сайт действительно открывается.
Например, у меня при соединении с https://2chru.net/ провайдер (ростелеком) сразу отдаёт tcp rst в ответ на tcp syn, так что даже соединение не устанавливается.

Blockcheck does not show anything

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:

Blank blockcheck 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).

Рутрекер

У ТТК рутрекер заблокирован как-то по-особенному, все сайты просто через провайдерский DNS, а там то ли DPI, то ли еще что. В связи с шумихой вокруг рутрекера имеет смысл добавить его в список проверяемых ресурсов.

[challenge] Browser-based check

Интересно, а можно ли все это провернуть через браузер? Чтобы скинул знакомому ссылку, а у него сразу же результат.

.gitignore

(ну там как нибудь там в свободное время, если оно найдётся.. было бы круто.. да)

Всё прошло успешно, но вывод - Ваш провайдер полностью БЛОКИРУЕТ доступ к HTTPS-сайтам из реестра

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-сайтам из реестра.

Не запускается на Ubuntu 12.04

/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

шаг "Тестируем DNS" в некоторых случаях не определяет подмену

привет всем! это шикарная утилита.. но я выявил следующую особенность...

некоторые провайдеры делают подмену в 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

To-do list

  • Perform HTTPS certificate tests over both IPv4 and IPv6 and resolve IP addresses using Google API for it
  • Perform DPI test over IPv6
  • Refactor {http,https,dpi}_list: make it class
  • Write IP address updating function
  • Make single EXE file for Windows (py2exe, pyinstaller?)
  • Write comments and usage instructions for all functions
  • Remove isup checks from HTTPS tests
  • Disable IPv6 checks if Teredo or 6to4 address detected

При тестировании Мегафон 3G вылетает с ошибкой

При попытке протестировать Мегафон 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

При этом, МТС "Домашний Интернет и ТВ" тестится на ура.

Определение ZapretService

Писал в 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, но через оба доступных мне провайдера, которые используют это решение, такого не наблюдаю. Видимо, обновляться особо никто не стремится.

Останавливается на https://e621.net/

Не показывает результат, останавливаясь на Открываем https://e621.net/
Видимо изза
ssl_error_bad_cert_domain
e621.net использует недействительный сертификат безопасности. Сертификат действителен только для следующих имён: *.netbynet.ru, netbynet.ru

Запуск в окружении Termux/Android

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, который не знает о способе получения системного днс в андроиде.
Наверное, было бы логичнее сначала составить багрепорт у днспитона.

typo

blockcheck.py, line 149: "У вашего провайдер"

OSError(57, 'Socket is not connected')

Сабж при тестировании обхода 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')

В чём может быть дело?

беда с виндовз релизом 0.0.5.1

  1. Это поле пусто:
    Адреса через системный DNS:
  2. Это неправда, открывается в браузере
    [O] Тестируем HTTPS
    Открываем https://2chru.net/
    [☠] Сайт не открывается
    Юниксный 0.0.5.1 работает.
    1-е может потому, что резолвером стоит рутер по dual-stack, с адресом IPv6

Поддержка IPv6

Есть ли возможность добавить проверку на работу заблокированных сайтов через IPv6?

Script hangs

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/

Неработающие сайты воспринимаются как «полный DPI»

На данный момент http://sukebei.nyaa.se/ лежит. Так как скрипт не может его открыть, в т.ч. через прокси, он воспринимает это как блокировку через «полный DPI».

Предлагаю встроить проверку через сторонний сервер, например isup.me. Если и он не может достучаться до сайта, не учитывать этот сайт вообще. Конкретно для isup.me есть скрипт вот здесь: https://github.com/fenhl/isup

Могу прислать пулл-реквест, когда будет время, если нет идеи лучше.

Вылетает по ошибке во время тестирования HTTPS

$ ./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)

Cannot find "dns.resolver"

Я пытаюсь запустить скрипт на elementary OS Freya (Ubuntu-derivative), но скрипт выдает мне
ImportError: No module named 'dns'
Какие пакеты поставить, чтобы dns появился?

Определять IPv6 тунель

Не производить проверку IPv6 если будет обнаружен не нативный IPv6. Достаточно сравнить автономную систему IPv4 и IPv6 если они не совпадают отключать IPv6 проверки.

Планирую прислать позже патч

С sukebei.nyaa.se по-прежнему проблемы (уже по новому IP)

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'

Блокировки иных стран.

Доброго времени.

Раз blockcheck выходит на межународный рынок, быть может, можно рассмотреть блокировки других стран?

Меня в первую очередь интересует Великобритания. Virgin Broadband блокирует http://gen.lib.rus.ec и ещё я натыкался на другие заблокированные ресурсы, гуляя по Гуглу.

Ошибочный результат проверки

[!] Результат:
[⚠] У вашего провайдера "полный" 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/ открывается всегда
его подфорум - тоже, но содержимое видно только через иностранный прокси.
Пчелайн

UnicodeEncodeError: 'ascii' codec can't encode characters in position 20-28: ordinal not in range(128)

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.

Пожалуйста уберите лишние красивости из UTF-8

Я понимаю, модно, но не у всех 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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.