Как использовать socks4 в php
Перейти к содержимому

Как использовать socks4 в php

  • автор:

Как использовать socks4 в php

11.09.2011, 00:35

Дорогие товарищи, вопрос таков: на одном из серверов человека забанили, хотя этот комрад думает, что несправедливо. Вот и интересно: можно ли использовать SOCKS Proxy, например, запуская «Ил-2» через SocksCap, предварительно сконфигурировав подключение к СОКС Прокси для того, чтобы обойти этот бан?
И если не так, то какие способы обойти бан-защиту сервера существуют?
Всем заранее спасибо.

11.09.2011, 11:24

Мало данных для анализа, чем этот товарищ занимался на сервере, насколько это согласовалось с правилами сервера, каким способом был забанен. ИМХО. Лучший способ избежать бана — соблюдать правила сервера, внимательно прочитав их при этом, для снятия бана общаться с админом сервера. Выкладывать способы обхода здесь не рекомендуется.

Написать чекер http/https/socks4/socks5 прокси

Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Нужно написать чекер http/https/socks4/socks5 прокси. Под *nix системы.

1. Сам чекер, т.е. ядро и всё основное что нужно, должен быть на Си, чтобы уменьшить нагрузку на сервер и увеличить скорость.

2. НЕ использовать мускуль, только работа с файлами(опять же для скорости)

3. Админку и установку можно на пёрле/пхп, чтобы удобно работать было.

4. Регулируемая многопоточность проверки и парсинга

5. Определение типа прокси, живой или нет, возможность POST/GET запросов, страны, connect, возможность работы по https, скорость(таймаут)

6. Предварительный пинг проксей(опционально). Чтобы зря их не чекать.

7. Парсинг прокси как из обычных прокси-листов, так и из сложных с помощью регулярных выражений

8. Обязательно ваши предложения.

Жду предложений в том числе и по оплате.

Что нужно для работы SOCKS прокси на хостинге?

Добрый вечер. Столкнулся с такой проблемой, не работают SOCKS прокси на хостинге через CURL. На домашнем сервере все нормально, однако на хостинге возникает ошибка «Failed to resolve «сайт» for SOCKS4 connect. Собственно, сам код:

 if ( !$ip || !$port ) continue; if(isset($proxy[2]))< $proxy = $ip . ':' . $port. ':' . $type; >else < $proxy = $ip . ':' . $port; >$curlh[$proxy]= curl_init(); curl_setopt($curlh[$proxy],CURLOPT_TIMEOUT, 10); curl_setopt($curlh[$proxy], CURLOPT_URL, 'https://www.google.com'); curl_setopt($curlh[$proxy], CURLOPT_FOLLOWLOCATION, true); curl_setopt($curlh[$proxy], CURLOPT_RETURNTRANSFER, true); curl_setopt($curlh[$proxy], CURLOPT_NOBODY, true); curl_setopt($curlh[$proxy], CURLOPT_HEADER, true); curl_setopt($curlh[$proxy], CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36'); curl_setopt($curlh[$proxy], CURLOPT_PROXY, $ip . ":" . $port ); if(isset($type)) < if(stripos($type,"SOCKS5")!==false)< curl_setopt ($curlh[$proxy], CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5); >if (stripos($type, "SOCKS4") !== false) < curl_setopt($curlh[$proxy], CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4); >if (stripos($type, "HTTP") !== false) < curl_setopt($curlh[$proxy], CURLOPT_PROXYTYPE, CURLPROXY_HTTP); >> curl_setopt($curlh[$proxy], CURLOPT_HTTPPROXYTUNNEL, true); curl_multi_add_handle($mh, $curlh[$proxy]); > $running = null; do < curl_multi_exec($mh, $running); >while ($running); foreach ($curlh as $key => $value) < curl_multi_remove_handle($mh, $curlh[$key]); echo curl_error ($curlh[$key]) . "
"; > foreach ($curlh as $key => $value) < $response[$key] = curl_multi_getcontent($curlh[$key]); >foreach($response as $key=> $out) < if ( strpos($out, 'Forbidden') == true )< continue;>if ( strpos($out, '200 OK') == true ) < array_push($proxyList,$key);>> if ( count($proxyList) ) < unlink($file); if ($fp = fopen ($file, "w")) < for ($i=0;$i> echo '
'; print_r($proxyList); echo '

'; $time = microtime(true) - $start; printf('Скрипт выполнялся %.4F сек.', $time);

Собственно, проблема заключается в хостинге. Что именно необходимо для использования SOCKS прокси? Какие технологии, библиотеки? Благодарю за внимание. P.S. прокси использую исключительно для сбора и анализа информации, никаких DDOS, воровства данных и прочего.

Библиотека для работы с Web на PHP

Давным-давно, когда в моде еще был PHP4, я написал несложную библиотеку на PHP для работы с Web. Эта библиотека была достаточно примитивной, состояла из одного-единственного класса, содержала какие-то ошибки, но, тем не менее, она работала и была вполне юзабельной, поддерживала различные типы прокси-серверов, chunked-содержимое, сжатое содержимое и еще всякие приятные мелочи.

Однако, пришло время расширить функционал библиотеки, а заодно и полностью переписать ее с использованием новых возможностей ООП PHP5.

Итак, вот основные фишки новой библиотеки в сравнении со старой (жирным отмечены самые интересные особенности):

Характеристика Websock2 Websock
PHP4 +
Не требует cURL + +
HTTP + +
HTTPS +
GET-и POST-запросы + +
Удобная работа с HTTP-заголовками +
File uploads +
Автоматическое отслеживание cookies +
Автоматическая обработка HTTP-редиректов +
Установка referer при редиректах +
Basic-аутентификация +
Digest-аутентификация +
Автоматическая basic/digest аутентификация +
Chunked encoding + +
GZIPped-содержимое + +
Deflated-содержимое +
HTTP-прокси + +
HTTP-прокси в режиме HTTPS +
SOCKS4-прокси +
SOCKS4a-прокси +
SOCKS5-прокси + +
Аутентификация прокси + +
Цепочки прокси +
Отслеживание таймаутов операций +
Сокеты через file и socket_*-функции + +
Перехват HTTP-редиректов +
Перехват чтения HTTP-заголовков и содержимого +
Скачивание/загрузка очень больших файлов +
Сделано по RFC +
Удобная архитектура, простая расширяемость +

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

Скачать архив (библиотека + примеры + документация): Websock2
Просмотреть документацию и примеры использования

Пожелания и вопросы можно оставлять в комментариях к посту или на нашем форуме.

Библиотека для работы с Web на PHP: 29 комментариев

Максим :
Спасибо dx, пока не видел качественных аналогов.

Спасибо, очень полезная вещь.
Аналогов такого под РНР уж точно нет, даже первая версия была весьма удобной (на фоне того же курл и обычных сокетов).

Jupeto :
библиотека может получать javascript cookies? например на rutor.org?

Что вообще такое «javascript cookie»? Это Cookies, которые выставляются через JavaScript? Тогда, очевидно, не может, потому что для этого нужен целый движок JavaScript’а, который будет его исполнять. Ну или парсить регулярками строки в JavaScript’е, которые устанавливают cookies.

Выдает ошибку Parse error: syntax error, unexpected ‘[‘ in websock2.php on line 410 Не могу понять в чем дело.

Дело в том, что у тебя старая версия PHP.

Вообще, вероятно я это поменяю, чтобы и в более ранних версиях работало. Сейчас будет работать в PHP5.4 и новее только.

Доделал, теперь в PHP 5.3 тоже будет работать.

Обновил PHP все заработало. Появился еще один вопрос, в одном из примеров есть такая запись:
//You can also create Socks5Proxy, Socks4AProxy and Socks4Proxy
$proxy = new HttpProxy(‘proxy.address.here’, 3128); Эту часть нужно менять (proxy.address.here) и почему именно 3128 порт. Просто если я оставляю в исходном состоянии то у меня выходит такая запись: Fatal error: Uncaught exception ‘WebRequestException’ with message ‘Unable to connect to socket: Connection refused’ in websock2.php:2890 Stack trace: #0 websock2.php(2087): FileSocket->open(‘proxy.address.h. ‘, 3128) #1 websock2.php(2241): WebProxy->open(‘proxy.address.h. ‘, 3128) #2 basic_proxy.php(15): HttpProxy->sendRequest(Object(WebRequest)) #3 thrown in websock2.php on line 2890

Ну как бы да, нужно менять. Это же просто пример, как пользоваться.

Могули ли я применить вашу библиотеку конкретно для использования ip хостинга где она установлена. Тоесть суть проста, иметь пару десятков хостингов и пользоваться ихними ip для серфинга на разных ресурсах принцып как у proxy. Если да, то как. За раннее спасибо!

Это можно сделать, но не проще ли на хостинги поставить готовые прокси-сервера, чтобы не пришлось писать дополнительный код? Таких серверов уже куча сделана, в том числе на PHP.

vitidev :

Попробовал немного либу. Напишу про то, что вызвало желание патчить либу.
1) Поддержка php5.3, но вижу выше уже исправили [] на array
2) namespace + 2 слеша и нет больше мусора в глобальном пространстве
3) WebResponse возвращает хидеры как строку, а в 9 из 10 случаев нужно как распарсеный ассоц. массив. Такой метод нужен в самом классе WebResponse
4)куки. Передо мной стоит проблема хранения кук. Я так понял, что можно парсить с полной строки, но нет перевода в полную строку. Сериализация всего класса не вариант, поэтому придется добавить метод перевода куки в полную строку. __ToString() почему то выдает только имя=значение. Как по мне, должны быть методы toShortString(), toLong(Full)String.

1 — исправлено.
2 — опционально, просто не люблю неймспейсы в PHP. Говорить о том, что «НЕТ больше мусора в глобальном пространстве» — это вообще пушка, потому что там уже тысячи функций, классов и интерфейсов, и они никуда не денутся. Поэтому неймспейсы не сильно меняют дело.
3 — Для разбора заголовков существует класс HttpHeaderManager. Не нужно смешивать WebResponse и HttpHeaderManager. Заголовки иногда вообще не нужны, и нет смысла тратить ресурсы на их разбор. Кстати, заголовки в общем случае — это не ассоциативный массив, так как ключи могут повторяться.
4 — Чем отличается «полная строка» от «неполной»? Таких понятий в RFC нет. Cookie — это именно пара ключ=значение. А хранением Cookies занимается класс HttpCookieManager. Он вместе с классом HttpRequestManager позволяет организовать обработку Cookies на самом высоком уровне (парсинг, хранение, установка).

Я все-таки не до конца понял: мне самому надо как-то организовывать хранение кук между выполнениями скрипта?
Может я где-то упускаю аккуратное складывание всего-всего в файл?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *