Convert Figma logo to code with AI

ValdikSS logoblockcheck

Russian ISP blocking type checker NOTE: NOT WORKING CURRENTLY. ВНИМАНИЕ: НЕ РАБОТАЕТ НА ТЕКУЩИЙ МОМЕНТ

1,365
144
1,365
16

Top Related Projects

1,232

Register of Internet Addresses filtered in Russian Federation

5,787

DPI bypass multi platform

GoodbyeDPI — Deep Packet Inspection circumvention utility (for Windows)

Powerful and extensible proxy server with anti-censorship functionality

Quick Overview

The ValdikSS/blockcheck repository is a command-line tool that checks if a website or IP address is blocked by various internet service providers (ISPs) and censorship systems. It can be used to detect internet censorship and monitor the accessibility of websites.

Pros

  • Cross-platform compatibility: The tool can be used on Windows, macOS, and Linux.
  • Comprehensive testing: It checks for blocks across a wide range of ISPs and censorship systems, including China's Great Firewall, Roskomnadzor (Russia), and Telia (Sweden).
  • Detailed output: The tool provides detailed information about the type of block and the reason for the block, if available.
  • Automation and scripting: The tool can be easily integrated into scripts and automated workflows for continuous monitoring of website accessibility.

Cons

  • Limited to specific providers: The tool only checks for blocks by a limited set of ISPs and censorship systems, and may not detect blocks by other providers.
  • Potential false positives: The tool's detection methods may sometimes report a website as blocked when it is actually accessible, due to network issues or other factors.
  • Requires manual configuration: Users may need to configure the tool's settings and parameters to suit their specific use case, which can be time-consuming.
  • Potential legal issues: The use of this tool to bypass internet censorship may be illegal in some jurisdictions, and users should be aware of the applicable laws and regulations.

Getting Started

To use the ValdikSS/blockcheck tool, follow these steps:

  1. Clone the repository:
git clone https://github.com/ValdikSS/blockcheck.git
  1. Change to the project directory:
cd blockcheck
  1. Install the required dependencies:
pip install -r requirements.txt
  1. Run the tool to check the accessibility of a website or IP address:
python blockcheck.py https://www.example.com

The tool will output the results of the block check, including the type of block and the reason for the block, if available.

You can also use the tool to check a list of websites or IP addresses by providing a file with the URLs or IPs, one per line:

python blockcheck.py -f websites.txt

Additionally, the tool supports various command-line options to customize the behavior, such as specifying the timeout, the number of retries, and the output format. You can view the available options by running:

python blockcheck.py --help

Competitor Comparisons

1,232

Register of Internet Addresses filtered in Russian Federation

Pros of z-i

  • More comprehensive database of blocked resources
  • Regular updates from community contributions
  • Includes tools for analyzing and circumventing censorship

Cons of z-i

  • Less user-friendly interface for non-technical users
  • Primarily focused on Russian internet censorship
  • Requires more manual configuration

Code Comparison

blockcheck:

def check_dns(host):
    try:
        ip = socket.gethostbyname(host)
        return ip
    except socket.gaierror:
        return None

z-i:

def resolve(hostname, timeout=None):
    try:
        return socket.getaddrinfo(hostname, None, socket.AF_INET)[0][4][0]
    except socket.gaierror:
        return None

Both projects use similar approaches for DNS resolution, but z-i's implementation is more concise and handles IPv6 addresses.

Summary

blockcheck is a simpler tool focused on checking internet censorship, while z-i offers a more comprehensive approach to monitoring and circumventing censorship, particularly in Russia. blockcheck may be more accessible for casual users, but z-i provides more advanced features for those willing to invest time in configuration and analysis.

5,787

DPI bypass multi platform

Pros of zapret

  • More comprehensive set of circumvention techniques, including DNS-over-HTTPS and DNS-over-TLS
  • Actively maintained with regular updates and improvements
  • Supports a wider range of operating systems and network configurations

Cons of zapret

  • More complex setup and configuration process
  • Requires root/administrator privileges for some features
  • May have a steeper learning curve for non-technical users

Code Comparison

zapret:

./configure
make
sudo make install
sudo zapret-start

blockcheck:

python3 blockcheck.py

Summary

zapret offers a more comprehensive and actively maintained solution for circumventing internet censorship, supporting various techniques and platforms. However, it requires more technical expertise to set up and use effectively. blockcheck, on the other hand, provides a simpler, single-file Python script that can quickly check for blocked websites but offers fewer circumvention options. The choice between the two depends on the user's technical skills and specific needs for bypassing internet restrictions.

GoodbyeDPI — Deep Packet Inspection circumvention utility (for Windows)

Pros of GoodbyeDPI

  • More actively maintained with recent updates
  • Focuses specifically on bypassing Deep Packet Inspection (DPI)
  • Offers multiple techniques for circumventing censorship

Cons of GoodbyeDPI

  • Limited to Windows operating systems
  • Requires more technical knowledge to set up and use effectively
  • May not detect all types of internet censorship like blockcheck does

Code Comparison

blockcheck:

def check_dns(host):
    try:
        socket.gethostbyname(host)
        return True
    except socket.error:
        return False

GoodbyeDPI:

int dpi_desync_fooling(struct desync_data *desync, char *packet, int packet_len) {
    int i;
    for (i = 0; i < desync->desync_fooling_num; i++) {
        send_desync_dummy(desync, packet, packet_len);
    }
    return 0;
}

Both projects serve different purposes but aim to address internet censorship. blockcheck is a Python-based tool for detecting various types of blocking, while GoodbyeDPI is a C-based tool specifically designed to bypass DPI systems on Windows. The code snippets show their different approaches: blockcheck checks DNS resolution, while GoodbyeDPI implements DPI desynchronization techniques.

Powerful and extensible proxy server with anti-censorship functionality

Pros of PowerTunnel

  • More actively maintained with recent updates
  • Offers a user-friendly GUI for easier configuration
  • Supports multiple protocols and censorship circumvention methods

Cons of PowerTunnel

  • Larger codebase, potentially more complex to understand and modify
  • May have higher resource usage due to additional features

Code Comparison

PowerTunnel (Java):

public class PowerTunnel {
    public static void main(String[] args) {
        // Initialize and start the proxy server
        ProxyServer server = new ProxyServer();
        server.start();
    }
}

blockcheck (Python):

def main():
    # Perform connectivity checks
    check_connectivity()
    # Display results
    print_results()

if __name__ == "__main__":
    main()

Summary

PowerTunnel is a more feature-rich and actively maintained project, offering a GUI and multiple circumvention methods. It's written in Java and focuses on providing a user-friendly proxy solution. blockcheck, on the other hand, is a simpler Python script designed to check for internet censorship and blocking. While PowerTunnel offers more functionality, it may be more complex and resource-intensive compared to the lightweight blockcheck tool.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

BlockCheck

Сообщение для жителей Украины | повідомлення для мешканців України

Утилита для определения типа блокировок сайтов из единого реестра запрещенной информации на стороне провайдеров Российской Федерации.

Данная утилита позволяет определить:

  • Подмену DNS-ответов
  • Перенаправление сторонних DNS-серверов на провайдерские
  • Блокировку сторонних DNS-серверов
  • Блокировку всей зоны (поддоменов) заблокированного домена
  • «Обычный» DPI (фильтрация URL на определенных IP-адресах и портах)
  • «Полный» DPI (фильтрация URL на всех IP-адресах и/или портах)
  • Подмену SSL (HTTPS)-сертификата (прослушивание HTTPS-трафика)
  • Блокировку по IP-адресу

Также приложение обнаруживает пассивный DPI, выполняет тесты для обхода активного DPI, если он обнаружен на стороне провайдера. На данный момент реализованы следующие техники:

  • Дополнительный пробел после GET
  • Перенос строки перед GET
  • Фрагментирование заголовка
  • Точка в конце домена
  • Табуляция в конце домена
  • Заголовок host вместо Host
  • Перенос строки в заголовках в UNIX-стиле

Более подробно о видах DPI и типах подключения читайте в Wiki проекта: Типы DPI

Приложение автоматически отправляет статистику об используемом типе блокировки на сервер. Если вы используете сторонний DNS, тестируете разные способы обхода блокировок и запускаете программу для определения их эффективности, либо просто не хотите отправлять информацию о вашем провайдере на сервер, пожалуйста, пользуйтесь параметром --no-report.

http://habrahabr.ru/post/229377/ — статистика по провайдерам (устарела)

Запуск

Проще всего воспользоваться бинарными сборками под Windows, Linux и macOS из раздела Releases. Они самодостаточны и не требуют установки.

Если вы хотите изменить исходный код, вам потребуется Python >= 3.4 с модулем dnspython. Установить его можно из репозитория вашего дистрибутива, или используя pip:

python3 -m pip install -r requirements.txt

Использование

Приложение запускается в графическом режиме по умолчанию, если в систему установлен Tkinter.
--console отключает графический интерфейс и принудительно активирует консольный режим.
--no-report отключает отправку результатов тестирования на сервер. Пожалуйста, используйте эту опцию, если вы экспериментируете со способами обхода блокировок.
--force-dpi-check выполнит проверку DPI, даже если сайты не заблокированы.
--disable-ipv6 отключает все проверки, связанные с IPv6.

Это не все доступные опции. Запустите программу с парамером --help для получения подробной информации.

Сборка исполняемого файла

Для сборки исполняемого файла для Windows, Linux и macOS:

  1. Установите Python 3, с официального сайта или из репозиториев вашего дистрибутива
  2. python -m pip install -r requirements.txt
  3. python -m pip install pyinstaller
  4. pyinstaller blockcheck.spec

Исполняемый файл будет в директории dist.