Граббер прокси с Samair.ru

Для выполнения своих корыстных целей понадобился список актуальных 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

  1. )

    January 17th, 2012

Trackbacks

Add a comment