PHP curl для всех типов прокси.

lutskboy
На сайте с 22.11.2013
Offline
184
1655

Привет

подскажите как мне использовать прокси через curl если я не знаю тип прокси?

устанавливаю

curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);

работает

так

curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4);

не хочет

есть еще

curl_setopt($ch, CURLOPT_PROXYTYPE, 'HTTP');

и знай какой применить

R
На сайте с 27.02.2016
Offline
66
#1
lutskboy:
Привет

подскажите как мне использовать прокси через curl если я не знаю тип прокси?
....
и знай какой применить

В документации все есть. http://php.net/manual/ru/function.curl-setopt.php

CURLOPT_PROXYTYPE

Либо CURLPROXY_HTTP (по умолчанию), либо CURLPROXY_SOCKS4, CURLPROXY_SOCKS5, CURLPROXY_SOCKS4A или CURLPROXY_SOCKS5_HOSTNAME.

Добавлен в версии cURL 7.10.

lutskboy
На сайте с 22.11.2013
Offline
184
#2

так я не знаю какой у меня тип прокси.

соответственно не знаю что указать. CURLPROXY_SOCKS4 или CURLPROXY_SOCKS5 или HTTP

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#3
так я не знаю какой у меня тип прокси.

Лучше узнать и разделить по спискам, иначе только перебирать.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
vandamme
На сайте с 30.11.2008
Offline
675
#4
lutskboy:
прокси через curl если я не знаю тип прокси

там где вы их берете, должна быть информация

SocFishing
На сайте с 26.09.2013
Offline
118
#5

Можно попробовать написать простую функцию опираясь на порты делать предположение какой прокси.

Скажем так порт 9051

Шаг первый. Судя по порту это Socks5 - Нет

Тогда вероятно это Socks4 - Нет

Странно. Остается только HTTP - и тут нет

Вывод, прокси невалидный берем другой :D

http обычно 80 81 8080 8090 и тд, можно несколько из-за таких условий сократить время проверок. Для особо умных - нейронку запилить и угадывать по базе портов какой. Еще лучше, обучаться и угадывать.

function curl_get_contents_partial($url, $limit) {
$writefn = function($ch, $chunk) use ($limit, &$datadump) {
static $data = '';

$len = strlen($data) + strlen($chunk);
if ($len >= $limit) {
$data .= substr($chunk, 0, $limit - strlen($data));
$datadump = $data;
return -1;
}
$data .= $chunk;
return strlen($chunk);
};

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
//curl_setopt($ch, CURLOPT_RANGE, '0-100'); //not honored by many sites, maybe just remove it altogether.
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_WRITEFUNCTION, $writefn);
$data = curl_exec($ch);
curl_close($ch);
return $datadump;
}

Прикрутите тут перебор прокси и тестовую страницу. Тут CURLOPT_RANGE говорит что будет грузить только 100 байт, что может ускорить процесс чека

★Сервис идентифицирует (https://socfishing.com/?utm_source=searchengines) посетителей вашего сайта и предоставляет их профили ВКонтакте, Телефон, Почта! Цены копеечные, работаем 8 лет.
makag
На сайте с 01.05.2013
Offline
106
#6

я сначала закидываю прокси в базу "без указания типа прокси"

затем пробую перебирать запросами - http / https / socks4 / socks5 / socks5 с паролем (если указан пароль)

на каждый запрос до 7 секунд (публичные прокси иногда не радуют таймаутом)

по результату - собственно определение типа прокси, его скорости, анонимности

как то так: https://ra.by/topic/6943-kakie-byvayut-proksi-i-chem-oni-razlichayutsya-opredelenie-tipa-proksi-sredstvami-phpcurl/

lutskboy
На сайте с 22.11.2013
Offline
184
#7

та я так и понял что только перебирать

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий