Парсер прокси с hidemyass.com от X-scripts

Сбор и анализ всего что можно собрать из сети.
Ответить
Boxster
Сообщения: 5
Зарегистрирован: 27 мар 2012, 12:37

Парсер прокси с hidemyass.com от X-scripts

Сообщение Boxster » 27 мар 2012, 13:13

I need your help, guys!
Может кто-нибудь подлатать скрипт, выложенный на http://x-scripts.com/scripts/parse_proxy2.php
У меня упорно не хочет работать данный скрипт, версия XHE 4.4.4 MT. Не знаю, на чём они там его запускали, но я на следующий день после публикации пытался запустить на 4.1.9, потом и на обновившейся 4.4.4.
Скрипт сначала ругался на строки вида $checkbox->check_by_number(*,*); - Ок, поставил set_checked_by_number...

После замены начинает записывать неотформатированную чушь, как она есть в исходном коде. То бишь "защита" от сайта с проксями сохраняется. Если я не ошибаюсь, то str_replace учитывает регистр, поэтому span, div, display я сделал заглавными, убрал ";" после none и inline и удалил переносы строк через

Код: Выделить всё

$res = str_replace(array("\r","\n"),"",$res);
(вроде бы работает). После этого я каким-то чудом добился результата в 1-2 нормально записанного прокси (и то иногда). Программа ругается на переполнение памяти в строке

Код: Выделить всё

$str = substr($str,0,$ind).substr($str,$ind1+strlen($pref2),strlen($str)-$ind1-strlen($pref2));
Выставлял и 3гб памяти в PHP -> пишет уже про Out of Memory (Fatal error: Out of memory (allocated 810287104) (tried to allocate 536871038 bytes) in...)

Выкладываю слегка скорректированный скрипт http://dump.ru/file/5670436

В PHP я не очень, но вроде бы и сурс-то тут несложный, а разобраться не получается.
Посмотрите кто-нибудь, что там не так? Может надо освобождать память в скрипте? Такое ощущение, что строчка №95 запускается бесконечно, хотя мы её запускаем 3 раза для каждого шага цикла (для 1 прокси).

Аватара пользователя
xscripts
Сообщения: 80
Зарегистрирован: 24 янв 2012, 12:48
Контактная информация:

Re: Парсер прокси с hidemyass.com от X-scripts

Сообщение xscripts » 27 мар 2012, 16:42

Скрипт был написан под версией 4.4.9МТ, поэтому с ним могут возникнуть проблемы в более ранних версиях. Попробуй скачать 12 билд хуманэмулятор.рф/download_mt/4_0/XWeb ... 4_4_12.exe и запустить в нём оригинальный скрипт с сайта.
Я пользуюсь скриптом регулярно проблем с ним не возникало.
http://x-scripts.com/

Код: Выделить всё

<?php
$xhe_host ="127.0.0.1:7010";

require("../Templates/xweb_human_emulator.php");

$browser->navigate("http://x-scripts.com");

$app->quit();?>

Boxster
Сообщения: 5
Зарегистрирован: 27 мар 2012, 12:37

Re: Парсер прокси с hidemyass.com от X-scripts

Сообщение Boxster » 27 мар 2012, 17:25

Поставил 4.4.12 и поверх, и отдельно - то же самое.

Вот первые 10 строк для примера, которые записываются в proxy.txt:

Код: Выделить всё

<SPAN>119<SPAN style="DISPLAY: none">154</SPAN><SPAN></SPAN>.<SPAN>138</SPAN><SPAN>.</SPAN><SPAN style="DISPLAY: inline">64</SPAN><SPAN style="DISPLAY: none">195</SPAN>
<DIV style="DISPLAY: none">125</DIV><SPAN>.</SPAN><SPAN style="DISPLAY: inline">201</SPAN></SPAN>:8909
<SPAN><SPAN>190</SPAN><SPAN style="DISPLAY: none">78</SPAN><SPAN></SPAN>.<SPAN style="DISPLAY: inline">96</SPAN>.<SPAN style="DISPLAY: inline">64</SPAN><SPAN style="DISPLAY: none">52</SPAN><SPAN></SPAN>.<SPAN>234</SPAN></SPAN>:8080
<SPAN><SPAN style="DISPLAY: inline">218</SPAN>
<DIV style="DISPLAY: none">39</DIV>.240<SPAN style="DISPLAY: none">237</SPAN>
<DIV style="DISPLAY: none">140</DIV>.42
<DIV style="DISPLAY: none">200</DIV>.238</SPAN>:3128
<SPAN><SPAN class=50>187</SPAN>
<DIV style="DISPLAY: none">228</DIV>.5
<DIV style="DISPLAY: none">174</DIV>.159.<SPAN class=84>218</SPAN></SPAN>:80

То бишь скрипт в моём случае словно проглатывает отсев и, думаю, это как раз из-за верхнего регистра span, div, display, ";" и переноса строки.

xyu
Сообщения: 91
Зарегистрирован: 06 ноя 2010, 17:47

Re: Парсер прокси с hidemyass.com от X-scripts

Сообщение xyu » 27 мар 2012, 18:27

если дело в регистре

найди в коде

Код: Выделить всё

$res = $table->get_cell_by_number
добавь после

Код: Выделить всё

$res = strtolower($res);

xyu
Сообщения: 91
Зарегистрирован: 06 ноя 2010, 17:47

Re: Парсер прокси с hidemyass.com от X-scripts

Сообщение xyu » 27 мар 2012, 18:28

ps: у меня на компе скрипт работает без изменений кода, версия хумана последняя

Boxster
Сообщения: 5
Зарегистрирован: 27 мар 2012, 12:37

Re: Парсер прокси с hidemyass.com от X-scripts

Сообщение Boxster » 27 мар 2012, 18:53

Тогда

Код: Выделить всё

183<span style="display: none">104.179.86<span style="display: none">150.<span style="display: inline">87:808
33
<div style="display: none">126</div>.206<span style="display: none">148
<div style="display: none">139</div>.<span style="display: inline">19.162:8080
202<span style="display: none">170
<div style="display: none">119</div>.<span style="display: inline">43<span style="display: none">160
<div style="display: none">47</div>.182<span style="display: none">38
<div style="display: none">42</div>.97:54321
При memory_limit = 128MB: Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 62914601 bytes) in E:\Box\Work\Soft\Human Emulator 2\My Scripts\parse_proxy2.php on line 95

При memory_limit = 2048MB: Fatal error: Out of memory (allocated 663486464) (tried to allocate 438304808 bytes) in E:\Box\Work\Soft\Human Emulator 2\My Scripts\parse_proxy2.php on line 95

xyu
Сообщения: 91
Зарегистрирован: 06 ноя 2010, 17:47

Re: Парсер прокси с hidemyass.com от X-scripts

Сообщение xyu » 27 мар 2012, 20:19

Пробуй

Код: Выделить всё

<?php

$xhe_host ="127.0.0.1:7010";

// The following code is required to properly run XWeb Human Emulator
require("E:\Box\Work\Soft\Human Emulator\Templates\xweb_human_emulator.php");

// ////////// настройки скрипта ///////////////////

// путь к файлу с прокси 
$path_proxies="proxy3.txt";

// собирать соксы или прокси. Если стоит false собираем прокси.
$b_get_socks=false;

// текущая страница с результатами
$crnt_page=1;
// количество страниц с которых собирать прокси/соксы
$cnt_pages=1;

// ///////////////////// скрипт /////////////////////////////////////////////////////////

// переходим на сайт с прокси  
$browser->navigate("http://hidemyass.com/proxy-list/");
// wait on browser
$browser->wait_for();

// выставляем Protocol
$checkbox->set_checked_by_number(2,!$b_get_socks);
$checkbox->set_checked_by_number(3,!$b_get_socks);
$checkbox->set_checked_by_number(4,$b_get_socks);

// выставляем Anonymity level
$checkbox->set_checked_by_number(5,false);
$checkbox->set_checked_by_number(6,false);
$checkbox->set_checked_by_number(7,false);
$checkbox->set_checked_by_number(8,false);
$checkbox->set_checked_by_number(9,true);
$checkbox->set_checked_by_number(10,true);

// выставляем Speed and Connection time
$checkbox->set_checked_by_number(11,false);
$checkbox->set_checked_by_number(12,false);
$checkbox->set_checked_by_number(13,true);
$checkbox->set_checked_by_number(14,false);
$checkbox->set_checked_by_number(15,false);
$checkbox->set_checked_by_number(16,true);
// обновить лист 
$button->click_by_name("updateresults");
$browser->wait_for();

// собрать все прокси в файл 
get_proxy_list();

// /////////////////////////////////////////// дополнительные функции ///////////////////////////////////

function get_proxy_list()
{
	global $table, $textfile, $path_proxies;
	// получить прокси из таблицы
	$rows_cnt = $table->get_rows_by_number(0);
    for($ii=1;$ii<$rows_cnt;$ii++) 
    { 
        $res = $table->get_cell_by_number(0,$ii,1,true).":".$table->get_cell_by_number(0,$ii,2,false)."\n"; 
		$res=preg_replace("`<span style=\"display: none[^<]*</span>`isU",'',$res);
		$res=preg_replace("`<div style=\"display: none[^<]*</div>`isU",'',$res);
		$res=strip_tags($res);
		
        $textfile->add_string_to_file($path_proxies,$res,60) ; 
    } 
	
	// go to next page
	if(next_page())
		get_proxy_list();
   
}

// следующая старница
function next_page()
{
      global $anchor, $browser, $app,$crnt_page,$cnt_pages;
     
      // текущая
      $crnt_page=$crnt_page+1;
      if($cnt_pages!=-1)
      {
            // остановить скрипт 
            if($crnt_page>$cnt_pages)
            { 
              return false;
            }
      }
     
      sleep(1);

      // перейти на следующую
      if(!$anchor->click_by_inner_text($crnt_page,true))
      { 
           return false;
      }
       
       // ждём браузер
      $browser->wait_for();
      return true;
}

// Quit
$app->quit();
?>

Boxster
Сообщения: 5
Зарегистрирован: 27 мар 2012, 12:37

Re: Парсер прокси с hidemyass.com от X-scripts

Сообщение Boxster » 27 мар 2012, 20:30

Уже намного лучше, остались лишние переносы. Проблем с памятью больше не выдаёт, а в файл записывает в таком виде:

Код: Выделить всё

220
.48.76.219:8080
116.66.204
.131:3128
61
.232
.6.164:8081
84.41.105
.1:8080
216.155.139
.115:3128
200.68.18
.178:8080

Boxster
Сообщения: 5
Зарегистрирован: 27 мар 2012, 12:37

Re: Парсер прокси с hidemyass.com от X-scripts

Сообщение Boxster » 27 мар 2012, 20:35

Всё, вроде бы сделал. Тело цикла у меня такой получился. То бишь я сначала убираю все переносы, потом перед записью в файл для каждого прокси вставляю перенос. Надеюсь, получилось не муторно для скрипта.

Код: Выделить всё

      $res = $table->get_cell_by_number(0,$ii,1,true).":".$table->get_cell_by_number(0,$ii,2,false)."\n"; 
		$res = str_replace(array("\r","\n"),"",$res);
      $res=preg_replace("`<span style=\"display: none[^<]*</span>`iU",'',$res);
      $res=preg_replace("`<div style=\"display: none[^<]*</div>`iU",'',$res);
      $res=strip_tags($res);
      $res = $res . "\n";
      $textfile->add_string_to_file($path_proxies,$res,60) ; 

Всем огромное спасибо!

protos
Сообщения: 11
Зарегистрирован: 01 июн 2013, 11:33

Re: Парсер прокси с hidemyass.com от X-scripts

Сообщение protos » 01 июн 2013, 11:47

Всем привет.
Помогите разобраться с скриптом. Отрабатывает нормально но записывает в файл все вместе.
http://pastebin.com/x3SCyn50 - вот тут выложил.
Как сделать, что бы в итоге был читаемый список.
Спасибо.

Ответить