Для выполнения своих корыстных целей понадобился список актуальных HTTP-прокси. Нашел неплохой сайт с обновляемым списком проксей. Вручную копировать было лень, готовых грабберов не нашел, пришлось писать свой.
#SAMAIR.RU Proxy Parser
# -*- coding: cp1251 -*-
# (c) http://yegorov-p.ru/
import re
import urllib2
for p in range(1, 10):
if p <= 9:
p = '0' + str(p)
else:
p = str(p)
request = urllib2.Request("http://www.samair.ru/proxy/time-" + p + ".htm")
page = urllib2.urlopen(request).read()
#Выпарсиваем список кодов из букв и цифр
id = re.findall('"text/javascript">\n(.*?)</script></he', page)
#Делаем из словарь
keyz = dict(zip(id[0][::4], id[0][2::4]))
#Выпарсиваем неочищенные строки с адресами прокси
rez = re.findall('<tr><td>(.*?)</td></tr>', page)
#Для каждого элемента делаем следующее:
for i in range(1, len(rez)):
#Выпарсиваем хост
host = re.findall('^(.*?)<script type', rez[i])
#print host[0]
#Выпарсиваем закодированный порт
port = re.findall('write(.*?)</script></td>', rez[i])
splitted_port = port[0][5:-1].split('+')
res_port = ''
for j in range(0, len(splitted_port)):
splitted_port[j] = keyz[splitted_port[j]]
for k in range(0, len(splitted_port)):
res_port = res_port + splitted_port[k]
print host[0] + ":" + res_port
Также был предложен вариант на php
<?php
###########PROXY GRABBER Coding by B@za Scripts for seo - icq 422-379-684###########
//Сохраняет прокси в файл "newproxy.txt"
ini_set("max_execution_time","0");
$array_data = array('01','02','03','04','05','06','07','08','09','10');
for($d=0;$d<count($array_data);$d++){
$url = "http://www.samair.ru/proxy/time-$array_data[$d].htm";
$curl = curl_init();
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_URL, "$url");
$xxx = curl_exec($curl);
$rn = "\n";
preg_match_all("#<tr><td>(.+)<script type=\"text\/javascript\">document.write\(\":\"(.+)\)<\/script>#Umsi",$xxx,$oo);
preg_match("/<script type=\"text\/javascript\">$rn(.+)<\/script>/Umsi",$xxx,$encode);
$enex = explode(';', $encode[1]);
//x=8;o=2;z=7;p=0;k=9;t=1;s=6;l=4;i=5;g=3
$adress="";
for($s=0;$s<count($oo[1]);$s++){
$adress.= $oo[1][$s]."\r\n";
}
for($ss=0;$ss<count($oo[2]);$ss++){
$port= $oo[2][$ss];
$str1 = str_replace($enex[0][0],$enex[0][2],$port);
$str2 = str_replace($enex[1][0],$enex[1][2],$str1);
$str3 = str_replace($enex[2][0],$enex[2][2],$str2);
$str4 = str_replace($enex[3][0],$enex[3][2],$str3);
$str5 = str_replace($enex[4][0],$enex[4][2],$str4);
$str6 = str_replace($enex[5][0],$enex[5][2],$str5);
$str7 = str_replace($enex[6][0],$enex[6][2],$str6);
$str8 = str_replace($enex[7][0],$enex[7][2],$str7);
$str9 = str_replace($enex[8][0],$enex[8][2],$str8);
$str10 = str_replace($enex[9][0],$enex[9][2],$str9);
$str11 = str_replace('+','',$str10);
$explode = explode("\r\n",$adress);
$sss = "$explode[$ss]:"."$str11\r\n";
$fh=fopen("newproxy.txt","a");
fwrite($fh, $sss);
fclose($fh);
}
}
?>

2 comments so far
)
January 17th, 2012Trackbacks
Add a comment