Как отпарсить число выводимое javascript

[Удален]
4527

Парсю списки прокси серверов для дальнейшей проверки прокси чекером. В браузере строка IP:PORT отображается вот так:

150.188.31.2:3128

При просмотре исходного кода вот так:

<font class=cls1>150.188.31.2<font class=cls4>:</font><script type="text/javascript">document.write(""+i+x+k+b)</script></font>

Выход я уже нашел, так как переменные i,x,k,b - они постоянные, то есть в каждой записана определенная цифра (естественно, на странице в подобных участках кода встречаются и другие переменные). То есть я беру переменные и заменяю их соответствующими цифрами, чтобы в результате получить значение порта. Но есть ли какой нибудь другой универсальный способ получать парсингом УЖЕ РЕЗУЛЬТАТЫ работы яваскрипта?

malls
На сайте с 08.08.2005
Offline
255
#1

Есть конечно... Написать эмулятор браузера на PHP (или чем вы там пользуетесь...)

Вообще даже подозреваю о каком сайте идет речь :)

В свое время решал ту же задачу проще - в Фоксе делал JS обработку страниц, которую грузил уже на сервер в виде списка через AJAX...

[Удален]
#2
malls:
Вообще даже подозреваю о каком сайте идет речь

тоже сразу понял что парсят)

если неизменно, так просто подставьте да и все ... долльше топик оформлять :)

[Удален]
#3
malls:
Есть конечно... Написать эмулятор браузера на PHP (или чем вы там пользуетесь...)
Вообще даже подозреваю о каком сайте идет речь :)
В свое время решал ту же задачу проще - в Фоксе делал JS обработку страниц, которую грузил уже на сервер в виде списка через AJAX...

я, просто не так давно программирую на php, поэтому многого еще не знаю))) По поводу эмулятора, я думал что работа через CURL - это и есть эмуляция браузера. За получение контента со страницы у меня работает вот такой код:

$uagent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8";


$ch = curl_init( $urlHideMe );

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // возвращает веб-страницу //http://ru.php.net/manual/en/function.curl-setopt.php
curl_setopt($ch, CURLOPT_HEADER, 0); // не возвращает заголовки
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // переходит по редиректам
curl_setopt($ch, CURLOPT_ENCODING, ""); // обрабатывает все кодировки
curl_setopt($ch, CURLOPT_USERAGENT, $uagent); // useragent
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 50); // таймаут соединения
curl_setopt($ch, CURLOPT_TIMEOUT, 30); // таймаут ответа
curl_setopt($ch, CURLOPT_MAXREDIRS, 10); // останавливаться после 10-ого редиректа



$content = curl_exec( $ch );

Может быть на базе этого можно сделать эмуляцию браузера и как-то запустить javascript?

plamar добавил 10.01.2010 в 10:27

bearman:
тоже сразу понял что парсят)

если неизменно, так просто подставьте да и все ... долльше топик оформлять :)

не цель просто сделать, цель научиться)))

[Удален]
#4
plamar:
Может быть на базе этого можно сделать эмуляцию браузера и как-то запустить javascript?

не сможете

malls
На сайте с 08.08.2005
Offline
255
#5

Ибо CURL штука замечательная - но он эмулирует... (затрудняюсь слова подобрать, а в мануалы смотреть лень) ... не весь браузер. А только то что связано с HTTP протоколом. Между каковым и JS разница как между солнцем и луной...

Иными словами JS - это отдельный язык программирования, эмуляции которого в CURL нет! Равно как и нет в любых других серверных языках...

Или еще иначе - браузеры это гораздо более продвинутые продукты, чем PHP, Perl, ASP и т.п.

Потому (как уже выше писал) проще использовать возможности браузера, чем писать JS эмулятор самому... Хотя за таковой написаннный, например, на пыхе - многие люди готовы будут памятник автору поставить... Применительно к браузерам - Фокс хоть и не самый грамотный (привет тебе T.R.O.N. если будешь читать) - но самый развитый в смысле возможностей использования его внутренней структуры.

malls добавил 10.01.2010 в 10:57

plamar:
Может быть на базе этого можно сделать эмуляцию браузера и как-то запустить javascript?

Только после того как в CURL появится что-то вроде:

curl_setopt($ch, CURLOPT_JS_EMULATE, 1);

Но такого там пока что нет и не планируется...

Все же прочие варианты "эмуляции" браузеров в пыхе/перле на том же курле и основанны...

ЗЫ: применительно к описанному случаю (если я прав на счет сайта) - сделать эмуляцию определенных функций JS по конкретному алгоритму - можно! Но:

1. Это не будет эмулятор JS в принципе.

2. Проще идти другим путем...

ЗЫЗЫ: Парсинг проксей с подобных ресурсов все равно не даст больше 100-150 реально работающих анонимных проксиков в единицу времени... Так что стоит подумать - а надо ли оно?

ЗЫЗЫЗЫ: Бир - не лень тебе не спать в 10 утра по МСК в воскресенье?

A2
На сайте с 03.01.2008
Offline
80
#6
plamar:
Парсю списки прокси серверов для дальнейшей проверки прокси чекером. В браузере строка IP:PORT отображается вот так:
150.188.31.2:3128
При просмотре исходного кода вот так:
<font class=cls1>150.188.31.2<font class=cls4>:</font><script type="text/javascript">document.write(""+i+x+k+b)</script></font>

Выход я уже нашел, так как переменные i,x,k,b - они постоянные, то есть в каждой записана определенная цифра (естественно, на странице в подобных участках кода встречаются и другие переменные). То есть я беру переменные и заменяю их соответствующими цифрами, чтобы в результате получить значение порта. Но есть ли какой нибудь другой универсальный способ получать парсингом УЖЕ РЕЗУЛЬТАТЫ работы яваскрипта?

можно через php ф-ию eval('$port = i+x+k+b;')

Защита от хотлинков. (/ru/forum/488704) Оптимизация скорости загрузки страниц сайта (/ru/forum/435863). ICQ:345100870
FeoOne
На сайте с 27.12.2008
Offline
32
#7

http://awmproxy.com/ - подписка на хороший список прокси (5к-15к в списке онлайн) 50вмз/мес или 30вмз/полмесяца

ewg777
На сайте с 04.06.2007
Offline
225
#8
alexber220:
можно через php ф-ию eval("$port = i+x+k+b;")

Может eval ещё и кофе умеет варить?

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