Разблокировать gelbooru – Telegraph
Разблокировать gelbooruРазблокировать gelbooru
Рады представить вашему вниманию магазин, который уже удивил своим качеством!
И продолжаем радовать всех!)
Мы — это надежное качество клада, это товар высшей пробы, это дружелюбный оператор!
Такого как у нас не найдете нигде!
Наш оператор всегда на связи, заходите к нам и убедитесь в этом сами!
Наши контакты:
Telegram:
https://t.me/stuff_men
ВНИМАНИЕ!!! В Телеграмм переходить только по ссылке, в поиске много фейков!
Unblock Sites позволяет обойти большинство блокировок сайтов без установки дополнительного ПО или изменения настроек браузера. Просто нажмите ‘Разблокировать’ ниже чтобы открыть gelbooru. Наша технология ‘прокси прямо в браузере’ — самая продвинутая в своём роде, но она имеет фундаментальные ограничения. Если вы не смогли отрыть gelbooru. Пожалуйста обратите внимание, что эти методы требуют наличия у вас прав администратора на вашем компьютере. Если вы пользуетесь компьютером с ограниченными правами доступа, вы скорее всего не сможете ими воспользоваться. VPN — это самый эффективный и надёжный способ обхода блокировок, но он также может потребовать чуть больше усилий для настройки и стоить некоторого количества денег в случае премиум-сервиса. Однако, если вам часто приходится выходить в сеть через фильтрующий шлюз и вас беспокоит защита вашей личной информации, это более чем стоит времени и денег. Мы ZenVPN who offer easy to install client software, quality connectivity worldwide and strong privacy guarantees. Компьютеры в Сети обмениваются информацией при помощи цифровых идентификаторов, называемых IP-адресами. Прежде чем ваш компьютер сможет соединиться с сервером gelbooru. Многие интернет-фильтры вмешиваются именно в этот процесс и сообщают вашему компьютеру ложный IP-адрес вместо настоящего адреса gelbooru. Для обхода блокировки этого типа, вы можете настроить свой компьютер всегда использовать предопределённый IP-адрес для связи c gelbooru. Чтобы это сделать, вам необходимо отредактировать так называемый hosts-файл. В ОС Windows это ‘ C: Для отображения современной веб-странице, вашему компьютеру обычно требуется соединиться с несколькими серверами. По этой причине в списке выше больше чем одна строка. Подпишитесь на рассылку свежих прокси пока его не заблокировали! Альтернативные способы обхода блокировок Наша технология ‘прокси прямо в браузере’ — самая продвинутая в своём роде, но она имеет фундаментальные ограничения. Используя VPN VPN — это самый эффективный и надёжный способ обхода блокировок, но он также может потребовать чуть больше усилий для настройки и стоить некоторого количества денег в случае премиум-сервиса. Помогите нам сделать этот разблокировщик лучше — расскажите, как всё работало. Пожалуйста расскажите друзьям про UnblockSites!
Бошки в Нягани
Unblock gelbooru.com
Закладки россыпь в Первоуральске
VK Unblock
Закладки наркотики в Балабанове
Unblock Gelbooru.com
Купить HOMER Чудово
Как обойти блокировку сайтов и трекеров
Купить закладки спайс россыпь в Гусь-хрустальном
Как обойти блокировку сайтов: быстро, просто, бесплатно
Реагент в Дмитре
Тофф плюс трип
Как обойти блокировку сайтов и трекеров
Об исключении из ГНК сведений о границах земельного участка
Unblock Gelbooru.
comКупитьСпайс россыпь в Мезени
VK Unblock
Купить Мефедрон Кашира
Unblock Gelbooru.com
Мефедрон эффект и последствия форум
Как обойти блокировку сайтов: быстро, просто, бесплатно
Таблы купить в москве
Разблокировать gelbooru – Telegraph
Разблокировать gelbooruРазблокировать gelbooru
Купить Здесь
Простой и надежный обход блокировки Вконтакте, Одноклассники, Яндекс, Мэйлру, Кинопоиск из Украины и всего мира Просто установи дополнение в браузер и получи доступ ко всем заблокированным сайтам! Получите доступ ко всем заблокированным сервисам, таким как: Вконтакте, Одноклассники, Яндекс, Кинопоиск и др. Простая процедура установки с официального магазина Google Chrome в один клик. Установить Плюшки Faq Оставьте отзыв. VK Unblock Простой и надежный обход блокировки Вконтакте, Одноклассники, Яндекс, Мэйлру, Кинопоиск из Украины и всего мира Просто установи дополнение в браузер и получи доступ ко всем заблокированным сайтам! Доступ Получите доступ ко всем заблокированным сервисам, таким как: Просто и удобно Простая процедура установки с официального магазина Google Chrome в один клик. Скорость Расширение не влияет на скорость загрузки сайтов. Музыка Музыка на месте. Слушайте свои любимые композиции как и ранее. Любимые сайты без ограничений. Музыка снова с Вами! Общайся с друзьями как и прежде. VK Unblock абсолютно бесплатное решение для доступа к заблокированным сайтам с территории Украины. Мы постоянно работаем над улучшением продукта, чтобы предоставлять только качественные услуги. Пожалуйста, помогите проекту развиваться более стремительно своим отзывом — это дает нам дополнительные мотивации. Оставить отзыв на Chrome Market. Разкажите друзьям о нас!
Разблокировать gelbooru
VK Unblock
Респиратор уфа купить
Гоа микс
Unblock Gelbooru.com
Памперс премиум кеа 2 80 шт цена
Разблокировать gelbooru
Klad ch обход
Как обойти блокировку сайтов и трекеров
Разблокировать gelbooru
Трамадол смоленск
Разблокировать gelbooru
Таблетки митсубиси желтые
Unblock gelbooru.com
Unblock Sites позволяет обойти большинство блокировок сайтов без установки дополнительного ПО или изменения настроек браузера. Просто нажмите ‘Разблокировать’ ниже чтобы открыть gelbooru. Наша технология ‘прокси прямо в браузере’ — самая продвинутая в своём роде, но она имеет фундаментальные ограничения. Если вы не смогли отрыть gelbooru. Пожалуйста обратите внимание, что эти методы требуют наличия у вас прав администратора на вашем компьютере. Если вы пользуетесь компьютером с ограниченными правами доступа, вы скорее всего не сможете ими воспользоваться. VPN — это самый эффективный и надёжный способ обхода блокировок, но он также может потребовать чуть больше усилий для настройки и стоить некоторого количества денег в случае премиум-сервиса. Однако, если вам часто приходится выходить в сеть через фильтрующий шлюз и вас беспокоит защита вашей личной информации, это более чем стоит времени и денег. Мы ZenVPN who offer easy to install client software, quality connectivity worldwide and strong privacy guarantees. Компьютеры в Сети обмениваются информацией при помощи цифровых идентификаторов, называемых IP-адресами. Прежде чем ваш компьютер сможет соединиться с сервером gelbooru. Многие интернет-фильтры вмешиваются именно в этот процесс и сообщают вашему компьютеру ложный IP-адрес вместо настоящего адреса gelbooru. Для обхода блокировки этого типа, вы можете настроить свой компьютер всегда использовать предопределённый IP-адрес для связи c gelbooru. Чтобы это сделать, вам необходимо отредактировать так называемый hosts-файл. В ОС Windows это ‘ C: Для отображения современной веб-странице, вашему компьютеру обычно требуется соединиться с несколькими серверами. По этой причине в списке выше больше чем одна строка. Подпишитесь на рассылку свежих прокси пока его не заблокировали! Альтернативные способы обхода блокировок Наша технология ‘прокси прямо в браузере’ — самая продвинутая в своём роде, но она имеет фундаментальные ограничения. Используя VPN VPN — это самый эффективный и надёжный способ обхода блокировок, но он также может потребовать чуть больше усилий для настройки и стоить некоторого количества денег в случае премиум-сервиса. Помогите нам сделать этот разблокировщик лучше — расскажите, как всё работало. Пожалуйста расскажите друзьям про UnblockSites!
Как клонировать коноплю
Разблокировать gelbooru
Неделя ск петропавловск
Как обойти блокировку сайтов: быстро, просто, бесплатно
Разблокировать gelbooru
Моментальные магазины ramp
Как обойти блокировку сайтов и трекеров
Грибы курить
Разблокировать gelbooru
Дк дружба энгельс официальный сайт
Как обойти блокировку сайтов: быстро, просто, бесплатно
Разблокировать gelbooru
Мускатный орех и йогурт
Как получить доступ к заблокированным сайтам | События в мире — оценки и прогнозы из Германии и Европы | DW
Уровень свободы в интернете во всем мире снижается уже несколько лет подряд. По данным американской неправительственной организации Freedom House, лидером по нарушению свободы в виртуальном пространстве остается Китай. В КНР действует знаменитый «Золотой щит» — мощная системы фильтрации контента, которая годами выстраивалась властями страны. В Китае заблокированы Google, Facebook, Twitter, YouTube, Instagram и ряд других известных во всем мире сервисов.
В число стран с несвободным интернетом вошла и Россия. В докладе Freedom House за 2018 год приводятся случаи блокировки социальных сетей с высоким уровнем шифрования, в том числе популярного мессенджера Telegram. В докладе отмечается, что принятые российскими властями меры привели к блокировке более 18 миллионов IP-адресов, в том числе международных компаний, систем образования и онлайн-бронирования и даже к сбоям в проведении банковских операций.
В Китае заблокированы такие сервисы, как Google, Facebook, Twitter, YouTube и Instagram
В свою очередь, Украина вошла в пятерку стран, где свобода в интернет-пространстве за последние пять лет сократилась больше всего. В числе главных причин создавшейся ситуации американские исследователи называют продолжающийся конфликт на востоке стране и информационную войну Киева с Кремлем: это стало причиной блокировки в 2017 году нескольких популярных российских платформ, в том числе «ВКонтакте», «Одноклассники» и «Яндекс». Freedom House, однако, отмечает, что Украина, даже после падения индекса свободы на 12 пунктов, остается в категории стран с «частично свободным» интернет-пространством. В пятерку стран, где свобода в интернете за последние пять лет ухудшилась больше всего, также вошли Камбоджа, Венесуэла, Египет и Турция.
Bypasscensorship.org предлагает программы для обхода цензуры
Чтобы бороться с цензурой в интернете, ведущие международные медиакомпании — в том числе DW и BBC — совместными усилиями запустили ресурс Bypasscensorship.org, призванный помочь пользователям получить доступ к запрещенному контенту. На сайте можно бесплатно скачать программы, которые помогают обойти цензуру.
В первую очередь, к ним относятся браузер Tor и мобильное приложение Orbot: эти инструменты дают пользователю возможность получить доступ к заблокированным ресурсам, одновременно сохранив анонимность в Сети.
Tor пропускает сигнал через распределенную систему прокси-серверов, управляемую добровольцами по всему миру и позволяющую устанавливать анонимное сетевое соединение. В свою очередь, Orbot использует Tor для шифровки вашего интернет-трафика и затем скрывает его, пропуская через серию компьютеров по всему миру. Эти инструменты не позволяют следить за тем, какие сайты вы посещаете и где физически находитесь.
На ресурсе представлены и другие программы по обходу цензуры, к примеру, приложение Lantern. Этот инструмент автоматически фиксирует, заблокирован ли сайт, после чего выходит на него через свои серверы или других пользователей программы, используя их компьютеры для входа. Доступ к любому сайту через прокси-сеть может обеспечить и приложение Psiphon. Впрочем, в отличие от Tor и Orbot, эти программы не гарантируют пользователю защиту от слежки и не обеспечивают его безопасность в сети.
______________
Подписывайтесь на наши каналы о России, Германии и Европе в | Twitter | Facebook | Youtube | Telegram | WhatsApp
Смотрите также:
Рейтинг стран от «Репортеров без границ»: свободе слова здесь не место
Вьетнам, 175-е место: арест за критику режима
Независимых СМИ во Вьетнаме нет. Единолично правящая Коммунистическая партия диктует журналистам, как и о чем писать. Издатели, редакторы и журналисты по большей части и сами состоят в Компартии. В последнее время в центре внимания властей все чаще оказываются блогеры. Тех, кто бросает вызов коммунистической монополии на право выражать свое мнение, пытаются заставить замолчать арестами.
Рейтинг стран от «Репортеров без границ»: свободе слова здесь не место
Китай, 176-е место: территория несвободы
По мнению «Репортеров без границ», Китай можно назвать крупнейшей тюрьмой под открытым небом для блогеров и журналистов. Власти КНР оказывают массовое давление на инакомыслящих, в том числе и на сотрудников иностранных СМИ. Целые области Китая остаются для них закрытыми, их работа подвергается цензуре, а собеседники и партнеры по интервью нередко оказываются за решеткой.
Рейтинг стран от «Репортеров без границ»: свободе слова здесь не место
Сирия, 177-е место: под пулями
С начала гражданской войны в Сирии подверглись преследованиям и погибли многочисленные представители СМИ. Организация «Репортеры без границ» уже несколько лет подряд причисляет режим Башара Асада к врагам свободы прессы. Однако и радикальная группировка «Фронт Аль-Нусра», противостоящая Асаду, и боевики так называемого «Исламского государства» убивают, похищают и шантажируют журналистов.
Рейтинг стран от «Репортеров без границ»: свободе слова здесь не место
Туркмения, 178-е место: мнимая независимость
Президент Туркменистана Гурбангулы Бердымухамедов владеет всеми СМИ в стране. Исключение составляет лишь газета «Рысгал», но и ее издатели должны согласовывать каждый выпуск. После того, как в 2013 году в стране был принят закон «о СМИ», декларирующий свободу медиа и недопустимость цензуры, население получило доступ к зарубежным СМИ. Однако и интернет контролируется правительством.
Рейтинг стран от «Репортеров без границ»: свободе слова здесь не место
КНДР, 179-е место: диктатор диктует правила
Свободы прессы нет и в Северной Корее. Руководство КНДР во главе с Ким Чен Ыном (на фото) держит под контролем все, что пишут местные газеты и журналы. Теле- и радиоприемники населения настроены исключительно на государственных вещателей. Любой, кто осмелится высказать мнение, отличное от мнения партии, попадает в так называемые «лагеря трудового перевоспитания» — вместе со всеми членами семьи.
Рейтинг стран от «Репортеров без границ»: свободе слова здесь не место
Эритрея, 180-е место: КНДР по-африкански
Организация «Репортеры без границ» поместила на последнее место в рейтинге свободы прессы Эритрею. По мнению правозащитников, в этой стране действует наихудший для СМИ режим. Из-за гонений и притеснений многие журналисты вынуждены покидать родину. О реальной ситуации в стране население Эритреи может узнать лишь посредством вешающего из Парижа Radio Erena.
Автор: Сабрина Пабст, Григорий Аросев
Новый DPI в Перми для блокировки Telegram — Russia
Результат blockcheck tls_experiment_v1
BlockCheck v0. 0.9.8-tls_experiment_v1
Для получения корректных результатов используйте DNS-сервер провайдера и отключите средства обхода блокировок.
Проверка работоспособности IPv6: IPv6 недоступен.
IP: 188.17.169.xxx, провайдер: OJSC Uralsvyazinform/ Ростелеком МРФ "Урал"
[O] Тестируем IPv4 DNS
Через системный DNS: ['104.18.182.1', '104.18.183.1', '104.20.134.45', '104.20.135.45', '104.24.10.70', '104.24.11.70', '195.8.215.136', '195.82.146.214', '208.100.28.56', '67.202.114.141']
Через Google DNS: ['104.18.182.1', '104.18.183.1', '104.20.134.45', '104.20.135.45', '104.24.10.70', '104.24.11.70', '195.8.215.136', '195.82.146.214', '208.100.28.56', '67.202.114.141']
Через Google API: ['104.18.182.1', '104.18.183.1', '104.20.134.45', '104.20.135.45', '104.24.10.70', '104.24.11.70', '195.8.215.136', '195.82.146.214', '208.100.28.56', '67.202.114.141']
Несуществующий DNS не вернул адресов (это не ошибка)
[✓] DNS-записи не подменяются
[✓] DNS не перенаправляется
[O] Тестируем HTTP
Открываем http://a. putinhuylo.com/
[✓] Сайт открывается
Открываем http://furry.booru.org/
[✓] Сайт открывается
Открываем http://furry.booru.org/index.php?page=post&s=view&id=111173
[☠] Сайт не открывается, пробуем через прокси
[✓] Сайт открывается через прокси
Открываем http://pbooru.com/
[✓] Сайт открывается
Открываем http://pbooru.com/index.php?page=post&s=view&id=303026
[✓] Сайт открывается
Открываем http://rutracker.org/forum/index.php
[☠] Сайт не открывается, пробуем через прокси
[✓] Сайт открывается через прокси
[O] Тестируем HTTPS
Открываем https://e621.net/
[✓] Сайт открывается
Открываем https://lolibooru.moe/
[✓] Сайт открывается
Открываем https://rutracker.org/forum/index.php
[☠] Сайт не открывается
Открываем https://www.dailymotion.com/
[☠] Сайт не открывается
[O] Тестируем обход DPI
Пробуем способ «дополнительный пробел после GET» на pbooru.com
[☠] Сайт не открывается
Пробуем способ «заголовок hOSt вместо Host» на pbooru.com
[☠] Сайт не открывается
Пробуем способ «заголовок hoSt вместо Host» на pbooru. com
[☠] Сайт не открывается
Пробуем способ «значение Host БОЛЬШИМИ БУКВАМИ» на pbooru.com
[☠] Сайт не открывается
Пробуем способ «необычный порядок заголовков» на pbooru.com
[☠] Сайт не открывается
Пробуем способ «отсутствие пробела между двоеточием и значением заголовка Host» на pbooru.com
[☠] Сайт не открывается
Пробуем способ «перенос строки в заголовках в UNIX-стиле» на pbooru.com
[☠] Сайт не открывается
Пробуем способ «перенос строки перед GET» на pbooru.com
[☠] Сайт не открывается
Пробуем способ «табуляция в конце домена» на pbooru.com
[☠] Сайт не открывается
Пробуем способ «точка в конце домена» на pbooru.com
[☠] Сайт не открывается
Пробуем способ «фрагментирование заголовка» на pbooru.com
[☠] Сайт не открывается
Пробуем способ «фрагментирование заголовка, hoSt и отсутствие пробела одновременно» на pbooru.com
[☠] Сайт не открывается
Пробуем способ «дополнительный пробел после GET» на rutracker.org
[☠] Ошибка: timeout('timed out')
Пробуем способ «заголовок hOSt вместо Host» на rutracker. org
[☠] Ошибка: timeout('timed out')
Пробуем способ «заголовок hoSt вместо Host» на rutracker.org
[☠] Ошибка: timeout('timed out')
Пробуем способ «значение Host БОЛЬШИМИ БУКВАМИ» на rutracker.org
[☠] Ошибка: timeout('timed out')
Пробуем способ «необычный порядок заголовков» на rutracker.org
[☠] Ошибка: timeout('timed out')
Пробуем способ «отсутствие пробела между двоеточием и значением заголовка Host» на rutracker.org
[☠] Ошибка: timeout('timed out')
Пробуем способ «перенос строки в заголовках в UNIX-стиле» на rutracker.org
[☠] Ошибка: timeout('timed out')
Пробуем способ «перенос строки перед GET» на rutracker.org
[✓] Сайт открывается
Пробуем способ «табуляция в конце домена» на rutracker.org
[☠] Ошибка: timeout('timed out')
Пробуем способ «точка в конце домена» на rutracker.org
[☠] Ошибка: timeout('timed out')
Пробуем способ «фрагментирование заголовка» на rutracker.org
[☠] Ошибка: timeout('timed out')
Пробуем способ «фрагментирование заголовка, hoSt и отсутствие пробела одновременно» на rutracker. org
[☠] Ошибка: timeout('timed out')
[O] Тестируем обход DPI (HTTPS)
Пробуем Обычный запрос на dailymotion.com
[☠] Ошибка (TLS): timeout('_ssl.c:1059: The handshake operation timed out')
Пробуем ClientHello без SNI на dailymotion.com
[☠] Ошибка (TLS): timeout('_ssl.c:1059: The handshake operation timed out')
Пробуем ClientHello с большим padding на dailymotion.com
[☠] Ошибка (TLS): timeout('_ssl.c:1059: The handshake operation timed out')
Пробуем ClientHello с большим padding и SNI только в конце padding на dailymotion.com
[☠] Ошибка (TLS): timeout('_ssl.c:1059: The handshake operation timed out')
Пробуем ClientHello с большим padding, поддельным SNI в начале и правильным до padding на dailymotion.com
[☠] Ошибка (TLS): timeout('_ssl.c:1059: The handshake operation timed out')
Пробуем ClientHello с большим padding, поддельным SNI в начале и правильным после padding на dailymotion.com
[☠] Ошибка (TLS): timeout('_ssl.c:1059: The handshake operation timed out')
Пробуем Обычный запрос на danbooru. donmai.us
[☠] Ошибка (TLS): timeout('_ssl.c:1059: The handshake operation timed out')
Пробуем ClientHello без SNI на danbooru.donmai.us
[✓] Сайт открывается
Пробуем ClientHello с большим padding на danbooru.donmai.us
[✓] Сайт открывается
Пробуем ClientHello с большим padding и SNI только в конце padding на danbooru.donmai.us
[✓] Сайт открывается
Пробуем ClientHello с большим padding, поддельным SNI в начале и правильным до padding на danbooru.donmai.us
[☠] Ошибка (TLS): SSLError(1, '[SSL: TLSV1_ALERT_DECODE_ERROR] tlsv1 alert decode error (_ssl.c:1076)')
Пробуем ClientHello с большим padding, поддельным SNI в начале и правильным после padding на danbooru.donmai.us
[☠] Ошибка (TLS): SSLError(1, '[SSL: TLSV1_ALERT_DECODE_ERROR] tlsv1 alert decode error (_ssl.c:1076)')
Пробуем Обычный запрос на e621.net
[✓] Сайт открывается
Пробуем ClientHello без SNI на e621.net
[✓] Сайт открывается
Пробуем ClientHello с большим padding на e621.net
[✓] Сайт открывается
Пробуем ClientHello с большим padding и SNI только в конце padding на e621. net
[✓] Сайт открывается
Пробуем ClientHello с большим padding, поддельным SNI в начале и правильным до padding на e621.net
[☠] Ошибка (TLS): SSLError(1, '[SSL: TLSV1_ALERT_DECODE_ERROR] tlsv1 alert decode error (_ssl.c:1076)')
Пробуем ClientHello с большим padding, поддельным SNI в начале и правильным после padding на e621.net
[☠] Ошибка (TLS): SSLError(1, '[SSL: TLSV1_ALERT_DECODE_ERROR] tlsv1 alert decode error (_ssl.c:1076)')
Пробуем Обычный запрос на gelbooru.com
[☠] Ошибка (TLS): timeout('_ssl.c:1059: The handshake operation timed out')
Пробуем ClientHello без SNI на gelbooru.com
[☠] Ошибка (TLS): timeout('_ssl.c:1059: The handshake operation timed out')
Пробуем ClientHello с большим padding на gelbooru.com
[☠] Ошибка (TLS): timeout('_ssl.c:1059: The handshake operation timed out')
Пробуем ClientHello с большим padding и SNI только в конце padding на gelbooru.com
[☠] Ошибка (TLS): timeout('_ssl.c:1059: The handshake operation timed out')
Пробуем ClientHello с большим padding, поддельным SNI в начале и правильным до padding на gelbooru. com
[☠] Ошибка (TLS): SSLError(1, '[SSL: TLSV1_ALERT_DECODE_ERROR] tlsv1 alert decode error (_ssl.c:1076)')
Пробуем ClientHello с большим padding, поддельным SNI в начале и правильным после padding на gelbooru.com
[☠] Ошибка (TLS): SSLError(1, '[SSL: TLSV1_ALERT_DECODE_ERROR] tlsv1 alert decode error (_ssl.c:1076)')
Пробуем Обычный запрос на rutracker.org
[☠] Ошибка (TLS): ConnectionResetError(10054, 'Удаленный хост принудительно разорвал существующее подключение', None, 10054, None)
Пробуем ClientHello без SNI на rutracker.org
[☠] Ошибка (TLS): timeout('_ssl.c:1059: The handshake operation timed out')
Пробуем ClientHello с большим padding на rutracker.org
[☠] Ошибка (TLS): timeout('_ssl.c:1059: The handshake operation timed out')
Пробуем ClientHello с большим padding и SNI только в конце padding на rutracker.org
[☠] Ошибка (TLS): timeout('_ssl.c:1059: The handshake operation timed out')
Пробуем ClientHello с большим padding, поддельным SNI в начале и правильным до padding на rutracker. org
[☠] Ошибка (TLS): timeout('_ssl.c:1059: The handshake operation timed out')
Пробуем ClientHello с большим padding, поддельным SNI в начале и правильным после padding на rutracker.org
[☠] Ошибка (TLS): timeout('_ssl.c:1059: The handshake operation timed out')
Пробуем Обычный запрос на zello.com
[☠] Ошибка (TLS): timeout('_ssl.c:1059: The handshake operation timed out')
Пробуем ClientHello без SNI на zello.com
[✓] Сайт открывается
Пробуем ClientHello с большим padding на zello.com
[✓] Сайт открывается
Пробуем ClientHello с большим padding и SNI только в конце padding на zello.com
[✓] Сайт открывается
Пробуем ClientHello с большим padding, поддельным SNI в начале и правильным до padding на zello.com
[☠] Ошибка (TLS): SSLError(1, '[SSL: TLSV1_ALERT_DECODE_ERROR] tlsv1 alert decode error (_ssl.c:1076)')
Пробуем ClientHello с большим padding, поддельным SNI в начале и правильным после padding на zello.com
[☠] Ошибка (TLS): SSLError(1, '[SSL: TLSV1_ALERT_DECODE_ERROR] tlsv1 alert decode error (_ssl. c:1076)')
[!] Результат:
[⚠] Ваш провайдер полностью блокирует доступ к HTTPS-сайтам из реестра.
[⚠] У вашего провайдера "обычный" DPI. Вам поможет HTTPS/Socks прокси, VPN или Tor.
Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу
Провайдеры Российской Федерации, в большинстве своем, применяют системы глубокого анализа трафика (DPI, Deep Packet Inspection) для блокировки сайтов, внесенных в реестр запрещенных. Не существует единого стандарта на DPI, есть большое количество реализации от разных поставщиков DPI-решений, отличающихся по типу подключения и типу работы.
Существует два распространенных типа подключения DPI: пассивный и активный.
Пассивный DPI
Пассивный DPI — DPI, подключенный в провайдерскую сеть параллельно (не в разрез) либо через пассивный оптический сплиттер, либо с использованием зеркалирования исходящего от пользователей трафика. Такое подключение не замедляет скорость работы сети провайдера в случае недостаточной производительности DPI, из-за чего применяется у крупных провайдеров. DPI с таким типом подключения технически может только выявлять попытку запроса запрещенного контента, но не пресекать ее. Чтобы обойти это ограничение и заблокировать доступ на запрещенный сайт, DPI отправляет пользователю, запрашивающему заблокированный URL, специально сформированный HTTP-пакет с перенаправлением на страницу-заглушку провайдера, словно такой ответ прислал сам запрашиваемый ресурс (подделывается IP-адрес отправителя и TCP sequence). Из-за того, что DPI физически расположен ближе к пользователю, чем запрашиваемый сайт, подделанный ответ доходит до устройства пользователя быстрее, чем настоящий ответ от сайта.
Выявляем и блокируем пакеты пассивного DPI
Поддельные пакеты, формируемые DPI, легко обнаружить анализатором трафика, например, Wireshark.
Пробуем зайти на заблокированный сайт:
Мы видим, что сначала приходит пакет от DPI, с HTTP-перенаправлением кодом 302, а затем настоящий ответ от сайта. Ответ от сайта расценивается как ретрансмиссия и отбрасывается операционной системой. Браузер переходит по ссылке, указанной в ответе DPI, и мы видим страницу блокировки.
Рассмотрим пакет от DPI подробнее:
HTTP/1.1 302 Found
Connection: close
Location: http://warning.rt.ru/?id=17&st=0&dt=195.82.146.214&rs=http%3A%2F%2Frutracker.org%2F
В ответе DPI не устанавливается флаг «Don’t Fragment», и в поле Identification указано 1. Серверы в интернете обычно устанавливают бит «Don’t Fragment», и пакеты без этого бита встречаются нечасто. Мы можем использовать это в качестве отличительной особенности пакетов от DPI, вместе с тем фактом, что такие пакеты всегда содержат HTTP-перенаправление кодом 302, и написать правило iptables, блокирующее их:
# iptables -A FORWARD -p tcp --sport 80 -m u32 --u32 "0x4=0x10000 && 0x60=0x7761726e && 0x64=0x696e672e && 0x68=0x72742e72" -m comment --comment "Rostelecom HTTP" -j DROP
Что это такое? Модуль u32 iptables позволяет выполнять битовые операции и операции сравнения над 4-байтовыми данными в пакете. По смещению 0x4 хранится 2-байтное поле Indentification, сразу за ним идут 1-байтные поля Flags и Fragment Offset.
Начиная со смещения 0x60 расположен домен перенаправления (HTTP-заголовок Location).
Если Identification = 1, Flags = 0, Fragment Offset = 0, 0x60 = «warn», 0x64 = «ing.», 0x68 = «rt.ru», то отбрасываем пакет, и получаем настоящий ответ от сайта.
В случае с HTTPS-сайтами, DPI присылает TCP Reset-пакет, тоже с Identification = 1 и Flags = 0.
Активный DPI
Активный DPI — DPI, подключенный в сеть провайдера привычным образом, как и любое другое сетевое устройство. Провайдер настраивает маршрутизацию так, чтобы DPI получал трафик от пользователей к заблокированным IP-адресам или доменам, а DPI уже принимает решение о пропуске или блокировке трафика. Активный DPI может проверять как исходящий, так и входящий трафик, однако, если провайдер применяет DPI только для блокирования сайтов из реестра, чаще всего его настраивают на проверку только исходящего трафика.
Системы DPI разработаны таким образом, чтобы обрабатывать трафик с максимально возможной скоростью, исследуя только самые популярные и игнорируя нетипичные запросы, даже если они полностью соответствуют стандарту.
Изучаем стандарт HTTP
Типичные HTTP-запросы в упрощенном виде выглядят следующим образом:
GET / HTTP/1.1
Host: habrahabr.ru
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/50.0
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Запрос начинается с HTTP-метода, затем следует один пробел, после него указывается путь, затем еще один пробел, и заканчивается строка протоколом и переносом строки CRLF.
Заголовки начинаются с большой буквы, после двоеточия ставится символ пробела.
Давайте заглянем в последнюю версию стандарта HTTP/1.1 от 2014 года. Согласно RFC 7230, HTTP-заголовки не зависят от регистра символов, а после двоеточия может стоять произвольное количество пробелов (или не быть их вовсе).
Each header field consists of a case-insensitive field name followed
by a colon (":"), optional leading whitespace, the field value, and
optional trailing whitespace.
header-field = field-name ":" OWS field-value OWS
field-name = token
field-value = *( field-content / obs-fold )
field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]
field-vchar = VCHAR / obs-text
obs-fold = CRLF 1*( SP / HTAB )
; obsolete line folding
OWS — опциональный один или несколько символов пробела или табуляции, SP — одинарный символ пробела, HTAB — табуляция, CRLF — перенос строки и возврат каретки (\r\n).
Это значит, что запрос ниже полностью соответствует стандарту, его должны принять многие веб-серверы, придерживающиеся стандарта:
GET / HTTP/1.1
hoSt:habrahabr.ru
user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/50.0
Accept-Encoding: gzip, deflate, br
coNNecTion: keep-alive ← здесь символ табуляции между двоеточием и значением
На деле же, многие веб-серверы не любят символ табуляции в качестве разделителя, хотя подавляющее большинство серверов нормально обрабатывает и отсутствие пробелов между двоеточием в заголовках, и множество пробелов.
Старый стандарт, RFC 2616, рекомендует снисходительно парсить запросы и ответы сломанных веб-северов и клиентов, и корректно обрабатывать произвольное количество пробелов в самой первой строке HTTP-запросов и ответов в тех местах, где требуется только один:
Clients SHOULD be tolerant in parsing the Status-Line and servers tolerant when parsing the Request-Line. In particular, they SHOULD accept any amount of SP or HT characters between fields, even though only a single SP is required.
Этой рекомендации придерживаются далеко не все веб-серверы. Из-за двух пробелов между методом и путем ломаются некоторые сайты.
Спускаемся на уровень TCP
Соединение TCP начинается с SYN-запроса и SYN/ACK-ответа. В запросе клиент, среди прочей информации, указывает размер TCP-окна (TCP Window Size) — количество байт, которые он готов принимать без подтверждения передачи. Сервер тоже указывает это значение. В интернете используется значение MTU 1500, что позволяет отправить до 1460 байтов данных в одном TCP-пакете.
Если сервер указывает размер TCP-окна менее 1460, клиент отправит в первом пакете данных столько, сколько указано в этом параметре.
Если сервер пришлет TCP Window Size = 2 в SYN/ACK-пакете (или мы его изменим на это значение на стороне клиента), то браузер отправит HTTP-запрос двумя пакетами:
Пакет 1:
GE
Пакет 2:
T / HTTP/1.1
Host: habrahabr.ru
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/50.0
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Используем особенности HTTP и TCP для обхода активного DPI
Многие решения DPI ожидают заголовки только в стандартном виде.
Для блокировки сайтов по домену или URI, они ищут строку «
Host:» в теле запроса. Стоит заменить заголовок «Host» на «hoSt» или убрать пробел после двоеточия, и перед вами открывается запрошенный сайт.
Не все DPI можно обмануть таким простым трюком. DPI некоторых провайдеров корректно анализируют HTTP-заголовки в соответствии со стандартом, но не умеют собирать TCP-поток из нескольких пакетов. Для таких DPI подойдет «фрагментирование» пакета, путем искусственного уменьшения TCP Window Size.
В настоящий момент, в РФ DPI устанавливают и у конечных провайдеров, и на каналах транзитного трафика. Бывают случаи, когда одним способом можно обойти DPI вашего провайдера, но вы видите заглушку транзитного провайдера. В таких случаях нужно комбинировать все доступные способы.
Программа для обхода DPI
Я написал программу для обхода DPI под Windows:
GoodbyeDPI.
Она умеет блокировать пакеты с перенаправлением от пассивного DPI, заменять Host на hoSt, удалять пробел между двоеточием и значением хоста в заголовке Host, «фрагментировать» HTTP и HTTPS-пакеты (устанавливать TCP Window Size), и добавлять дополнительный пробел между HTTP-методом и путем.
Преимущество этого метода обхода в том, что он полностью автономный: нет внешних серверов, которые могут заблокировать.
По умолчанию активированы опции, нацеленные на максимальную совместимость с провайдерами, но не на скорость работы. Запустите программу следующим образом:
goodbyedpi.exe -1 -a
Если заблокированные сайты стали открываться, DPI вашего провайдера можно обойти.
Попробуйте запустить программу с параметром
-2
и зайти на заблокированный HTTPS-сайт. Если все продолжает работать, попробуйте режим
-3
и
-4
(наиболее быстрый).
Некоторые провайдеры, например, Мегафон и Yota, не пропускают фрагментированные пакеты по HTTP, и сайты перестают открываться вообще. С такими провайдерами используйте опцию
-3 -a
Эффективное проксирование для обхода блокировок по IP
В случае блокировок по IP-адресу, провайдеры фильтруют только исходящие запросы на IP-адреса из реестра, но не входящие пакеты с этих адресов.
Программа
ReQryptработает как эффективный прокси-сервер: исходящие от клиента пакеты отправляются на сервер ReQrypt в зашифрованном виде, сервер ReQrypt пересылает их серверу назначения
с подменой исходящего IP-адреса на клиентский, сервер назначения отвечает клиенту напрямую, минуя ReQrypt.
Если наш компьютер находится за NAT, мы не можем просто отправить запрос на сервер ReQrypt и ожидать ответа от сайта. Ответ не дойдет, т.к. в таблице NAT не создана запись для этого IP-адреса.
Для «пробива» NAT, ReQrypt отправляет первый пакет в TCP-соединении напрямую сайту, но с TTL = 3. Он добавляет запись в NAT-таблицу роутера, но не доходит до сайта назначения.
Долгое время разработка была заморожена из-за того, что автор не мог найти сервер с возможностью спуфинга. Спуфинг IP-адресов часто используется для амплификации атак через DNS, NNTP и другие протоколы, из-за чего он запрещен у подавляющего большинства провайдеров. Но сервер все-таки был найден, хоть и не самый удачный. Разработка продолжается.
Заключение и TL;DR
GoodbyeDPI— программа под Windows, позволяющая обходить пассивные и активные DPI. Просто скачайте и запустите ее, и заблокированные сайты станут снова доступны.
Для Linux есть аналогичная программа —
zapret.
Используйте кроссплатформенную программу ReQrypt, если ваш провайдер блокирует сайты по IP-адресу.
Определить тип блокировки сайтов можно программой Blockcheck. Если в тестах DPI вы видите, что сайты открываются, или видите строку «обнаружен пассивный DPI», то GoodbyeDPI вам поможет. Если нет, используйте ReQrypt.
Дополнительная полезная информация есть здесь и здесь.
#!/usr/bin/env python3 # coding: utf-8 import argparse import json import urllib.request import urllib.parse import urllib.error import socket import ssl import sys import os.path import dns.resolver import dns.exception import ipaddress import ipwhois »’ ================================= IMPORTANT Make sure to run this program with —no-report option if you’re editing it, debugging or testing something! Thank you. ================================= ВАЖНО Запускайте программу с опцией —no-report, если вы редактируете ее, отлаживаете или тестируете! Спасибо. ================================= »’ # Configuration VERSION=»0.0.9.8″ SWHOMEPAGE=»https://github.com/ValdikSS/blockcheck» SWUSERAGENT=»Blockcheck/» + VERSION + » » + SWHOMEPAGE dns_records_list = ( # First server in this list should have both A and AAAA records «rutracker.org», # Blocked by domain name. «gelbooru.com», # Only several URLs are blocked, main page is not. «e621.net», # Blocked by domain name. Website is HTTP only. «danbooru.donmai.us», # Blocked by root URL. «dailymotion.com», # Blocked by domain name. «zello.com», # Blocked by domain name. ) http_list = { # Parameters: # status: HTTP response code # lookfor: Substring to search in HTTP reply body # ip: IPv4 address. Used only if hostname can’t be resolved using Google API. # ipv6: IPv6 address # subdomain: This is non-blacklisted subdomain of a blacklisted domain. # is_blacklisted: True if website is not blacklisted and should be treated so. ‘http://pbooru.com/’: # This page should open in case of DPI, it’s not blocked. {‘status’: 200, ‘lookfor’: ‘PoniBooru’, ‘ip’: ‘104.28.10.65’, ‘ipv6’: ‘2400:cb00:2048:1::681c:a41’}, ‘http://pbooru.com/index.php?page=post&s=view&id=303026’: # And this should not. {‘status’: 200, ‘lookfor’: ‘PoniBooru’, ‘ip’: ‘104.28.10.65’, ‘ipv6’: ‘2400:cb00:2048:1::681c:a41’}, ‘http://furry.booru.org/’: {‘status’: 200, ‘lookfor’: ‘FurryBooru’, ‘ip’: ‘104.31.10.182’, ‘ipv6’: ‘2606:4700:31::681f:ab6’}, ‘http://furry.booru.org/index.php?page=post&s=view&id=111173’: {‘status’: 200, ‘lookfor’: ‘FurryBooru’, ‘ip’: ‘104.31.10.182’, ‘ipv6’: ‘2606:4700:31::681f:ab6’}, ‘http://rutracker.org/forum/index.php’: {‘status’: 200, ‘lookfor’: ‘groupcp.php»‘, ‘ip’: ‘195.82.146.214’, ‘ipv6’: ‘2a02:4680:22::214’}, ‘http://a.putinhuylo.com/’: {‘status’: 200, ‘lookfor’: ‘Antizapret’, ‘ip’: ‘195.123.209.38’, ‘subdomain’: True, ‘is_blacklisted’: False}, } https_list = {‘https://rutracker.org/forum/index.php’, ‘https://lolibooru.moe/’, ‘https://e621.net/’, ‘https://www.dailymotion.com/’} dpi_list = { # These tests are currently performed only using IPv4. IPv6 field is not used. ‘rutracker.org’: {‘host’: ‘rutracker.org’, ‘urn’: ‘/forum/index.php’, ‘lookfor’: ‘groupcp.php»‘, ‘ip’: ‘195.82.146.214’, ‘ipv6’: ‘2a02:4680:22::214’}, ‘pbooru.com’: {‘host’: ‘pbooru.com’, ‘urn’: ‘/index.php?page=post&s=view&id=304688’, ‘lookfor’: ‘Related Posts’, ‘ip’: ‘104.28.10.65’, ‘ipv6’: ‘2400:cb00:2048:1::681c:a41’}, } proxy_addr = ‘proxy.antizapret.prostovpn.org:3128’ google_dns = ‘8.8.4.4’ google_dns_v6 = ‘2001:4860:4860::8844’ fake_dns = ‘3.3.3.3’ #Fake server which should never reply fake_dns_v6 = ‘2600::10:20’ google_dns_api = ‘https://dns.google.com/resolve’ isup_server = ‘isup.me’ isup_fmt = ‘https://api.downfor.cloud/httpcheck/{}’ disable_isup = False #If true, presume that all sites are available disable_report = False disable_ipv6 = False force_ipv6 = False force_dpi_check = False # End configuration ipv6_available = False debug = False # Something really bad happened, what most likely is a bug: system DNS # resolver and Google DNS are unavailable, while IPv6 generally work, and so on. # Debug log is sent to server if this variable is True. really_bad_fuckup = False printed_text = » printed_text_with_debug = » try: import tkinter as tk import tkinter.scrolledtext as tkst import threading import queue tkusable = True if not (os.environ.get(‘DISPLAY’) or os.environ.get(‘WAYLAND_DISPLAY’)): tkusable = False class ThreadSafeConsole(tkst.ScrolledText): def __init__(self, master, **options): tkst.ScrolledText.__init__(self, master, **options) self.queue = queue.Queue() self.update_me() def write(self, line): self.queue.put(line) def clear(self): self.queue.put(None) def update_me(self): try: while 1: line = self.queue.get_nowait() if line is None: self.delete(1.0, tk.END) else: self.insert(tk.END, str(line)) self.see(tk.END) self.update_idletasks() except queue.Empty: pass self.after(100, self.update_me) def tk_terminate(): root.destroy() raise SystemExit except ImportError: tkusable = False class ThreadSafeConsole(): pass trans_table = str.maketrans(«⚠✗✓«»», ‘!XV»»‘) def print_string(*args, **kwargs): message = » newline = True for arg in args: message += str(arg) + » » message = message.rstrip(» «) for key, value in kwargs.items(): if key == ‘end’: message += value newline = False if newline: message += «\n» return message def print(*args, **kwargs): global printed_text, printed_text_with_debug if tkusable: this_text = print_string(*args, **kwargs) text.write(this_text) printed_text += this_text printed_text_with_debug += this_text else: if args and sys.stdout.encoding != ‘UTF-8’: args = [x.translate(trans_table).replace(«[☠]», «[FAIL]»).replace(«[☺]», «[:)]»). \ encode(sys.stdout.encoding, ‘replace’).decode(sys.stdout.encoding) for x in args ] __builtins__.print(*args, **kwargs) this_text = print_string(*args, **kwargs) printed_text += this_text printed_text_with_debug += this_text def print_debug(*args, **kwargs): global printed_text_with_debug this_text = print_string(*args, **kwargs) printed_text_with_debug += this_text if debug: print(*args, **kwargs) def really_bad_fuckup_happened(): global really_bad_fuckup really_bad_fuckup = True def _get_a_record(site, querytype=’A’, dnsserver=None): resolver = dns.resolver.Resolver() resolver.timeout = 5 resolver.lifetime = 5 if dnsserver: resolver.nameservers = [dnsserver] result = [] while len(resolver.nameservers): try: resolved = resolver.query(site, querytype) print_debug(str(resolved.response)) for item in resolved.rrset.items: result.append(item.to_text()) return result except dns.exception.Timeout: print_debug(«DNS Timeout for», site, «using», resolver.nameservers[0]) resolver.nameservers.remove(resolver.nameservers[0]) # If all the requests failed return «» def _get_a_record_over_google_api(site, querytype=’A’): result = [] response = _get_url(google_dns_api + «?name={}&type={}».format(site, querytype)) print_debug(«Google API: {}».format(response)) if (response[0] != 200): return » response_js = json.loads(response[1]) try: for dnsanswer in response_js[‘Answer’]: if dnsanswer[‘type’] in (1, 28): result.append(dnsanswer[‘data’]) except KeyError: pass return result def _get_a_records(sitelist, querytype=’A’, dnsserver=None, googleapi=False): result = [] for site in sorted(sitelist): try: if googleapi: responses = _get_a_record_over_google_api(site, querytype) print_debug(«Google API вернул {}».format(responses)) else: responses = _get_a_record(site, querytype, dnsserver) for item in responses: result.append(item) except dns.resolver.NXDOMAIN: print(«[!] Невозможно получить DNS-запись для домена {} (NXDOMAIN). Результаты могут быть неточными.».format(site)) except dns.resolver.NoAnswer: print_debug(«DNS NoAnswer:», site) except dns.exception.DNSException as e: print_debug(«DNSException:», str(e)) really_bad_fuckup_happened() return sorted(result) def _decode_bytes(input_bytes): return input_bytes.decode(errors=’replace’) def _get_url(url, proxy=None, ip=None, headers=False, follow_redirects=True): class NoRedirectHandler(urllib.request.HTTPRedirectHandler): def http_error_302(self, req, fp, code, msg, headers): infourl = urllib.response.addinfourl(fp, headers, req.get_full_url()) infourl.status = code infourl.code = code return infourl http_error_300 = http_error_302 http_error_301 = http_error_302 http_error_303 = http_error_302 http_error_307 = http_error_302 parsed_url = list(urllib.parse.urlsplit(url)) host = parsed_url[1] if parsed_url[0].lower() == «https»: # Manually check certificate as we may need to connect by IP later # and handling certificate check in urllib is painful and invasive context_hostname_check = ssl.create_default_context(ssl.Purpose.SERVER_AUTH) context_hostname_check.verify_mode = ssl.CERT_REQUIRED conn = context_hostname_check.wrap_socket(socket.socket(socket.AF_INET6 if \ (‘:’ in ip if ip else False) else socket.AF_INET), server_hostname=host) conn.settimeout(10) print_debug(«_get_url: connecting over » + (‘IPv6’ if \ (‘:’ in ip if ip else False) else ‘IPv4’)) try: conn.connect((ip if ip else host, 443)) except (ssl.CertificateError) as e: print_debug(«_get_url: ssl.CertificateError», repr(e)) return (-1, ») except (ssl.SSLError, socket.timeout, socket.error) as e: print_debug(«_get_url: socket exception», repr(e)) if ‘CERTIFICATE_VERIFY_FAILED’ in str(e): return (-1, ») return (0, ») finally: try: conn.shutdown(socket.SHUT_RDWR) except Exception: pass try: conn.close() except Exception: pass # SSL Context for urllib context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH) # Disable SSL certificate check as we validated it earlier # This is required to bypass SNI woes when we connect by IP context.check_hostname = False context.verify_mode = ssl.CERT_NONE https_handler = urllib.request.HTTPSHandler(context=context) if not follow_redirects: # HACK: this works only for HTTP and conflicts with https_handler opener = urllib.request.build_opener(NoRedirectHandler, https_handler) else: opener = urllib.request.build_opener(https_handler) if ip: parsed_url[1] = ‘[‘ + str(ip) + ‘]’ if ‘:’ in str(ip) else str(ip) newurl = urllib.parse.urlunsplit(parsed_url) req = urllib.request.Request(newurl) req.add_header(‘Host’, host) else: req = urllib.request.Request(url) if proxy: req.set_proxy(proxy, ‘http’) req.add_header(‘User-Agent’, SWUSERAGENT) try: opened = opener.open(req, timeout=15) output = opened.read() output = _decode_bytes(output) if (headers): output = str(opened.headers) + output opened.close() except (ssl.CertificateError) as e: print_debug(«_get_url: late ssl.CertificateError», repr(e)) return (-1, ») except (urllib.error.URLError, ssl.SSLError, socket.error, socket.timeout) as e: print_debug(«_get_url: late socket exception», repr(e)) if ‘CERTIFICATE_VERIFY_FAILED’ in str(e): return (-1, ») if type(e) is urllib.error.HTTPError: return(e.code, ») return (0, ») except (KeyboardInterrupt, SystemExit) as e: # re-raise exception to send it to caller function raise e except Exception as e: print(«[☠] Неизвестная ошибка:», repr(e)) return (0, ») return (opened.status, output) def _cut_str(string, begin, end): cut_begin = string.find(begin) if cut_begin == -1: return cut_end = string[cut_begin:].find(end) if cut_end == -1: return return string[cut_begin + len(begin):cut_begin + cut_end] def _get_ip_and_isp(): # Dirty and cheap try: request = urllib.request.Request(«https://2ip.ru/», headers={«User-Agent»: SWUSERAGENT} ) data = _decode_bytes(urllib.request.urlopen(request, timeout=10).read()) ip = _cut_str(data, », ») isp = ‘ ‘.join(_cut_str(data, ‘»/isp/’, »).replace(‘»>’, »).split()) if ip and isp: isp = urllib.parse.unquote(isp).replace(‘+’, ‘ ‘) return (ip, isp) except Exception: return def _mask_ip(ipaddr): ipaddr_s = ipaddress.ip_address(ipaddr) if ipaddr_s.version == 4: ipaddr_s = ipaddress.ip_interface(ipaddr + ‘/24’) return str(ipaddr_s.network).replace(‘0/24’, ‘xxx’) if ipaddr_s.version == 6: ipaddr_s = ipaddress.ip_interface(ipaddr + ‘/64’) return str(ipaddr_s.network).replace(‘:/64’, ‘xxxx::’) return None def _dpi_send(host, port, data, fragment_size=0, fragment_count=0): sock = socket.create_connection((host, port), 10) if fragment_count: sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, True) try: for fragment in range(fragment_count): sock.sendall(data[:fragment_size].encode()) data = data[fragment_size:] sock.sendall(data.encode()) recvdata = sock.recv(8192) recv = recvdata while recvdata: recvdata = sock.recv(8192) recv += recvdata finally: try: sock.shutdown(socket.SHUT_RDWR) except Exception: pass sock.close() return _decode_bytes(recv) def _dpi_build_tests(host, urn, ip, lookfor): dpi_built_list = \ {‘дополнительный пробел после GET’: {‘data’: «GET {} HTTP/1.0\r\n».format(urn) + \ «Host: {}\r\nConnection: close\r\n\r\n».format(host), ‘lookfor’: lookfor, ‘ip’: ip, ‘fragment_size’: 0, ‘fragment_count’: 0}, ‘перенос строки перед GET’: {‘data’: «\r\nGET {} HTTP/1.0\r\n».format(urn) + \ «Host: {}\r\nConnection: close\r\n\r\n».format(host), ‘lookfor’: lookfor, ‘ip’: ip, ‘fragment_size’: 0, ‘fragment_count’: 0}, ‘табуляция в конце домена’: {‘data’: «GET {} HTTP/1.0\r\n».format(urn) + \ «Host: {}\t\r\nConnection: close\r\n\r\n».format(host), ‘lookfor’: lookfor, ‘ip’: ip, ‘fragment_size’: 0, ‘fragment_count’: 0}, ‘фрагментирование заголовка’: {‘data’: «GET {} HTTP/1.0\r\n».format(urn) + \ «Host: {}\r\nConnection: close\r\n\r\n».format(host), ‘lookfor’: lookfor, ‘ip’: ip, ‘fragment_size’: 2, ‘fragment_count’: 6}, ‘точка в конце домена’: {‘data’: «GET {} HTTP/1.0\r\n».format(urn) + \ «Host: {}.\r\nConnection: close\r\n\r\n».format(host), ‘lookfor’: lookfor, ‘ip’: ip, ‘fragment_size’: 0, ‘fragment_count’: 0}, ‘заголовок hoSt вместо Host’: {‘data’: «GET {} HTTP/1.0\r\n».format(urn) + \ «hoSt: {}\r\nConnection: close\r\n\r\n».format(host), ‘lookfor’: lookfor, ‘ip’: ip, ‘fragment_size’: 0, ‘fragment_count’: 0}, ‘заголовок hOSt вместо Host’: {‘data’: «GET {} HTTP/1.0\r\n».format(urn) + \ «hOSt: {}\r\nConnection: close\r\n\r\n».format(host), ‘lookfor’: lookfor, ‘ip’: ip, ‘fragment_size’: 0, ‘fragment_count’: 0}, ‘значение Host БОЛЬШИМИ БУКВАМИ’: {‘data’: «GET {} HTTP/1.0\r\n».format(urn) + \ «Host: {}\r\nConnection: close\r\n\r\n».format(host.upper()), ‘lookfor’: lookfor, ‘ip’: ip, ‘fragment_size’: 0, ‘fragment_count’: 0}, ‘отсутствие пробела между двоеточием и значением заголовка Host’: {‘data’: «GET {} HTTP/1.0\r\n».format(urn) + \ «Host:{}\r\nConnection: close\r\n\r\n».format(host), ‘lookfor’: lookfor, ‘ip’: ip, ‘fragment_size’: 0, ‘fragment_count’: 0}, ‘перенос строки в заголовках в UNIX-стиле’: {‘data’: «GET {} HTTP/1.0\n».format(urn) + \ «Host: {}\nConnection: close\n\n».format(host), ‘lookfor’: lookfor, ‘ip’: ip, ‘fragment_size’: 0, ‘fragment_count’: 0}, ‘необычный порядок заголовков’: {‘data’: «GET {} HTTP/1.0\r\n».format(urn) + \ «Connection: close\r\nHost: {}\r\n\r\n».format(host), ‘lookfor’: lookfor, ‘ip’: ip, ‘fragment_size’: 0, ‘fragment_count’: 0}, ‘фрагментирование заголовка, hoSt и отсутствие пробела одновременно’: {‘data’: «GET {} HTTP/1.0\r\n».format(urn) + \ «hoSt:{}\r\nConnection: close\r\n\r\n».format(host), ‘lookfor’: lookfor, ‘ip’: ip, ‘fragment_size’: 2, ‘fragment_count’: 6}, ‘7 КБ данных перед Host’: {‘data’: «GET {} HTTP/1.0\r\n».format(urn) + \ «Connection: close\r\n» + \ «X-Padding1: {}\r\n».format(‘1’*1000) + \ «X-Padding2: {}\r\n».format(‘2’*1000) + \ «X-Padding3: {}\r\n».format(‘3’*1000) + \ «X-Padding4: {}\r\n».format(‘4’*1000) + \ «X-Padding5: {}\r\n».format(‘5’*1000) + \ «X-Padding6: {}\r\n».format(‘6’*1000) + \ «X-Padding7: {}\r\n».format(‘7’*1000) + \ «Host: {}\r\n\r\n».format(host), ‘lookfor’: lookfor, ‘ip’: ip, ‘fragment_size’: 0, ‘fragment_count’: 0}, ’15 КБ данных перед Host’: {‘data’: «GET {} HTTP/1.0\r\n».format(urn) + \ «Connection: close\r\n» + \ «X-Padding1: {}\r\n».format(‘1’*1000) + \ «X-Padding2: {}\r\n».format(‘2’*1000) + \ «X-Padding3: {}\r\n».format(‘3’*1000) + \ «X-Padding4: {}\r\n».format(‘4’*1000) + \ «X-Padding5: {}\r\n».format(‘5’*1000) + \ «X-Padding6: {}\r\n».format(‘6’*1000) + \ «X-Padding7: {}\r\n».format(‘7’*1000) + \ «X-Padding8: {}\r\n».format(‘8’*1000) + \ «X-Padding9: {}\r\n».format(‘9’*1000) + \ «X-Padding10: {}\r\n».format(‘0’*1000) + \ «X-Padding11: {}\r\n».format(‘1’*1000) + \ «X-Padding12: {}\r\n».format(‘2’*1000) + \ «X-Padding13: {}\r\n».format(‘3’*1000) + \ «X-Padding14: {}\r\n».format(‘4’*1000) + \ «X-Padding15: {}\r\n».format(‘5’*1000) + \ «Host: {}\r\n\r\n».format(host), ‘lookfor’: lookfor, ‘ip’: ip, ‘fragment_size’: 0, ‘fragment_count’: 0}, ’21 КБ данных перед Host’: {‘data’: «GET {} HTTP/1.0\r\n».format(urn) + \ «Connection: close\r\n» + \ «X-Padding1: {}\r\n».format(‘1’*3000) + \ «X-Padding2: {}\r\n».format(‘2’*3000) + \ «X-Padding3: {}\r\n».format(‘3’*3000) + \ «X-Padding4: {}\r\n».format(‘4’*3000) + \ «X-Padding5: {}\r\n».format(‘5’*3000) + \ «X-Padding6: {}\r\n».format(‘6’*3000) + \ «X-Padding7: {}\r\n».format(‘7’*3000) + \ «Host: {}\r\n\r\n».format(host), ‘lookfor’: lookfor, ‘ip’: ip, ‘fragment_size’: 0, ‘fragment_count’: 0}, } return dpi_built_list def check_isup(page_url): «»» Check if the site is up using isup.me or whatever is set in `isup_fmt`. Return True if it’s up, False if it’s not, None if isup.me is itself unaccessible or there was an error while getting the response. `page_url` must be a string and presumed to be sanitized (but doesn’t have to be the domain and nothing else, isup.me accepts full URLs) isup.me can’t check HTTPS URL yet, so we return True for them. It’s still useful to call check_isup even on HTTPS URLs for two reasons: because we may switch to a service that can can check them in the future and because check_isup will output a notification for the user. «»» #Note that isup.me doesn’t use HTTPS and therefore the ISP can slip #false information (and if it gets blocked, the error page by the ISP can #happen to have the markers we look for). We should inform the user about #this possibility when showing results. if disable_isup: return True elif page_url.startswith(«https://»): #print(«[☠] {} не поддерживает HTTPS, считаем, что сайт работает, » # «а проблемы только у нас».format(isup_server)) return True print(«\tПроверяем доступность через {}».format(isup_server)) url = isup_fmt.format(page_url) status, output = _get_url(url) if output: output = json.loads(output) if status in (0, -1): print(«[⁇] Ошибка при соединении с {}».format(isup_server)) return None elif status != 200: print(«[⁇] Неожиданный ответ от {}, код {}».format(isup_server, status)) return None elif output.get(‘isDown’) == False: print(«[☠] Сайт доступен, проблемы только у нас») return True elif output.get(‘isDown’): print(«[✗] Сайт недоступен, видимо, он не работает») return False else: print(«[⁇] Не удалось распознать ответ от {}».format(isup_server)) return None DNS_IPV4 = 0 DNS_IPV6 = 1 def test_dns(dnstype=DNS_IPV4): sites_list = list(dns_records_list) query_type = («A» if dnstype==DNS_IPV4 else «AAAA») print(«[O] Тестируем » + («IPv4» if dnstype==DNS_IPV4 else «IPv6″) + » DNS») resolved_default_dns = _get_a_records(sites_list, query_type) print(«\tЧерез системный DNS:\t», str(resolved_default_dns)) resolved_google_dns = _get_a_records(sites_list, query_type, (google_dns if dnstype==DNS_IPV4 else google_dns_v6)) if resolved_google_dns: print(«\tЧерез Google DNS:\t», str(resolved_google_dns)) else: print(«\tНе удалось подключиться к Google DNS») resolved_google_api = _get_a_records(sites_list, query_type, googleapi=True) if resolved_google_api: print(«\tЧерез Google API:\t», str(resolved_google_api)) else: print(«\tНе удалось подключиться к Google API») really_bad_fuckup_happened() resolved_fake_dns = _get_a_records((sites_list[0],), query_type, (fake_dns if dnstype==DNS_IPV4 else fake_dns_v6)) if resolved_fake_dns: print(«\tЧерез недоступный DNS:\t», str(resolved_fake_dns)) else: print(«\tНесуществующий DNS не вернул адресов (это не ошибка)») if not resolved_default_dns: print(«[?] Ошибка получения адреса через системный DNS») really_bad_fuckup_happened() return 5 elif not resolved_google_dns: print(«[☠] Сторонние DNS блокируются») return 4 # Assume that Google API always works and returns correct addresses dns_records = resolved_google_api if not dns_records: print(«[?] Не удалось связаться с Google API. Проверка DNS сломана.») really_bad_fuckup_happened() return 5 if resolved_default_dns == resolved_google_dns: if not resolved_fake_dns and len(resolved_default_dns) == len(dns_records): print(«[✓] DNS-записи не подменяются») print(«[✓] DNS не перенаправляется») return 0 if resolved_default_dns == dns_records: # Resolved DNS = Google DNS = Google API, and fake # DNS resolved something. print(«[✓] DNS-записи не подменяются») print(«[☠] DNS перенаправляется») return 1 else: print(«[☠] DNS-записи подменяются») print(«[☠] DNS перенаправляется») return 2 else: if resolved_google_dns == dns_records: print(«[☠] DNS-записи подменяются») print(«[✓] DNS не перенаправляется») return 3 if resolved_fake_dns: # Resolved DNS != Google DNS != Google API, and fake DNS resolved something. print(«[☠] DNS-записи подменяются») print(«[☠] DNS перенаправляется») return 2 print(«[?] Способ блокировки DNS определить не удалось. » «Убедитесь, что вы используете DNS провайдера, а не сторонний.») really_bad_fuckup_happened() return 5 HTTP_ACCESS_NOBLOCKS = 0 HTTP_ACCESS_IPBLOCK = 1 HTTP_ACCESS_IPDPI = 2 HTTP_ACCESS_FULLDPI = 3 HTTP_ISUP_ALLUP = 0 HTTP_ISUP_SOMEDOWN = 1 HTTP_ISUP_ALLDOWN = 2 HTTP_ISUP_BROKEN = 3 def test_http_access(by_ip=False): «»» Test plain HTTP access and return three values: 1. The result — one of the HTTP_ACCESS_* constants 2. isup.me info — one of the HTTP_ISUP_* constants 3. Subdomain block result «»» sites = http_list proxy = proxy_addr print(«[O] Тестируем HTTP» + (‘ (по настоящим IP-адресам сайтов)’ if by_ip else »)) successes_v4 = 0 successes_v6 = 0 successes_proxy = 0 down = 0 blocks = 0 blocks_ambiguous = 0 blocks_subdomains = 0 result_v4 = -1 result_v6 = -1 for site in sorted(sites): print(«\tОткрываем «, site) # First try to resolve IP address using Google API. # Use a static one if this did not work. if by_ip: domain = list(urllib.parse.urlsplit(site))[1] newip = _get_a_record_over_google_api(domain) if ipv6_available: newipv6 = _get_a_record_over_google_api(domain, ‘AAAA’) if newip: sites[site][‘ip’] = newip[0] if ipv6_available and sites[site].get(‘ipv6’) and newipv6: sites[site][‘ipv6’] = ‘[‘ + newipv6[0] + ‘]’ if ipv6_available: result = _get_url(site, ip=sites[site].get(‘ip’), headers=True, follow_redirects=sites[site].get(‘follow_redirects’, True)) result_v6 = _get_url(site, ip=sites[site].get(‘ipv6’), headers=True, follow_redirects=sites[site].get(‘follow_redirects’, True)) else: result = _get_url(site, ip=sites[site].get(‘ip’) if by_ip else None, headers=True, follow_redirects=sites[site].get(‘follow_redirects’, True)) result_ok = (result[0] == sites[site][‘status’] and result[1].find(sites[site][‘lookfor’]) != -1) if ipv6_available and sites[site].get(‘ipv6’): result_v6_ok = (result_v6[0] == sites[site][‘status’] and result_v6[1].find(sites[site][‘lookfor’]) != -1) else: result_v6_ok = True #Not really if result_ok and result_v6_ok: print(«[✓] Сайт открывается») if sites[site].get(‘is_blacklisted’, True): successes_v4 += 1 successes_v6 += 1 elif ipv6_available and (result_ok or result_v6_ok): if not result_ok and result_v6_ok: print(«[!] Сайт открывается только по IPv6») successes_v6 += 1 else: print(«[!] Сайт открывается только по IPv4») successes_v4 += 1 if not (result_ok and result_v6_ok): if (result[0] == sites[site][‘status’] or (ipv6_available and result_v6[0] == sites[site][‘status’])): print(«[☠] Получен неожиданный ответ, скорее всего, » «страница-заглушка провайдера. Пробуем через прокси.») else: print(«[☠] Сайт не открывается, пробуем через прокси») result_proxy = _get_url(site, proxy) if result_proxy[0] == sites[site][‘status’] and result_proxy[1].find(sites[site][‘lookfor’]) != -1: print(«[✓] Сайт открывается через прокси») if sites[site].get(‘is_blacklisted’, True): successes_proxy += 1 else: if result_proxy[0] == sites[site][‘status’]: print(«[☠] Получен неожиданный ответ, скорее всего, » «страница-заглушка провайдера. Считаем заблокированным.») else: print(«[☠] Сайт не открывается через прокси») isup = check_isup(site) if isup is None: if sites[site].get(‘is_blacklisted’, True): blocks_ambiguous += 1 elif isup: if sites[site].get(‘subdomain’): blocks_subdomains += 1 if sites[site].get(‘is_blacklisted’, True): blocks += 1 else: if sites[site].get(‘is_blacklisted’, True): down += 1 all_sites = [http_list[i].get(‘is_blacklisted’, True) for i in http_list].count(True) #Result without isup.me if successes_v4 == all_sites: result_v4 = HTTP_ACCESS_NOBLOCKS elif successes_v4 > 0 and successes_v4 + successes_proxy == all_sites: result_v4 = HTTP_ACCESS_IPDPI elif successes_v4 > 0: result_v4 = HTTP_ACCESS_FULLDPI else: result_v4 = HTTP_ACCESS_IPBLOCK if ipv6_available: if successes_v6 == all_sites: result_v6 = HTTP_ACCESS_NOBLOCKS elif successes_v6 > 0 and successes_v6 + successes_proxy == all_sites: result_v6 = HTTP_ACCESS_IPDPI elif successes_v6 > 0: result_v6 = HTTP_ACCESS_FULLDPI else: result_v6 = HTTP_ACCESS_IPBLOCK #isup.me info if blocks_ambiguous > 0: isup = HTTP_ISUP_BROKEN elif down == all_sites: isup = HTTP_ISUP_ALLDOWN elif down > 0: isup = HTTP_ISUP_SOMEDOWN else: isup = HTTP_ISUP_ALLUP return result_v4, result_v6, isup, (blocks_subdomains > 0) def test_https_cert(): sites = https_list isup_problems = False print(«[O] Тестируем HTTPS») siteresults = [] for site in sorted(sites): print(«\tОткрываем «, site) domain = list(urllib.parse.urlsplit(site))[1] newip = _get_a_record_over_google_api(domain) if newip: newip = newip[0] result = _get_url(site, ip=newip, follow_redirects=False) else: print_debug(«Can’t resolve IP for», site) result = _get_url(site, follow_redirects=False) if result[0] == -1: print(«[☠] Сертификат подменяется») siteresults.append(False) elif result[0] == 0: print(«[☠] Сайт не открывается») if check_isup(site): siteresults.append(‘no’) else: isup_problems = True else: print(«[✓] Сайт открывается») siteresults.append(True) if ‘no’ in siteresults: # Blocked return 2 elif False in siteresults: # Wrong certificate return 1 elif not isup_problems and all(siteresults): # No blocks return 0 else: # Some sites are down or unknown result return 3 def test_dpi(): print(«[O] Тестируем обход DPI» + (‘ (только IPv4)’ if ipv6_available else »)) dpiresults = [] for dpisite in sorted(dpi_list): site = dpi_list[dpisite] # First try to resolve IP address using Google API. # Use a static one if this did not work. newip = _get_a_record_over_google_api(site[‘host’]) if newip: site[‘ip’] = newip[0] if ipv6_available: newip = _get_a_record_over_google_api(site[‘host’], ‘AAAA’) if newip: site[‘ipv6’] = newip[0] dpi_built_tests = _dpi_build_tests(site[‘host’], site[‘urn’], site[‘ip’], site[‘lookfor’]) for testname in sorted(dpi_built_tests): test = dpi_built_tests[testname] print(«\tПробуем способ «{}» на {}».format(testname, dpisite)) try: result = _dpi_send(test.get(‘ip’), 80, test.get(‘data’), test.get(‘fragment_size’), test.get(‘fragment_count’)) except (KeyboardInterrupt, SystemExit) as e: # re-raise exception to send it to caller function raise e except Exception as e: print(«[☠] Ошибка:», repr(e)) else: if result.split(«\n»)[0].find(‘200 ‘) != -1 and result.find(test[‘lookfor’]) != -1: print(«[✓] Сайт открывается») dpiresults.append(testname) elif result.split(«\n»)[0].find(‘200 ‘) == -1 and result.find(test[‘lookfor’]) != -1: print(«[!] Сайт не открывается, обнаружен пассивный DPI!») dpiresults.append(‘Passive DPI’) else: print(«[☠] Сайт не открывается») return list(set(dpiresults)) def check_ipv6_availability(): print(«Проверка работоспособности IPv6″, end=») v6addr = _get_a_record(«ipv6.icanhazip.com», «AAAA») if (v6addr): v6 = _get_url(«http://ipv6.icanhazip.com/», ip=v6addr[0]) if len(v6[1]): v6src = v6[1].strip() if force_ipv6 or (not ipaddress.IPv6Address(v6src).teredo and not ipaddress.IPv6Address(v6src).sixtofour): print(«: IPv6 доступен!») return v6src else: print («: обнаружен туннель Teredo или 6to4, игнорируем.») return False print(«: IPv6 недоступен.») return False def get_ispinfo(ipaddr): try: rdap_response = ipwhois.IPWhois(ipaddr) ispinfo = rdap_response.lookup_rdap(depth=1) return ispinfo[‘asn’] except (ipwhois.exceptions.ASNRegistryError, ipwhois.exceptions.ASNLookupError, ipwhois.exceptions.ASNParseError, ipwhois.exceptions.HTTPLookupError, ipwhois.exceptions.HTTPRateLimitError): return False def main(): ipv6_addr = None global ipv6_available print(«BlockCheck v{}».format(VERSION)) print(«Для получения корректных результатов используйте DNS-сервер», «провайдера и отключите средства обхода блокировок.») print() latest_version = _get_url(«https://raw.githubusercontent.com/ValdikSS/blockcheck/master/latest_version.txt») if latest_version[0] == 200 and latest_version[1].strip() != VERSION: print(«Доступная новая версия программы: {}. Обновитесь, пожалуйста.».format(latest_version[1].strip())) print() if not disable_ipv6: ipv6_available = check_ipv6_availability() if (ipv6_available): ipv6_addr = ipv6_available ip_isp = _get_ip_and_isp() if ip_isp: if ipv6_available: print(«IP: {}, IPv6: {}, провайдер: {}».format(_mask_ip(ip_isp[0]), _mask_ip(ipv6_addr), ip_isp[1])) if not force_ipv6: asn4 = get_ispinfo(ip_isp[0]) asn6 = get_ispinfo(ipv6_addr) if asn4 and asn6 and asn4 != asn6: ipv6_available = False print(«Вероятно, у вас IPv6-туннель. Проверка IPv6 отключена.») else: print(«IP: {}, провайдер: {}».format(_mask_ip(ip_isp[0]), ip_isp[1])) print() dnsv4 = test_dns(DNS_IPV4) dnsv6 = 0 if ipv6_available: print() dnsv6 = test_dns(DNS_IPV6) print() http_v4, http_v6, http_isup, subdomain_blocked = test_http_access((dnsv4 != 0) or (dnsv6 != 0)) print() https = test_https_cert() print() dpi = ‘-‘ if http_v4 > 0 or http_v6 > 0 or force_dpi_check: dpi = test_dpi() print() print(«[!] Результат:») if dnsv4 == 5: print(«[⚠] Не удалось определить способ блокировки IPv4 DNS.\n», «Верните настройки DNS провайдера, если вы используете сторонний DNS-сервер.», «Если вы используете DNS провайдера, возможно, ответы DNS модифицирует вышестоящий», «провайдер.\n», «Вам следует использовать шифрованный канал до DNS-серверов, например, через VPN, Tor, » + \ «HTTPS/Socks прокси или DNSCrypt.») elif dnsv4 == 4: print(«[⚠] Ваш провайдер блокирует сторонние IPv4 DNS-серверы.\n», «Вам следует использовать шифрованный канал до DNS-серверов, например, через VPN, Tor, » + \ «HTTPS/Socks прокси или DNSCrypt.») elif dnsv4 == 3: print(«[⚠] Ваш провайдер подменяет DNS-записи, но не перенаправляет сторонние IPv4 DNS-серверы на свой.\n», «Вам поможет смена DNS, например, на Яндекс.DNS 77.88.8.8 или Google DNS 8.8.8.8 и 8.8.4.4.») elif dnsv4 == 2: print(«[⚠] Ваш провайдер подменяет DNS-записи и перенаправляет сторонние IPv4 DNS-серверы на свой.\n», «Вам следует использовать шифрованный канал до DNS-серверов, например, через VPN, Tor, » + \ «HTTPS/Socks прокси или DNSCrypt.») elif dnsv4 == 1: print(«[⚠] Ваш провайдер перенаправляет сторонние IPv4 DNS-серверы на свой, но не подменяет DNS-записи.\n», «Это несколько странно и часто встречается в мобильных сетях.\n», «Если вы хотите использовать сторонний DNS, вам следует использовать шифрованный канал до » + \ «DNS-серверов, например, через VPN, Tor, HTTPS/Socks прокси или DNSCrypt, но обходу » + \ «блокировок это не поможет.») if ipv6_available: if dnsv6 == 5: print(«[⚠] Не удалось определить способ блокировки IPv6 DNS.\n», «Верните настройки DNS провайдера, если вы используете сторонний DNS-сервер.», «Если вы используете DNS провайдера, возможно, ответы DNS модифицирует вышестоящий», «провайдер.\n», «Вам следует использовать шифрованный канал до DNS-серверов, например, через VPN, Tor, » + \ «HTTPS/Socks прокси или DNSCrypt.») elif dnsv6 == 4: print(«[⚠] Ваш провайдер блокирует сторонние IPv6 DNS-серверы.\n», «Вам следует использовать шифрованный канал до DNS-серверов, например, через VPN, Tor, » + \ «HTTPS/Socks прокси или DNSCrypt.») elif dnsv6 == 3: print(«[⚠] Ваш провайдер подменяет DNS-записи, но не перенаправляет сторонние IPv6 DNS-серверы на свой.\n», «Вам поможет смена DNS, например, на Яндекс.DNS 2a02:6b8::feed:0ff или Google DNS 2001:4860:4860::8888.») elif dnsv6 == 2: print(«[⚠] Ваш провайдер подменяет DNS-записи и перенаправляет сторонние IPv6 DNS-серверы на свой.\n», «Вам следует использовать шифрованный канал до DNS-серверов, например, через VPN, Tor, » + \ «HTTPS/Socks прокси или DNSCrypt.») elif dnsv6 == 1: print(«[⚠] Ваш провайдер перенаправляет сторонние IPv6 DNS-серверы на свой, но не подменяет DNS-записи.\n», «Это несколько странно и часто встречается в мобильных сетях.\n», «Если вы хотите использовать сторонний DNS, вам следует использовать шифрованный канал до » + \ «DNS-серверов, например, через VPN, Tor, HTTPS/Socks прокси или DNSCrypt, но обходу » + \ «блокировок это не поможет.») if https == 1: print(«[⚠] Ваш провайдер подменяет HTTPS-сертификат на свой для сайтов из реестра.») elif https == 2: print(«[⚠] Ваш провайдер полностью блокирует доступ к HTTPS-сайтам из реестра.») elif https == 3: print(«[⚠] Доступ по HTTPS проверить не удалось, повторите тест позже.») if subdomain_blocked: print(«[⚠] Ваш провайдер блокирует поддомены у заблокированного домена.») if http_isup == HTTP_ISUP_BROKEN: print(«[⚠] {0} даёт неожиданные ответы или недоступен. Рекомендуем » \ «повторить тест, когда он начнёт работать. Возможно, эта » \ «версия программы устарела. Возможно (но маловероятно), » \ «что сам {0} уже занесён в чёрный список.».format(isup_server)) elif http_isup == HTTP_ISUP_ALLDOWN: print(«[⚠] Согласно {}, все проверяемые сайты сейчас не работают. » \ «Убедитесь, что вы используете последнюю версию программы, и » \ «повторите тест позже.».format(isup_server)) elif http_isup == HTTP_ISUP_SOMEDOWN: print(«[⚠] Согласно {}, часть проверяемых сайтов сейчас не работает. » \ «Убедитесь, что вы используете последнюю версию программы, и » \ «повторите тест позже.».format(isup_server)) elif http_isup != HTTP_ISUP_ALLUP: print(«[⚠] ВНУТРЕННЯЯ ОШИБКА ПРОГРАММЫ, http_isup = {}».format(http_isup)) def print_http_result(symbol, message): if http_isup == HTTP_ISUP_ALLUP: print(«{} {}».format(symbol, message)) else: #ACHTUNG: translating this program into other languages #might be tricky. Not into English, though. print(«{} Если проигнорировать {}, то {}» \ .format(symbol, isup_server, message[0].lower() + message[1:])) if http_v4 == HTTP_ACCESS_IPBLOCK: if (ipv6_available and http_v6 == HTTP_ACCESS_IPBLOCK) or not ipv6_available: print_http_result(«[⚠]», «Ваш провайдер блокирует по IP-адресу. » \ «Используйте любой способ обхода блокировок.») elif ipv6_available and http_v6 != HTTP_ACCESS_IPBLOCK: print_http_result(«[⚠]», «Ваш провайдер блокирует IPv4-сайты по IP-адресу. » \ «Используйте любой способ обхода блокировок.») elif http_v4 == HTTP_ACCESS_FULLDPI: if (ipv6_available and http_v6 == HTTP_ACCESS_FULLDPI) or not ipv6_available: print_http_result(«[⚠]», «У вашего провайдера \»полный\» DPI. Он » \ «отслеживает ссылки даже внутри прокси, » \ «поэтому вам следует использовать любое » \ «шифрованное соединение, например, » \ «VPN или Tor.») elif ipv6_available and http_v6 != HTTP_ACCESS_FULLDPI: print_http_result(«[⚠]», «У вашего провайдера \»полный\» DPI для IPv4. Он » \ «отслеживает ссылки даже внутри прокси, » \ «поэтому вам следует использовать любое » \ «шифрованное соединение, например, » \ «VPN или Tor.») elif http_v4 == HTTP_ACCESS_IPDPI: if (ipv6_available and http_v6 == HTTP_ACCESS_IPDPI) or not ipv6_available: print_http_result(«[⚠]», «У вашего провайдера \»обычный\» DPI. » \ «Вам поможет HTTPS/Socks прокси, VPN или Tor.») elif ipv6_available and http_v6 != HTTP_ACCESS_IPDPI: print_http_result(«[⚠]», «У вашего провайдера \»обычный\» DPI для IPv4. » \ «Вам поможет HTTPS/Socks прокси, VPN или Tor.») elif http_isup == HTTP_ISUP_ALLUP and http_v4 == HTTP_ACCESS_NOBLOCKS \ and https == 0: print_http_result(«[☺]», «Ваш провайдер не блокирует сайты.») if not disable_report: try: report_request = urllib.request.urlopen( ‘http://blockcheck.antizapret.prostovpn.org/postdata.php’, data=urllib.parse.urlencode({ «text»: printed_text, «text_debug»: printed_text_with_debug if really_bad_fuckup else », }).encode(‘utf-8’) ) if (report_request): report_request.close() except urllib.error.URLError as e: # keep it silent pass if ip_isp: need_help_isp_list = _get_url( «https://raw.githubusercontent.com/ValdikSS/blockcheck/master/we_need_your_help_isp_list.txt») if need_help_isp_list[0] == 200: need_help_isp_list = need_help_isp_list[1] for need_help_isp in need_help_isp_list.split(«\n»): need_help_isp = need_help_isp.strip().lower() if need_help_isp and need_help_isp in ip_isp[1].lower(): print() print(«[⚠] Нам нужна ваша помощь!\n», «Пожалуйста, помогите собрать расширенные данные о вашем провайдере:\n», «https://github.com/ValdikSS/blockcheck/wiki/Нужна-ваша-помощь» ) if __name__ == «__main__»: if getattr(sys, ‘frozen’, False): os.environ[‘SSL_CERT_FILE’] = os.path.join(sys._MEIPASS, ‘lib’, ‘ca-certificates.crt’) parser = argparse.ArgumentParser(description=’Определитель типа блокировки сайтов у провайдера.’) parser.add_argument(‘—console’, action=’store_true’, help=’Консольный режим. Отключает Tkinter GUI.’) parser.add_argument(‘—no-report’, action=’store_true’, help=’Не отправлять результат на сервер (отправляется только выводимый текст).’) parser.add_argument(‘—no-isup’, action=’store_true’, help=’Не проверять доступность сайтов через {}.’ \ .format(isup_server)) parser.add_argument(‘—force-dpi-check’, action=’store_true’, help=’Выполнить проверку DPI, даже если провайдер не блокирует сайты.’) parser.add_argument(‘—disable-ipv6′, action=’store_true’, help=’Отключить поддержку IPv6.’) parser.add_argument(‘—force-ipv6′, action=’store_true’, help=’Игнорировать обнаружение туннелей.’) parser.add_argument(‘—debug’, action=’store_true’, help=’Включить режим отладки (и —no-report).’) args = parser.parse_args() if args.console: tkusable = False if args.no_isup: disable_isup = True if args.no_report: disable_report = True if args.force_dpi_check: force_dpi_check = True if args.disable_ipv6: disable_ipv6 = True if args.force_ipv6: force_ipv6 = True if args.debug: debug = True disable_report = True if tkusable: root = tk.Tk() root.title(«BlockCheck») root.protocol(«WM_DELETE_WINDOW», tk_terminate) text = ThreadSafeConsole(root, wrap=tk.WORD) text.pack(expand=1, fill=’both’) threading.Thread(target=main).start() try: root.mainloop() except (KeyboardInterrupt, SystemExit): os._exit(0) else: try: main() except (KeyboardInterrupt, SystemExit): sys.exit(1)
комиксы, гиф анимация, видео, лучший интеллектуальный юмор.
Долгое время я не чувствовал необходимости обходить великий и ужасный реестр заблокированных сайтов, но вот и до меня дошла беда — мой любимый провайдер выпилил нахрен лостфильм. Вкупе с секретными разделами это стало последней каплей, так что сегодня я расскажу как настроить тор в качестве прокси и использовать его в связке с хромом (выбор браузера не принципиален). Возможно, конкретно тебе, уважаемый реакторчанин, эта информация покажется банальной (во многом из-за того, что это действительно просто), но я искренне надеюсь, что кому-то она окажется полезной.
Я бы хотел рассмотреть два случая и начать с более простого и обыденного, при котором все разворачивается на локальном компе. Ну а если вам понравится, то дополню и более устрашающим — с разворачиванием конструкции на отдельном сервере для комфортной работы из домашней локалки.
Итак, погнали.
Установка TOR без лишнего мусора
Если у нас есть просто комп с виндой, то первым делом идем сюда: https://www.torproject.org/download/download.html.en, разворачиваем раздел Microsoft Windows и качаем Vidalia Relay Bundle. После установки и запуска появится следующее окно:
Снимаем галку Show this window on startup, затем тыкаем кнопку Settings и переходим во вкладку Sharing:
Выбираем опцию Run as client only, если не хотим пропускать через себя чужой трафик для повышения общей скорости tor-сети. Давим OK
В главном окне нажимаем Hide, чтобы свернуть программу в трей. При перезапуске винды тор стартует автоматически. Переходим к настройке браузера.
Настройка браузера на примере Google Chrome
Для работы с прокси в Хроме я использую расширение FoxyProxy Standard, существующее для Хрома, Файрфокса и ИЕ.
Заходим в настройки:
Здесь нужно выбрать в верхнем меню Use proxies based on their pre-defined patterns and priorities — эта опция позволит не работать через прокси все время, а автоматически включать ее на определенных сайтах. Тут же нажимаем Add New Proxy.
На первой вкладке вводим имя прокси, например Local Tor:
На второй вкладке вводим:
Host IP Address: 127.0.0.1
Port: 9050
SOCKS Proxy: ставим галку
SOCKS v4/v4a: выбираем
Переходим на третью вкладку, тут будем добавлять сайты, на которые нужно ходить через прокси.
Нажимаем Add new pattern. Добавим лостфильм.
Pattern name: LostLilm
URL pattern: *lostfilm.tv*
(Для паттернов используются обыкновенные маски, таким образом запись *lostfilm.tv* означает все ссылки, в которых встречается адрес сайта.)
Нажимаем Save в окне редактирования паттерна, потом еще раз — в окне Proxy Settings. Теперь кроме Default Proxy у нас появилась наша — Local Tor.
Теперь при попытке зайти на лостфильм фоксипрокси автоматически заставит браузер использовать наш тор и никакой реестр нам больше не страшен.
Для того чтобы добавить другие сайты ;), нужно отредактировать созданную прокси — Local Tor, перейдя в третью вкладку и добавив новый паттерн.
Спасибо, надеюсь данный мануал стоил для вас потраченного времени =)
Разблокировать Гелбору — 6 способов обойти запрещенный контент
Не удается открыть gelbooru.com из-за интернет-цензуры в вашей стране или других политик интернет-фильтрации? В этой статье вы найдете способы обойти любые блоки сайтов и контента из любой точки мира. К тому времени, когда вы дочитаете эту статью, вы уже будете знать, какое решение для вас является лучшим для доступа к Gelbooru и другим сервисам со всего мира.
Метод 1: виртуальная частная сеть
СлужбаVPN отправляет ваш трафик через удаленный сервер, одновременно шифруя его и делая вашу работу в Интернете анонимной и недоступной для вашего интернет-провайдера и правительства.Таким образом, ваш администратор локальной сети, интернет-провайдер или правительство не могут заблокировать ваш доступ к gelbooru.com.
Кроме того, он превосходит подключение к локальной сети и направляет весь ваш трафик между вашим компьютером и удаленным сервером. Преимущество программного обеспечения VPN заключается в том, что оно гарантирует, что каждое используемое вами приложение, которому требуется Интернет, отправляет свои данные через зашифрованный туннель. Однако недостатком является то, что хорошее обслуживание стоит денег. Если вы можете себе это позволить, взгляните на наш список лучших VPN для Gelbooru на сегодняшний день:
1
3 месяца дополнительно! 30-дневная гарантия возврата денег , приложения для Windows, Mac, Linux,
Android и iPhone, SSL secure
Сэкономьте 49% сегодня!
приложений для Android и iPhone Простое в использовании программное обеспечение 30-дневный возврат денег
3
СКИДКА 83% сегодня, функция раздельного туннелирования, аварийный выключатель, безопасный DNS
приложений для iPhone и Android Раздельное туннелирование Kill Switch
Метод 2: Сеть Tor
Еще одна технология, которая позволяет добиться нужных результатов и разблокировать Гелбору из любой точки мира .
Tor — это анонимная сеть, управляемая добровольцами. Вы можете использовать его для обхода интернет-фильтров и блокировки контента. Чтобы узнать, посетите веб-сайт проекта Tor.
Метод 3: разблокировка прокси-сервера
Один из самых простых вариантов — воспользоваться бесплатным сервисом разблокировки веб-прокси. Лучшая часть этого метода заключается в том, что вам не нужно загружать какое-либо программное обеспечение на свое устройство, вы можете найти подходящий прокси-сервер, ввести сайт, который хотите посетить, и он приведет вас прямо на сайт, который вы хотите разблокировать. доступ.
Более того, вы можете использовать эту услугу, даже если вы не являетесь администратором или владельцем используемого устройства.
Помните, что в отличие от №1 и №2, этот метод не обеспечивает никакой безопасности и анонимности в Интернете. Также прокси может быть легко заблокирован администратором сайта.
Метод 4: Google Переводчик
Возможно, вы не слышали об этом, но Google Translate на самом деле работает как прокси. Просто посетите translate.google.com, выберите любой язык для перевода и английский в качестве окончательного языка.Введите http://gelbooru.com и нажмите Enter, чтобы преобразовать.
Преимущество этого метода в том, что Google Translate обычно не блокируется, поскольку большинство цензоров не понимают, что он может использоваться в качестве прокси-сервиса. Однако этот метод, как и метод №3, часто нарушает работу веб-сайта, который вы пытаетесь открыть.
Метод 5: Google Cache
Этот метод работает аналогично Google Translate; он позволяет пользователям получать доступ к URL-адресу веб-сайта, сохраняя его как доменное имя googleusercontent.com. Таким образом, пользователи могут охладить программное обеспечение межсетевого экрана, фильтрацию и родительский контроль.
Еще один отличный способ просмотра и просмотра gelbooru.com — это использование кешированных результатов из поисковой системы Google.
Метод 6: общедоступные DNS-серверы
Каждому веб-сайту, к которому вы обращаетесь, был назначен уникальный IP-адрес, чтобы ваш браузер мог переводить введенный вами URL, например gelbooru.com на этот IP-адрес, он должен найти его в каталоге адресов, он хранится на сервере доменных имен или DNS. По умолчанию вы будете использовать DNS, предоставленный вашим интернет-провайдером, и на него будут распространяться все установленные им ограничения.Если вы подключены к маршрутизатору Wi-Fi, вы будете использовать DNS-сервер, установленный владельцем маршрутизатора, это может быть не только небезопасно, но и контент, к которому вы пытаетесь получить доступ, также может быть ограничен или отфильтрован. Доступны общедоступные DNS-серверы, и вы можете изменить настройки Интернета, чтобы всегда использовать один из этих серверов, что позволяет обойти любые ограничения или фильтры содержимого веб-сайтов. Один из таких общедоступных DNS предоставляется Google.
Заключение
Существует как минимум шесть способов обойти ограничения в Интернете и разблокировать сайты в любой точке мира.Однако не все они одинаково безопасны и надежны. Поэтому мы советуем вам выбрать одну из VPN, которые мы рекомендовали в методе № 1, чтобы оставаться анонимным при доступе к заблокированным сайтам, таким как Gelbooru.
Связанные
Разблокировать filmcat3.com Разблокировать gepime.comРазблокировать gelbooru.com
Скорее всего, ваш DSL-провайдер блокирует доступ к gelbooru.com. Или gelbooru.com заблокирован правителями.
Также потенциально возможно, что gelbooru.com сам блокирует вам доступ к нему. — скорее всего, потому, что они не купили права на показ своего контента в вашем регионе. Неважно, что мешает вам просматривать gelbooru.com — давайте сосредоточимся на способах обойти это:
Если доступ к gelbooru.com ограничен вашим интернет-провайдером через систему доменных имен, его легко разблокировать. Вам нужно только изменить свой DNS-сервер и все. Просто используйте DNS-сервер Google или один сервер доменных имен с www.bestdns.org. Дополнительную информацию о том, что такое DNS и как он работает, также можно найти на этом сайте. Если замена DNS не сработала — альтернатив гораздо больше. Чтобы пользоваться gelbooru.com, вы также можете использовать прокси-сайт, который позволяет не подвергать цензуре URL-адреса с помощью простого текста и небольших фотографий.
Прокси-сайт перезаписывает ваш исходный IP-адрес, и пока доступ к прокси-сайту не заблокирован, Прокси-сервер загружает для вас заблокированный сайт gelbooru.com и показывает заблокированный gelbooru.com на свой компьютер на его веб-сервере. Таким образом можно получить доступ к графике и тексту gelbooru.com.
бесплатных публичных веб-прокси для вашего устройства.
Провайдер
Страны
каналов
Цена
Сайт
Страны: 3
Каналы: не выбираются
Цена: бесплатно
Страны: почти все страны
Каналы: десять тысяч
Цена: бесплатно
Страны: 190
Каналы: не выбираются
Цена: бесплатный прокси
Кроме того, большинство людей не знают, что вы можете использовать Google Translate в качестве веб-прокси для разблокировки сайтов.
А как насчет движущихся картинок?
Но если вы хотите просматривать фильмы с gelbooru.com, вам нужна более быстрая альтернатива без ограничения трафика или перегруженных серверов. Отличный вариант избавиться от этой проблемы: VPN (виртуальные частные сети). Вы подписываетесь на услугу, устанавливаете их приложение VPN, и таким образом можно виртуально переехать практически в любую страну мира. С невероятной скоростью сети — идеально подходит для потокового видео.Провайдер VPN тоже может быть очень дешевым — у многих провайдеров есть бесплатные пробные версии.
Крупнейшие услуги виртуальной частной сети на рынке для просмотра gelbooru.com:
Провайдер
Цена
IP-адресов
Страны
Сайт
Стоимость от 3,30 $
5000+ IP-адресов
61+ Страны
Цена от 6 $.67
15000+ IP-адресов
94 страны
Стоимость от 3,29 $
80 000 IP-адресов
141 страна
В качестве дополнения весь ваш трафик шифруется с помощью VPN, поэтому никто во всем мире не может читать или регистрировать то, что вам нужно сделать, во всемирной паутине. VPN отлично подходит для разблокировки gelbooru.com! Кроме того, вам нужно выбрать VPN-сервис, который не ведет журналы о вашей активности, на IP-адресе, который вы использовали в WWW, а также времени, когда вы подключались к VPN-серверу.Кроме того, проект Tor может позволить вам бесплатно отменить цензуру на сайте gelbooru.com. Это менее быстро, чем коммерческий VPN, но он дает вам мгновенный доступ к незаблокированной всемирной паутине. Взгляните на сравнения наших поставщиков, чтобы получить самое лучшее и недорогое решение для снятия блокировки gelbooru.com
Если у вас есть вопросы по загрузке gelbooru.com — задайте их под этой статьей.
Вам также может быть интересно..Разблокировать Gelbooru.com (Практическое руководство) | Разблокировать хост
Руководство по разблокировать Gelbooru , разблокировать Gelbooru.com и обойти фильтры Gelbooru с бесплатным практическим руководством, получить доступ к Gelbooru.com на вашем компьютере или ipad из любой точки мира. Доступ к Gelbooru.com можно получить через веб-прокси-сайты бесплатно или через программное обеспечение VPN за небольшую ежемесячную абонентскую плату (вы также можете просматривать любой другой веб-сайт через VPN анонимно).Вот список бесплатных услуг веб-прокси для разблокировки сайта Gelbooru.com :
Прокси 1 — Прокси 2 — Прокси 3 — Прокси 4 — Прокси 5
Метод 2. Перезагрузите модем / маршрутизатор
Некоторые пользователи сообщили нам, что простой перезапуск модема / маршрутизатора устранил проблему с подключением « Firefox не может найти сервер по адресу www.gelbooru.com «, это может сработать в некоторых случаях, но не всегда, однако стоит попробовать, это бесплатно. Еще один быстрый тест, который нужно сделать, — это перезагрузить компьютер после перезапуска модема / маршрутизатора и при загрузке ПК. , попробуйте снова зайти на сайт Gelbooru.com, если он работает, значит проблема в модеме.
Рекомендуется: Скрыть свой IP-адрес в Интернете →
Метод 3. Измените исходные DNS-серверы
Другие пользователи сообщили нам, что, изменив DNS-серверы , первоначально назначенные ISP (Internet Service Provider), на серверы Google Public DNS , проблема была решена, и теперь был создан Gelbooru.com снова доступен. Другие бесплатные DNS-серверы, которые можно использовать, — это Comodo Secure DNS и Norton ConnectSafe (от Symantec), кроме того, эти последние два DNS-сервера также могут автоматически блокировать вредоносные и фишинговые веб-сайты.
Метод 4. Получите лучшее программное обеспечение VPN
Лучший способ (но не бесплатный) разблокировать Gelbooru.com — это купить программное обеспечение VPN , которое отлично работает для доступа к Gelbooru.com из любого места. Многие пользователи сообщили нам, что HMA VPN Pro великолепен и также может разблокировать любой другой веб-сайт, включая веб-сайты, похожие на сайт Gelbooru.com. Имейте в виду, что VPN может гарантировать вам 100% анонимность в сети , а веб-прокси — нет (из-за ограничений при синтаксическом анализе кода JS).
ТарифыVPN-сервис →
Пользовательские скрипты для sankakucomplex.com
☰
Показаны только результаты на английском языке.Показать результаты для всех языков.
Image Board Enhancer (Rule34, Gelbooru, e621 и другие) JS — Автоматическое изменение размера изображений и видео на нескольких досках изображений, увеличение эскизов при наведении курсора мыши и добавление к ним значков типов контента.
- Автор
- DanDanDan
- Установок за день
- 6
- Всего установок
- 3,459
- Рейтинги
- 21 1 0
- Создано
- 2019-07-09
- Обновлено
- 2021-05-19
- Автор
- Диван
- Установок за день
- 6
- Всего установок
- 5,689
- Рейтинги
- 11 0 2
- Создано
- 2020-10-12
- Обновлено
- 2020-10-18
Обжора Эзы JS — Перенаправляет на изображения в высоком разрешении на сайтах галерей, пропуская описания и комментарии.
- Автор
- Ezalias
- Установок за день
- 5
- Всего установок
- 7,422
- Рейтинги
- 67 1 0
- Создано
- 31.08.2014
- Обновлено
- 2021-07-18
Загрузчик Booru + просмотрщик JS — Оригинальный загрузчик полноразмерных изображений и программа просмотра более 20 досок изображений booru.
- Автор
- Se7en
- Установок за день
- 5
- Всего установок
- 6 831
- Рейтинги
- 40 3 3
- Создано
- 2017-10-15
- Обновлено
- 09.04.2018
Удобное изображение JS — Показывает только полноразмерное изображение с горячими клавишами и без всплывающих окон на многих сайтах хостинга изображений
- Автор
- Оуин
- Установок за день
- 3
- Всего установок
- 21,328
- Рейтинги
- 304 5 6
- Создано
- 04.03.2014
- Обновлено
- 2021-07-28
- Автор
- Диван
- Установок за день
- 3
- Всего установок
- 1883
- Рейтинги
- 10 0 0
- Создано
- 2016-06-30
- Обновлено
- 2020-07-26
- Автор
- Джунио Гуима
- Установок за день
- 2
- Всего установок
- 319
- Рейтинги
- 2 0 0
- Создано
- 2020-05-09
- Обновлено
- 2020-05-09
Заменитель старых ссылок Sankakucomplex JS — Заменяет старые ссылки sankakustatic (изображения) на текущие адреса sankakucomplex
- Автор
- УОРаспутин
- Установок за день
- 1
- Всего установок
- 107
- Рейтинги
- 1 0 0
- Создано
- 29.12.2014
- Обновлено
- 29.12.2014
Средство просмотра изображений Gelbooru JS — Добавляет полноэкранный режим просмотра изображений при нажатии на изображения и различные другие полезные функции.
- Автор
- Джеймс Пачеко
- Установок за день
- 1
- Всего установок
- 531
- Рейтинги
- 0 0 0
- Создано
- 2019-04-17
- Обновлено
- 2019-04-17
Санкаку Аддон JS — Добавляет несколько улучшений качества жизни на канал Sankaku: автоматическое масштабирование изображения, прокрутка к изображению, значки миниатюр для громких / анимированных сообщений, отключение / приостановка видео, кнопки поиска + — тегов, меню тегов, которое позволяет добавлять теги, щелкнув, ‘Выбрать / Установить родительские режимы, проще дублировать теги / пометки.Полностью настраивается через конфигурацию аддона.
- Автор
- санчан
- Установок за день
- 1
- Всего установок
- 2 605
- Рейтинги
- 12 0 0
- Создано
- 29.09.2016
- Обновлено
- 2021-04-27
- Автор
- sanitysama
- Установок за день
- 1
- Всего установок
- 33
- Рейтинги
- 0 0 0
- Создано
- 2021-06-18
- Обновлено
- 2021-06-18
Sankaku Beta без исправления изображения JS — Устранена проблема, из-за которой изображения не отображались при открытии сообщений на другой вкладке.
- Автор
- Вальпак
- Установок за день
- 0
- Всего установок
- 422
- Рейтинги
- 5 0 0
- Создано
- 2020-12-01
- Обновлено
- 2020-12-01
Комплексный усилитель Санкаку JS — Добавляет дополнительные функции в SankakuComplex.Включает бесконечную прокрутку на странице результатов, возможность отфильтровывать результаты с помощью определенных тегов, автоматическую сортировку результатов по качеству (или другому «порядку: *»), добавляет кнопки рядом с тегами на страницу результатов, чтобы добавить их в текущий запрос,
- Автор
- квертанон
- Установок за день
- 0
- Всего установок
- 964
- Рейтинги
- 5 0 0
- Создано
- 07.07.2017
- Обновлено
- 07.07.2017
- Автор
- ледяной человек94
- Установок за день
- 0
- Всего установок
- 324
- Рейтинги
- 3 0 0
- Создано
- 11.08.2017
- Обновлено
- 11.08.2017
Заменитель сообщений Sankaku Paginator JS — Удаляет старые сообщения, когда новые сообщения добавляются пагинатором, поэтому ваша страница остается короткой
- Автор
- Робин Чакраварти
- Установок за день
- 0
- Всего установок
- 52
- Рейтинги
- 0 0 0
- Создано
- 2020-11-13
- Обновлено
- 2020-11-13
- Автор
- антфу
- Установок за день
- 0
- Всего установок
- 138
- Рейтинги
- 4 1 0
- Создано
- 2020-03-09
- Обновлено
- 2020-05-09
sankaku_image_link JS — Добавьте оригинальную ссылку под изображением.
- Автор
- Кошачья битва
- Установок за день
- 0
- Всего установок
- 446
- Рейтинги
- 1 0 0
- Создано
- 29.05.2017
- Обновлено
- 29.05.2017
- Автор
- Нигредо
- Установок за день
- 0
- Всего установок
- 73
- Рейтинги
- 1 0 0
- Создано
- 16.04.2017
- Обновлено
- 17.04.2017
Темный комплекс Санкаку JS — Затемнит места идолов и чан галл комплекса Санкаку.
- Автор
- таинственная рысь
- Установок за день
- 0
- Всего установок
- 569
- Рейтинги
- 3 0 0
- Создано
- 16.03.2017
- Обновлено
- 17.03.2017
- Автор
- ступенька
- Установок за день
- 0
- Всего установок
- 459
- Рейтинги
- 2 0 0
- Создано
- 29.07.2018
- Обновлено
- 13.08.2018
Санкаку Комплекс | Нет размытых изображений JS — Просто удалит размытые изображения, вызванные тем, что изображение имеет теги в черном списке на галлярных сайтах Sankaku Complex.
- Автор
- таинственная рысь
- Установок за день
- 0
- Всего установок
- 905
- Рейтинги
- 2 0 0
- Создано
- 16.03.2017
- Обновлено
- 17.03.2017
СанкакуВолосатыеЯйцы JS — Убирает цензуру с шаров фигм Гандам.
- Автор
- сбой
- Установок за день
- 0
- Всего установок
- 43
- Рейтинги
- 0 0 0
- Создано
- 2019-09-01
- Обновлено
- 2019-09-28
noAdblock JS — убрать всплеск антиблока с санкаку
- Автор
- ада
- Установок за день
- 0
- Всего установок
- 894
- Рейтинги
- 2 0 0
- Создано
- 12.03.2018
- Обновлено
- 2019-06-25
Чан и идол Санкаку видео помощник JS — Измените ширину HTML5 Player, отключите автовоспроизведение, покажите панель управления, установите громкость в 1%.
- Автор
- Мистер Модест
- Установок за день
- 0
- Всего установок
- 767
- Рейтинги
- 8 0 0
- Создано
- 16.02.2017
- Обновлено
- 27.10.2018
- Автор
- ЭЧибики
- Установок за день
- 0
- Всего установок
- 1,072
- Рейтинги
- 6 0 0
- Создано
- 26.09.2017
- Обновлено
- 18.03.2018
- Автор
- ледяной человек94
- Установок за день
- 0
- Всего установок
- 250
- Рейтинги
- 2 0 0
- Создано
- 11.08.2017
- Обновлено
- 11.08.2017
Средство просмотра изображений Gelbooru JS — Добавляет полноэкранный режим просмотра изображений при нажатии на изображения и различные другие полезные функции.
- Автор
- csubakka
- Установок за день
- 0
- Всего установок
- 1,164
- Рейтинги
- 4 0 0
- Создано
- 18.11.2016
- Обновлено
- 08.07.2017
- Автор
- Драмориан
- Установок за день
- 0
- Всего установок
- 70
- Рейтинги
- 0 0 0
- Создано
- 2021-03-04
- Обновлено
- 2021-03-09
ZD AutoImage Boorus JS — Добавить функцию OneClick-To-Downnload Images из Danbooru, Gelbooru, Safebooru, Sankakucomplex, Yande.re, Rule34, Furry.booru
- Автор
- ЗероДрако
- Установок за день
- 0
- Всего установок
- 1,074
- Рейтинги
- 9 0 1
- Создано
- 13.05.2016
- Обновлено
- 2016-08-03
- Автор
- Галиноа
- Установок за день
- 0
- Всего установок
- 192
- Рейтинги
- 1 0 0
- Создано
- 22.10.2015
- Обновлено
- 30.10.2015
Опубликуйте написанный вами сценарий (или научитесь его писать)
Прокси-сайт— бесплатный веб-прокси-сайт для разблокировки заблокированных сайтов
Прокси-сайт Разблокировать сайты
Прокси-сайт — это веб-прокси-сайт в США, размещенный в облаке, который позволяет разблокировать сайты и обходить фильтры.У нас есть выделенная сеть прокси-сайтов, каждый из которых может использоваться для разблокировки запрещенных веб-сайтов по всему миру. Proxysite.cloud может помочь вам пройти мимо раздражающих блоков провайдеров или блоков, связанных с местоположением, и предоставить вам безопасный, надежный и полностью анонимный сервис. Все наши прокси-сайты работают на выделенных каналах США объемом 1 ГБ, чтобы обеспечить высокую скорость доступа к вашим любимым сайтам. Наша цель — предоставить безопасный и надежный сервис, чтобы предоставить нашим пользователям свободный и неограниченный доступ в Интернет.Если вы найдете наш сайт полезным, не забудьте рассказать о нас, найдите нас на facebook. Proxysite.cloud — это молниеносный анонимный веб-прокси-сервер, который позволяет пользователям Интернета по всему миру обходить интернет-фильтры и получать неограниченный доступ к просмотру. В отличие от других веб-прокси-сайтов, мы поддерживаем все основные потоковые веб-порталы, такие как Youtube и другие видеопорталы. Получите доступ к своим любимым веб-сайтам социальных сетей, таким как Facebook, Twitter, linkedin и т. Д., Используя нашу систему обхода прокси-сервера с веб-фильтрацией.
Разблокировать сайты
Прокси-сайт Cloud защищает вашу личность, действуя как щит между вами и веб-сайтом, который вы посещаете, маскируя ваш IP-адрес. Это означает, что для любых веб-сайтов, которые регистрируют данные о посетителях, будет указан только наш IP-адрес прокси, а не ваш. Это позволяет вам получить доступ к любому сайту независимо от того, заблокирован ли он у вашего провайдера или где бы вы ни находились, при этом защищая свою конфиденциальность, поэтому вы можете свободно просматривать веб-страницы, как хотите. ? Наш разблокировщик сайтов позволяет легко обходить ограничения и разблокировать ваши любимые веб-сайты.Proxysite.cloud имеет более аккуратный и понятный пользовательский интерфейс с быстрой службой проксирования на основе PHP / cURL. Ваша конфиденциальность хорошо скрывается, поскольку вы получаете доступ к нашему веб-сайту только в то время, когда мы выполняем фактическое получение данных за вас. Мы никогда не раскрываем какую-либо отслеживаемую информацию о конечных пользователях посещенным сайтам. Кроме того, вы можете даже полностью отключить javascript и флэш-контент с помощью расширенных параметров. Используйте эту бесплатную услугу для доступа практически к любому веб-сайту в Интернете, поскольку мы не ограничены разблокировкой Facebook, Twitter, YouTube и других подобных веб-сайтов социальных сетей.
Разблокировать Youtube
Сколько раз вы пытались посмотреть видео на YouTube и обнаружили, что доступ ограничен? Что ж, Proxysite.cloud может помочь. Блокировка по географическому местоположению и интернет-провайдеру больше не проблема, если вы заходите через Proxysite.cloud. Если вы находитесь дома, на работе, в колледже или в любимой кофейне, этот прокси-сервер позволит вам иметь мгновенный доступ к вашим любимым веб-сайтам потокового вещания. Просто введите веб-сайт в поле выше или нажмите кнопку полезной ссылки на YouTube и будьте осторожны, зная, что ваш просмотр является полностью безопасным и конфиденциальным.Proxysite.cloud — это наш самый быстрый специализированный веб-прокси-сайт, который мы создали на сегодняшний день, и мы по-прежнему расширяем его, когда это возможно, чтобы наши пользователи имели наилучшие возможности просмотра. Мы регулярно тестируем наши плагины для разблокировки сайтов, таких как YouTube, Google и Facebook, на самых разных устройствах. Мы делаем все возможное, потому что хотим быть одним из крупнейших прокси-сайтов в Интернете, чтобы мы могли стать сообществом с нашими пользователями. Мы хотим, чтобы пользователи могли смотреть видео YouTube без рекламы, на любом компьютере или мобильном устройстве, чтобы пользователи могли смотреть любое видео, которое они хотят, без ограничений по стране.Большое количество веб-прокси-сайтов устарело, но мы хотим отличаться, поэтому присоединяйтесь к прокси-сайту и обходите географические ограничения, обходите веб-фильтры и ограничения брандмауэра, разблокируйте сайты, которые вам нравятся, такие как YouTube и Facebook, с легкостью и безопасностью. Разблокируйте эти сайты сегодня одним щелчком мыши благодаря нашим ярлыкам, расположенным под строкой URL.
Разблокировать прокси Разблокировать видео
Мы обеспечиваем спокойствие для наших пользователей, защищая всю нашу прокси-сеть с помощью шифрования SSL 256.Используемое нами шифрование настолько надежно, что на взлом самого быстрого суперкомпьютера в мире потребуется целая жизнь. В то время как наш прокси-сервер использует лучшие методы шифрования, вы можете расслабиться, наслаждаясь любимыми сайтами потокового видео, не беспокоясь о том, что вас отслеживают. Наша цель в качестве прокси-сервера — предоставить нашим пользователям безопасный и надежный сервис, позволяющий им пользоваться свободой просмотра в Интернете без ограничений. Этот бесплатный прокси-сервер предлагает вам возможность защитить вашу конфиденциальность в Интернете, имея при этом неограниченный доступ в Интернет.Вы остаетесь полностью анонимным с нашим простым, но с поддержкой SSL, разблокировщиком ниндзя. Мы не только защищаем истинный IP-адрес, но и скрываем почти все отслеживаемые элементы данных, такие как пользовательский агент браузера, реферер и информация о вашем интернет-провайдере. Когда вы вводите URL-адрес в нашу адресную строку и нажимаете «Go», наш захват контента на основе cURL приступает к действию, извлекая запрошенный веб-сайт. При этом он надежно инкапсулирует вашу личную информацию. Только та информация, которую он раскрывает, доступна посещенному веб-сайту. В результате они не смогут узнать, что вы когда-либо посещали их.Мы используем 256-битный зашифрованный туннель SSL для предотвращения злонамеренного прослушивания и манипуляций. Помимо защиты конфиденциальности в Интернете, этот тип сборщиков контента полезен там, где действует фильтрация межсетевого экрана. Школы и рабочие места, которые блокируют такие сайты, как Facebook, являются яркими примерами этого. Пользователи могут безопасно разблокировать заблокированный контент, оставаясь при этом полностью анонимным. Веб-прокси — это веб-прокси, который работает в вашем веб-браузере и не требует установки внешнего программного обеспечения на ваш компьютер.Одним из преимуществ использования веб-прокси является переносимость, поскольку к нему можно получить доступ из любой точки мира без каких-либо изменений в настройках вашего компьютера. Веб-прокси работает, принимая URL-адрес от клиента, а затем извлекая его содержимое и отправляя его обратно клиенту, обычно после внесения некоторых изменений, таких как преобразование всех гиперссылок в «прокси-ссылки», чтобы обеспечить правильную навигацию и анонимность при просмотре.
Как решить контент, недоступный в вашей стране
Интернет — это ворота к новым возможностям, знаниям, развлечениям и многому другому.Однако и здесь есть свои проблемы. Например, бывают случаи, когда вы хотите посмотреть определенное видео на YouTube, но когда вы открываете ссылку, вас приветствует сообщение « Это видео недоступно в вашей стране », что может сильно расстраивать.
YouTube — не единственная платформа, которая делает что-то подобное. Вы также могли столкнуться с сообщением «Контент BBC недоступен в вашем регионе», что также является болезненным. Однако в данном случае это связано с тем, что BBC финансируется в Великобритании за счет лицензионных сборов, и поэтому им разрешено публиковать контент только в Великобритании.
Есть множество других веб-сайтов, которые могут быть заблокированы в вашей стране, и если вы действительно хотите получить к ним доступ, вы действительно можете это сделать.
Ниже приведены некоторые из лучших способов решить проблему «контент, недоступный в вашей стране»:
- Виртуальная частная сеть (VPN)
Поскольку большинство заблокированных веб-сайтов и видеоконтента накладывают запрет на основании вашего местоположения, которое определяется вашим IP-адресом, VPN, например — BestValueVPN.com может легко решить эту проблему.
VPN — это частная Интернет-сеть, к которой вы можете получить удаленный доступ. Например, если вы находитесь в США и хотите получить доступ к контенту BBC, вы можете использовать службу VPN, базирующуюся в Великобритании. В этом случае поставщик услуг VPN позволит вам открыть веб-сайт на сервере, расположенном в Великобритании, и, поскольку контент доступен в этой стране, вы не столкнетесь с ограничением.
Вы можете использовать множество VPN-сервисов, некоторые из которых являются бесплатными, а некоторые платными.Примеры включают PrivateVPN, Hotspot Shield и т. Д.
Помимо просмотра видео с ограниченным доступом, есть много веских причин использовать торренты с VPN или при использовании общедоступного Wi-Fi. Это связано с тем, что VPN скрывает вашу личность в Интернете и шифрует ваши данные.
- Прокси-сайты
Это быстрое решение для типа ограничений «контент недоступен». Тем не менее, это может не всегда работать. Это связано с тем, что прокси-сайт маскирует ваш IP-адрес, поэтому, когда вы получаете доступ к заблокированному веб-сайту через него, вы можете получить доступ к нему.Однако, если сам прокси-сайт заблокирован вашим интернет-провайдером (ISP), то нет никакого способа заставить его работать. Тем не менее, даже если он работает, его не рекомендуется использовать в качестве долгосрочного решения по следующим причинам:
- Прокси-сайт ненадежен. Это потому, что он не шифрует ваши данные и не использует какой-либо другой механизм безопасности
- Он также обычно изобилует всевозможными рекламными объявлениями, которые могут отпугнуть вас, когда вы смотрите свои любимые видео
- Прокси-сайт работает только для определенных сайтов.Итак, если вы хотите получить доступ к онлайн-контенту, который ограничен и использует видеоплеер или какое-либо другое программное обеспечение, он может не работать
Прокси-сайт — хороший вариант, если вам нужно краткосрочное решение, и вы не беспокоитесь о своей конфиденциальности и безопасности в Интернете. Однако, если вам нужно надежное долгосрочное решение, лучше всего подойдет VPN-сервис.
- Расширения браузера
Существует множество расширений браузера, которые предлагают услуги VPN или прокси, такие как Hola, Express VPN, которые вы можете использовать.Устанавливая и активируя их, вы можете получить легкий доступ к ограниченному контенту.
Расширение браузера VPN работает аналогично полноценному программному обеспечению VPN. Он не так безопасен, как последний, но легче и проще. Итак, есть компромисс.
Здесь следует помнить, что большинство этих расширений доступны только для Google Chrome и Mozilla Firefox. Итак, убедитесь, что в вашей системе установлен хотя бы один из них.
Обидно, что многие веб-сайты и видеоролики предназначены только для определенных местоположений.Однако вы можете найти описанные выше методы полезными и полезными. Удачи!
Программа командной строки для загрузки галерей и коллекций изображений с нескольких сайтов хостинга изображений
gallery-dl — это программа командной строки для загрузки галерей и коллекций изображений с нескольких сайтов размещения изображений (см. Поддерживаемые сайты). Это кроссплатформенный инструмент с множеством параметров конфигурации и мощными возможностями именования файлов.
Зависимости
Дополнительно
Установка
Пип
Стабильные выпуски gallery-dl распространяются на PyPI и могут быть легко установлены или обновлены с помощью pip:
$ python3 -m pip install -U gallery-dl
Установить последнюю версию разработчика прямо с GitHub также можно с помощью pip:
$ python3 -m pip install -U -I --no-deps --no-cache-dir https: // github.com / mikf / gallery-dl / archive / master.tar.gz
Примечание. Пользователи Windows должны использовать py -3
вместо python3
.
setuptools
и wheel
.Чтобы убедиться, что эти пакеты обновлены, запустите
$ python3 -m pip install --upgrade pip setuptools wheel
Из источника
Получите код по
- Скачивание стабильного или dev-архива и его распаковка
- Или через
git clone https: // github.com / mikf / gallery-dl.git
Перейдите в соответствующий каталог и запустите файл setup.py
.
$ wget https://github.com/mikf/gallery-dl/archive/master.tar.gz $ tar -xf master.tar.gz # или $ git clone https://github.com/mikf/gallery-dl.git $ cd gallery-dl * $ python3 setup.py установить
Автономный исполняемый файл
Загрузите автономный исполняемый файл, поместите его в свой PATH и запустите в командной строке (например, cmd.exe
).
Эти исполняемые файлы включают интерпретатор Python и все необходимые пакеты Python.
Snap
ПользователиLinux, использующие дистрибутив, поддерживаемый Snapd, могут установить gallery-dl из Snap Store:
$ snap install gallery-dl
Шоколадный
Пользователи Windows, у которых установлен Chocolatey, могут установить gallery-dl из репозитория Chocolatey Community Packages:
$ choco install галерея-dl
Совок
Помимо Chocolatey, gallery-dl также доступна в «основном» сегменте Scoop для пользователей Windows.
$ галерея установки scoop-dl
Использование
Чтобы использовать gallery-dl , просто вызовите его, указав URL-адреса, с которых вы хотите загрузить изображения:
$ gallery-dl [ОПЦИЯ] ... URL ...
См. Также gallery-dl --help
.
Примеры
Скачать образы; в данном случае от danbooru через поиск по тегу ‘bonocho’:
$ gallery-dl "https://danbooru.donmai.us/posts?tags=bonocho"
Получите прямой URL-адрес изображения с сайта, требующего аутентификации:
$ gallery-dl -g -u "<имя пользователя>" -p "<пароль>" "https: // seiga.nicovideo.jp/seiga/im3211703 "
Фильтр глав манги по языку и номеру главы:
$ gallery-dl --chapter-filter "lang == 'fr' and 10 <= chapter <20" "https://mangadex.org/title/2354/"
Найдите на удаленном ресурсе URL-адреса и загрузите с них изображения:
(URL-адреса, для которых не удается найти экстрактор, будут игнорироваться без уведомления)
$ gallery-dl "r: https: //pastebin.com/raw/FLwrCYsT"
Если адрес сайта нестандартен для его экстрактора, вы можете префикс URL с именем экстрактора, чтобы принудительно использовать конкретный экстрактор:
$ gallery-dl "tumblr: https: // sometumblrblog.пример "
Конфигурация
Файлы конфигурации для gallery-dl используют формат файла на основе JSON.
Для (более или менее) полного примера с параметрами, установленными на значения по умолчанию, см. Gallery-dl.conf. Список всех доступных параметров конфигурации и их описания можно найти в файле configuration.rst.gallery-dl ищет файлы конфигурации в следующих местах:
- Windows:
-
% APPDATA% \ gallery-dl \ config.JSON
-
% ПРОФИЛЬ ПОЛЬЗОВАТЕЛЯ% \ gallery-dl \ config.json
-
% ПРОФИЛЬ ПОЛЬЗОВАТЕЛЯ% \ gallery-dl.conf
(
% USERPROFILE%
обычно относится к домашнему каталогу пользователя, то естьC: \ Users \
)\ -
- Linux, macOS и т. Д .:
-
/etc/gallery-dl.conf
-
$ {HOME} /. Config / gallery-dl / config.json
-
$ {HOME} /. Gallery-dl.conf
-
Значения в более поздних файлах конфигурации имеют приоритет над предыдущими.
Параметры командной строки переопределят все связанные настройки в файле (файлах) конфигурации, например: использование --write-metadata
позволит записывать метаданные с использованием значений по умолчанию для всех параметров postprocessors.metadata. *
, отменяя любые определенные параметры в файлах конфигурации.
Аутентификация
Имя пользователя и пароль
Некоторые экстракторы требуют, чтобы вы предоставили действительные учетные данные для входа в систему в виде пары имени пользователя и пароля.Это необходимо для pixiv
, nijie
и seiga
и опционально для aryion
, danbooru
, e621
, exhentai
, idolcomplex
,
lncbunny
, instagram
lcbunny 912 ,
pinterest
, sankaku
, subscribestar
, tsumino
и twitter
.
Вы можете установить необходимую информацию в вашем файле конфигурации (см.галерея-dl.conf)
{ "экстрактор": { "pixiv": { "имя пользователя": "<имя пользователя>", "пароль": "<пароль>" } } }
, или вы можете предоставить их напрямую через -u / - имя пользователя
и -p / - пароль
или через -o / - option
параметры командной строки
$ gallery-dl -u <имя пользователя> -p <пароль> URL $ gallery-dl -o username =-o password = URL
Печенье
Для сайтов, на которых вход с использованием имени пользователя и пароля невозможен из-за CAPTCHA или подобного или еще не реализован, вы можете использовать файлы cookie из сеанса входа в браузер и ввести их в gallery-dl .
Это можно сделать с помощью параметра cookie в файле конфигурации, указав
путь к файлу cookies.txt в формате Mozilla / Netscape, экспортированному надстройкой браузера
список пар имя-значение, собранный с помощью инструментов веб-разработчика вашего браузера
Например:
{ "экстрактор": { "instagram": { "cookies": "$ HOME / путь / к / cookies.txt" }, "patreon": { "печенье": { "session_id": "K1T57EKu19TR49C51CDjOJoXNQLF7VbdVOiBrC9ye0a" } } } }
Вы также можете указать файлы cookie.txt с параметром командной строки --cookies
:
$ gallery-dl --cookies "$ HOME / path / to / cookies.txt" URL
OAuth
gallery-dl поддерживает аутентификацию пользователя через OAuth для deviantart
, flickr
, reddit
, smugmug
и tumblr
. Это совершенно необязательно, но дает gallery-dl возможность отправлять запросы от имени вашей учетной записи и дает ей доступ к ресурсам, которые в противном случае были бы недоступны для общедоступного пользователя.
Чтобы связать свою учетную запись с gallery-dl , сначала вызовите ее с oauth:
в качестве аргумента. Например:
$ галерея-dl oauth: flickr
Вы будете перенаправлены на страницу авторизации сайта и попросите предоставить доступ для чтения к gallery-dl .