instargramm.ru

Tcp с нестандартным socks5 прокси. Как обойти блокировку Telegram в России с помощью протокола SOCKS5

Со временем в сфере браузеров создаются новые разработки. Браузеры, которые мы сегодня используем, регулярно улучшаются. Когда-то давно, на заре их появления в Интернете и сфере IT в целом, браузеры не поддерживали многих функций, например, работу с SOCKS прокси серверами. Отсюда, появилась необходимость в применении отдельных приложений с соответствующим функционалом.

В настоящее время отпадает необходимость в любых приложениях. Благодаря обновлению наших любимых браузеров сейчас они поддерживают работу с прокси и их настройку.

Получение доступа к SOCKS прокси

Для использования SOCKS прокси через браузер сперва необходимо получить к ним доступ. Сделать это можно на сайте .

Выполните следующие шаги:

1. Откройте страницу и войдите под своим аккаунтом.

2. После входа на сайт открывается админпанель, на которой можно выполнить поиск прокси по определенным параметрам либо отобразить список всех доступных прокси.


3. Самый простой способ получения прокси: опция List Proxys. Нажмите кнопку с этой надписью. Откроется страница со списком всех доступных в данный момент прокси серверов.


4. Нажмите на любой прокси в колонке HostName, появится всплывающее окно.

5. Для отображения адреса и порта выбранного прокси сервера нажмите click here to view . В окне появится текущий статус прокси. Если проверка прошла успешно, скопируйте его адрес и порт. В противном случае, выберите другой прокси из списка найденных прокси серверов.

6. У вас есть SOCKS прокси, который можно использовать в работе. В нашем случае (на примере) - это 1.36.114.198:53052

7. Теперь приступаем к настройке браузера для использования SOCKS прокси.

Работа с SOCKS прокси в FireFox

1. Для настройки SOCKS в браузере FireFox воспользуйтесь панелью меню.

2. Откройте меню Настройки > Дополнительные .

3. Затем выберите вкладку Сеть и нажмите кнопку Настроить . Откроется новое окно, в котором необходимо ввести данные прокси сервера. Нажмите Ручная настройка сервиса прокси и снимите флажок с опции Использовать этот прокси-сервер для всех протоколов.

4. Введите данные прокси сервера и нажмите OK.


5. Убедитесь, что ваш IP-адрес изменился, по ссылке http:// ipleak. com .


Работа с SOCKS прокси в браузере Opera (ver 13.0+)

1. Откройте меню Инструменты > Настройки .

2. Выберите вкладкуБраузер .

3. Нажмите кнопку Изменить настройки прокси-сервера .

5. Во вкладке Соединения Настройки
Настройки LAN) .

6. Поставьте галочку напротив Использовать прокси-сервер

7. Затем нажмите Дополнительно. SOCKS прокси-сервера.

8.Нажмите OK , и еще раз OK в другом окне. Проверьте ваш текущий IP-адрес на сайте http://ipleak. com :


Работа с SOCKS прокси в браузере IE

1. Откройте меню Инструменты, выберите Опции интернета.

2. Во вкладке Соединения нажмите кнопку Настройки .

3. Появится всплывающее окно с настройками.

4. Поставьте галочку напротив Использовать прокси-сервер , что позволит задать параметры вашего прокси-сервера.

5. Затем нажмите Дополнительно. Здесь можно ввести параметры SOCKS прокси.


6. Нажмите OK в каждом открытом окне настроек (всего 3 раза) для сохранения изменений.

7. Настройки выполнены. Проверьте свой текущий IP-адрес на сайте http:// ipleak. com .


Работа с SOCKS прокси в браузере Chrome

1. Нажмите иконку «Инструменты» и выберите «Настройки » для входа в меню настроек.

2. Перейдите на закладку Дополнительные настройки.

3. Нажмите кнопку Изменить настройки прокси-сервера .

4. Появится всплывающее окно с настройками.

5. Во вкладке Соединения выберите ваше подключение и нажмите Настройки .
(если вы подключаетесь через локальную сеть или роутер - нажмите Настройки LAN)

6. Поставьте галочку напротив Использовать прокси-сервер , что позволит задать параметры вашего прокси-сервера.

7. Затем нажмите Дополнительно. В открывшемся окне введите данные SOCKS прокси-сервера.


8. Для сохранения настроек нажмите несколько раз OK.

9. Проверьте свой текущий IP-адрес:


Опубликовали инструкцию по обходу возможной блокировки Telegram - популярного мессенджера, разработанного командой Павла Дурова. В статье описывается способ обхода, который основывается на использовании сетевого протокола SOCKS5. Этот протокол незаметно пересылает пакеты данных от клиента к серверу через прокси-сервер.

SOCKS - сетевой протокол, который позволяет клиент-серверным приложениям прозрачно (незаметно для них) использовать сервисы за межсетевыми экранами (фаерволами). Опция уже доступна в Telegram Desktop и Mac, а мобильные клиенты получат её в ближайшем обновлении.

Совет: включите в настройках опцию автоматического обновления.

В первую очередь включите SOCKS5 до начала блокировки.

Если вы по каким-то причинам не успеете это сделать, то придётся туго, т.к. из российских Google Play и AppStore, клиенты Telegram, скорее всего, исчезнут. Здесь помогут Vpn и Tor, через которые можно будет скачать Telegram в американских магазинах. Но не обольщайтесь - впереди закон по запрету средств обхода блокировок, принятый в первом чтении в Госдуме РФ.

Совет: в настройках Android разрешите скачивание обновлений не из официального магазина, и скачайте обновление Telegram с сайта мессенджера telegram.org .

Настройка SOCKS 5

Приводим инструкцию на русском языке:

1) Зайдите в настройки настольного Telegram и нажмите «По умолчанию (сейчас:TCP)».

2) Переключите в меню «Тип соединения» на «TCP socks5-прокси»

3) Введите адрес прокси сервера (например, 192.254.68.37), соответствующий порт (1080). Лучше использовать прокси-адреса Америки, Германии, Швеции или Англии. Затем ставите галочку «Использовать IPv6» и сохраняете.

Как найти прокси-сервера?

Просто перейдите по следующим ссылкам:

Только берите сервер для SOCKS5, не перепутайте с HTTP.

Возможна настройка из этого бесплатного списка (socks - sockslist.net).

Теперь по умолчанию ваш Telegram будет соединяться через выбранный прокси-сервер.

Дополнение: Если возникнут проблемы с подключением, нужно настроить брандмауэр Windows - добавить в разрешенные приложения Telegram. Сделать это просто, но у вас должны быть права администратора.

  • Войдите в «Панель управления» и перейдите в «Брандмауэр Windows».
  • Нажмите на пункт «Разрешения взаимодействия с приложениями или компонентами...». Откроется окно с большим количеством программ, но вряд ли вы там найдете Telegram. Поэтому нужно будет его туда добавить.
  • Нажмите на «Изменить параметры», а затем на нижнюю кнопку «Разрешить другое приложение».
  • Во всплывающем окне «Добавление приложение» через Обзор добавьте Telegram.
  • Всё. Снова настраивайте соединение с прокси-сервером.

В то время как стандартный HTTP прокси отлично подходит для просмотра web-страниц, SOCKS прокси ориентированы на другое программное обеспечение, такое как электронная почта, мессенджеры и даже интернет-телефония, добавляя в них еще один уровень безопасности. David Koblas изобрел SOCKS прокси пока работал над MIPS Computer Systems, предшественнике Silicon Graphics. Koblas представил архитектуру SOCKS в 1992 году и использования нового типа прокси очень быстро распространилось.

Инструкция по использованию SOKCS прокси

1. Получите доступ к списку SOCKS прокси-серверов. Есть два способа поиска. Первый это поиск сайтов, таких ка Public Proxy Servers для получения информации о бесплатных прокси-серверах. Другой способ - подписаться на частную службу прокси-сервера, к примеру Unique Internet Services, которая предоставляет доступ к тысячам частных SOCKS прокси.

2. Загрузите и установите бесплатную копию Proxy Firewall. Перейдите к proxyfirewall.org, в нижней части страницы нажмите на ссылку "Download". Выберите команду "Run" в открывшемся окне. Когда программа установки завершится, вам будет предложено перезагрузить компьютер. Сохраните все открытые файлы и перезагрузите компьютер.

3. Откройте Proxy Firewall и добавьте ваши прокси в список. Перейдите к вкладке "Private Proxies", если вы являетесь участником Unique Internet Services, а затем введите имя пользователя и пароль для автоматического импорта тысячи прокси-серверов. Если же вы не являетесь участником Unique Internet Services, вы можете использовать приложение, нажав "Add Proxies" в левом нижнем углу, а затем вручную введя IP-адрес и номер порта для каждого SOCKS прокси-сервера.

4. Задайте разрешение для ваших программ. Первый раз при открытии каждой программы после установки Proxy Firewall, программа обнаружит Proxy Firewall и спросит вас, как действовать дальше. Вы можете выбрать прямой доступ к интернету или выбрать подключение через SOCKS прокси . Proxy Firewall будет помнить настройки для каждой программы на вашем компьютере, но их можно будет поменять в любое время, нажав на вкладку "Rules" в Proxy Firewall.

С vpnki вы можете иметь доступ к домашней сети через прокси сервер . Точнее говоря, мы используем два прокси сервера:

  • для HTTP соединений - http proxy
  • для любых соединений по протоколу TCP - SOCKS5 proxy

С помощью http прокси вы сможете иметь доступ из сети Интернет к веб-интерфейсу своего домашнего устройства (сервера, видеорегистратора, видеокамеры и т.д.), а с помощью SOCKS5 прокси вы сможете иметь доступ к домашним устройствам по таким протоколам как ssh и VNC (впрочем и по многим другим, которые используют протокол TCP).

Доступ через прокси сервер осуществляется при наличии:

  • подключенного к системе vpn туннеля от вашего устройства по любому из протоколов (PPTP, L2TP, L2TP/IPsec, OpenVPN)
  • наличия галочки (об использовании proxy) на вашей личной странице vpnki
  • настроенного клиентского программного обеспечения (браузер, ssh или VNC клиент)

Используемый логин/пароль, который вы будете вводить в момент подключения через прокси НЕ должен быть подключен через VPN Proxy-cоединения без авторизации приниматься не будут.

Перед использованием уточните может ли ваше клиентское программное обеспечение использовать proxy сервер с авторизацией.

Краткая инструкция по использованию HTTP и SOCKS5 proxy соединений

1. При установленной галочке на личной странице системы vpnki вам будут выделены два порта TCP:

  • один для http proxy
  • второй для SOCKS5 proxy

Запишите их и используйте при настройке своего клиентского ПО

2. Настройка браузера (в общем виде подходит для любого браузера)

2.1. Войдите в настройки браузера и выберите там пункт похожий на "Сетевые настройки"

2.2. Перейдите в настройки соединения с Интернет

2.3. Укажите в качестве http прокси - msk.сайт и порт, выданный вам на личной странице для http соединений (в данном примере 54505)

2.4. Наберите в строке браузера адрес веб-интерфейса в домашней сети

Если вы посмотрите на правила использования прокси в вашем браузере то обратите внимание на то, что согласно выполненным настройкам теперь соединения до всех узлов сети Интернет будут устанавливаться через указанный прокси. Однако наш прокси сервер не предоставляет возможности доступа к Интернет. К сожалению, производители браузеров дают ограниченнную возможность указания исключений из правила использования прокси ("Не использовать прокси для...") и, увы, это правило не позволяет описать ситуацию "Доступ к домашней сети через прокси, доступ ко всем серверам Интернет - без прокси"

Таким образом, с выполненными ранее настройками браузера вы получите доступ к домашней сети, но не сможете обратиться к любому сайту в Интернете.

В такой ситуации есть два выхода:

  • Использовать два браузера (один с настройками прокси для доступа к домашней сети, второй - без настроек прокси для доступа к всем ресурсам Интернет), но это не очень удобно
  • Использовать дополнительный плагин для браузера, в котором правила использования прокси пишутся более гибко. Таким плагином может являться плагин AutoProxy для Firefox

2.6. Плагин AutoProxy для Firefox. В нем вам необходимо: а) указать прокси сервер - msk.... б) Создать группу правил и сами правила, указав только те адреса, соединения с которыми должны осуществляться через прокси сервер. Все остальные соединения будут осуществляться без использования прокси. Пример правил представлен на рисунке ниже. В данном случае, в группе правил vpnki есть три правила (адреса домашней сети) для которых будет использоваться прокси соедиение. Указание адресов в правилах начинается с символа ||

3. Настройки VNC клиента

3.2. Настройте VNC Viewer: укажите в настройках Proxy - msk.сайт и порт, выданный вам для SOCKS5 соединений на личной странице vpnki

3.3. Создайте соединение к своему устройству и запустите его

ДОПОЛНИТЕЛЬНО ПО ТЕМЕ

  • Немного более подробно про IP адреса можно прочитать на нашем сайте
  • Про выход в Интернет через VPN и центральный офис можно
  • Про удалённый доступ к компьютеру можно почитать на нашем сайте
  • Про VPN и протоколы можно почитать

Анонимность в сети — тема не новая. И вы наверняка устанавливали к себе на комп прогу типа A4Proxy, SocksChain
и им подобные. Лично я не люблю, когда для работы с проксями нужна какая-то отдельная прога. Во-первых
некрасиво, когда много окон на панели задач или значков в трее, во-вторых проги эти требуют кряков, а их
искать лень 🙂 Поэтому я и написал классы для поддержки SOCKS5-серверов, которые я теперь могу заюзать
в какой-нибудь своей проге. И вот теперь хочу всем рассказать, как это делать.

То, к каким серверам и по каким протоколам мы может обращаться через прокси, зависит от
типа этого прокси, т. е. протокола, по которому мы обращаемся к нему. Типов проксей существует нескольно:
HTTP-proxies, SOCKS4, SOCKS5, SSL CONNECT и т.д. HTTP-proxy наиболее распространены, их легче всего найти и инете, но работают они только с HTTP, к тому
же могут вставлять в заголовки запроса адрес клиента, то есть быть
не анонимными. Протокол SOCKS наиболее примечателен тем, что он инкапсулирует протоколы не прикладного, а
транспортного уровня, т.е. TCP/IP и UDP/IP. Поскольку только по этим протоколам возможна работа в Сети,
через SOCKS можно работать с любыми серверами, в том числе и такими же SOCKS и,
таким образом, организовывать цепочки SOCKS-серверов. По этой же причине ВСЕ SOCKS-сервера анонимны — невозможно
на уровне TCP/IP и UDP/IP передать дополнительную информацию, не нарушив работу вышестоящего
протокола.

Мы остановимся на протоколе SOCKS5. Его описание лежит в
. Для SOCKS5 стандартным является порт 1080, но, впрочем, на этот
стандарт никто особого внимания не обращает. Каждое SOCKS-соединение проходит стадию аутентификации, если она требуется, затем клиент
посылает команду. Команда может быть одна из трех:
CONNECT — исходящее TCP-соединение с указанным адресом. Использование этой команды мы рассмотрим
подробнее, так как она нужна наиболее часто. BIND — открыть порт (сервер выбирает порт и посылает клиенту адрес и порт) и принять TCP соединение.
Серверу может понадобится знать, кто будет соннектиться. На этот случай нужно передать эту инфу. UDP ASSOCIATE — открыть UDP-порт (сервер выбирает порт). Данные, предназначенные для конечного
хоста и данные от него идут тоже по UDP. Данные в SOCKS5 передаются в бинарном виде, а не в текстовом, как в HTTP, SMTP, POP3 и др.

Описание протокола

Сконнектившись с сервером, клиент шлет пакет, в котором указана версия протокола и поддерживаемые
методы аутентификации. Этот пакет имеет следующий формат:

BYTE Version;
BYTE nMethods;
BYTE methods

Версия должна быть 5. Каждый элемент methods определяет не только метод аутентификации, но и способ шифрования данных,
если оно используется. Из этих методов сервер выбирает один. Можно указывать любое количество методов, но, если сервер не требует аутентификации, то никакие методы,
кроме 0x00 (не использовать ни аутентификацию, ни шифрование) не потребуются. В ответ сервер шлет пакет следующего содержания:

BYTE Version
BYTE method,

где method — выбранный сервером метод или 0xFF (ни один из предложенных методов не поддерживается). Если метод 0x00, то можно сразу посылать команду.

Пакет команды имеет следующий формат:

BYTE Version; // 5
BYTE Cmd ; // 1 — CONNECT
BYTE Reserved; // 0

BYTE addr;
WORD port; // Байты в сетевом порядке, т. е. htons(Port);

Если используется доменное имя, то сначала идет байт длины, а затем строка без завершающего нуля.

Сервер посылает ответ:

BYTE Version; // 5
BYTE Rep ; // 0 — Ok
BYTE Reserved; // 0
BYTE AType; // 1 — IPv4; 3 — domain name; 4 — IPv6
BYTE addr;
WORD port;

Здесь адрес и порт — это адрес и порт, видимые хосту. Возвращается, как правило, IP-адрес, а не доменное
имя. Этот адрес может отличаться от того, по которому мы обращаемся к серверу, особенно, если сервер
используется по назначению, т. е. для выхода из локалки в инет. Если Rep не ноль, т. е. ошибка, то закрываем соединение, в
противном случае работаем с хостом. Мы не используем шифрование, поэтому просто передаем и принимаем данные, как при обычном соединении. Если одна из сторон закроет соединение с socks-сервером, то он сразу же закроет соединение с другой
стороной. Одно socks-соединение инкапсулирует одно TCP-соединение или попытку его установления,
так что если использовать socks для анонимного сканирования портов, то эта
процедура может занять пол дня.

Кодинг

Поскольку socks инкапсулирует TCP, целесообразно сделать класс socks-соединения производным от
класса сокета, но MFCшный CSocket не подходит, т.к. у него все методы
не виртуальные. Напишем свой класс сокета и назовем его, скажем, CTSocket

#include

class CTSocket
{
public:





virtual void Close();
virtual unsigned long GetHost(); // Узнать свой адрес. Это тоже может понадобиться.

private:
SOCKET sock;
};

Реализацию этого класса каждый сможет написать сам (кто не знает как, RTFM MSDN), так что не буду ее
рассматривать. Теперь напишем класс socks-соединения. Он будет поддерживать только самый необходимый набор
функций: поддерживается только команда CONNECT, не поддерживается аутентификация и SOCKS-сервер
задается только IP-адресом, а не доменным именем. Больше в одной статье не поместится.

Class CSocksSocket: public CTSocket
{
public:
virtual BOOL CreateSocket();
virtual BOOL Connect(unsigned long ip, unsigned short port);
virtual BOOL Connect(LPCSTR name, unsigned short port);
virtual int Send(const char* str, int len);
virtual int Recv(char* buf, int max);
virtual BOOL Close();
virtual unsigned long GetHost();

CTSocket* pSocket;
unsigned long socks_ip;
unsigned short socks_port;

private:
char buffer; // Такого размера точно хватит
unsigned long l_ip; // Адрес, возвращаемый функцией
GetHost()

};

// Реализация
BOOL CSocksSocket::CreateSocket()
{
if (!pSocket->CreateSocket()) return FALSE;
if (!pSocket->Connect(socks_ip, socks_port)) return FALSE;
buffer = 5; // Ver
buffer = 1; // 1 method
buffer = 0; // no auth
pSocket->Send(buffer, 3);
int n = pSocket->Recv(buffer, 2);
if (n != 2) return FALSE;
method 0 not supported
return TRUE;
}

BOOL CSocksSocket::Connect(unsigned long ip, unsigned short port)
{
buffer = 5; // Ver
buffer = 1; // CONNECT
buffer = 0; // Reserved
buffer = 1; // IPv4
*((unsigned long*)(buffer + 4)) = ip;
*((unsigned short*)(buffer + 8)) = port;
pSocket->Send(buffer, 10);
int n = pSocket->Recv(buffer, 10);
if (n != 10) return FALSE;
if (buffer != 0) return FALSE; //
Can’t connect

return TRUE;
}

BOOL CSocksSocket::Connect(LPCSTR name, unsigned short port)
{
buffer = 5;
buffer = 1;
buffer = 0;
buffer = 3; // Domain name
int m = strlen(name);
buffer = m; //
Length byte
memcpy(buffer+5, name, m); //
Копируем строку без завершающего нуля
*((unsigned short*)(buffer + 5 + m)) = port;
pSocket->Send(buffer, m + 7);
int n = pSocket->Recv(buffer, 10);
if (n != 10) return FALSE;
if (buffer != 0) return FALSE;
if (buffer != 1) return FALSE; //
Будем требовать, чтобы нам сказали IP, а не что-нибудь другое.
l_ip = *((unsigned long*)(buffer + 4));
return TRUE;
}

int CSocksSocket::Send(const char* str, int len)
{
return pSocket->Send(str, len);
}

int CSocksSocket::Recv(char* buf, int max)
{
return pScoket->Recv(buf, max);
}

void CSocksSocket::Close()
{
pSocket->Close();
}

unsigned long CSocksSocket::GetHost()
{
return l_ip;
}

// Ну, а теперь тестовая прога
void main()
{
WSADATA wsadata;
CTSocket tsock;
CSocksSocket ssock(&tsock);

WSAStartup(MAKEWORD(2,2), &wsadata);

ssock.socks_ip = inet_addr(«10.10.10.10»); // Впишите сюда нужный адрес
ssock.socks_port = 1080; //
Впишите сюда порт

if (!ssock.CreateSocket()) return; // Can’t connect to socks
// or auth required
if (!ssock.Connect(«www.mail.ru», htons(80))) return; //
www.mail.ru
// is inaccessible
LPSTR q = «HEAD / HTTP/1.1\xD\xAHost: www.mail.ru:80\xD\xAUser-Agent: xakep\xD\xA\xD\xA»;
ssock.Send(q, strlen(q));

char buf;
int n = ssock.Recv(buf, 1000);
buf[n] = 0;
printf("%s", buf);

Загрузка...