Граббер socks5 с mrThe.name
4 февраля 2010
| Метки: PHP, socks, добыча прокси, сайты с прокси
6 декабря ‘09 года на бложке каваного лоли-кодера mr.The появилась запись о включении сервиса бесплатных socks proxy на который я как администратор Proxylife не смог не обратить внимания.
Естественно у меня появилось желание грабить эти самые списки довольно быстрых соксов (ботнет барыжит чтоль?). В тот же день после “похвастаней” mr.The мне в асьюку про средства защиты от парсеров у меня то ли желания не было.. то ли ещё что, собственно не стал что либо рассматривать и копаться в коде.
<?php
/**
Функция получения страницы с использованием курла
**/
function get_page($url,$post='',$ref='',$cookie='',$ua="Opera 9.64 (compatible; MSIE 6.0; Windows NT 5.1; ru)",$proxy='') {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERAGENT,$ua);
curl_setopt($ch, CURLOPT_REFERER,$ref);
curl_setopt($ch, CURLOPT_PROXY , $proxy);
if($post!==''){
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
$headers [] = "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1";
$headers [] = "Accept-Language: ru,en;q=0.9,ru-RU;q=0.8";
$headers [] = "Connection: close";
$headers [] = "Cache-Control: no-store, no-cache, must-revalidate";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HEADER, 0); // тут лучше поставить 0, если куки не нужны
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
@curl_setopt($ch, CURLOPT_COOKIE, $cookie);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 200);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 200);
$result = curl_exec($ch);
curl_close($ch);
if($result)return $result; else return false;
}
$page=get_page("http://mrthe.name/socks/index.php"); // Логинемся к проксикам с печеньками
preg_match_all("|socks proxy: <b>(.*)</b>|U", $page, $all, PREG_SET_ORDER); // Получаем количество кавайненьких соксов
// Спешел фор mr.The, ты трололо ^_^
$unique_start = '"+"';
$unique_end = ':"+(';
preg_match_all('/'.preg_quote($unique_start,'/').'(.*)'.preg_quote($unique_end, '/').'/Us', $page, $proxy_ip, PREG_SET_ORDER);
preg_match_all('/'.preg_quote('+(','/').'(.*)'.preg_quote(')+', '/').'/Us', $page, $proxy_port, PREG_SET_ORDER);
$i = 0;
$m = $all[0][1]-1;
while ($i <= $m) {
$n = $i++;
$r = explode('+', $proxy_port[$n][1]);
$proxy = str_replace(".", ".", $proxy_ip[$n][1]);
$port = $r[0]+$r[1];
echo $proxy.":".$port."<br />\n";
}
?>
Далее с полученным листом прокси можно вытворять всё что душе угодно, главное чтобы по назначению..
Пример функции:
Популярность: 18%

Редиска! T_TЛадно, через пару дней обновлю алгоритм, сейчас некогда))
ИМХО любое шифрование через скрипты подвластна расшифровки, тут дело за временем и умением кодера. “Кому надо, тот всё сграбит”.
Время на расшифровку должно значительно превышать время на шифрование. Так-то.