Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Цепь редиректов и затыки с курлом.
Форумы портала PHP.SU » » Работа с сетью » Цепь редиректов и затыки с курлом.

Страниц (1): [1]
 

1. abra2014 - 28 Октября, 2014 - 21:10:44 - перейти к сообщению
Всем привет.
Задача состоит в следующем.
Есть ссылки
http://popmyads[dot]com/serve/3848/3[dot][dot][dot]c3BlcGl0by5jb20v
http://clkmon[dot]com/adServe/sa?cid[dot][dot][dot]scarga%20directa

Значит, дело в том, что каждый раз заходя по одной из ссылок происходит цепочка редиректов, но каждый раз по разному, и в конечном итоге заходя с одного и того же айпи, и с одного и того же юзерагента получаем разные урлы.
Пробовал отлавливать заголовки курлом, установил хождение по редиректам, но до конечного редиректа не ходит, потому что иногда редирект есть в локейшене, а иногда в яваскрипе прописал черех хреф.локейшн.
И ещё, я так и не понял как отловить конечные урлы запуская несколько раз в терминале.
Заходя через браузер меня редиректит на разные урлы, а через терминал бросает на один и тот же. Получается что с куками что-то связано.
Кто что скажет по этому поводу, может приходилось сталкиваться с этим??
Вот собственно код
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. //подключаю файл с юзерагентами, рендомом подставляю каждый раз при заходе
  3. include("random-user-agent.php");
  4. $ch = curl_init();
  5. curl_setopt($ch, CURLOPT_URL, 'http://clkmon.com/adServe/sa?cid=PORPOP&pid=&q=estrenos%2C%20peliculas%2C%20series%2C%20musica%2C%20software%2C%20ebooks%2C%20descarga%20directa');
  6. curl_setopt($ch, CURLOPT_USERAGENT,random_user_agent());
  7. curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
  8. curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
  9. //curl_setopt($ch, CURLOPT_PROXY, "186.109.91.3:8080");
  10. curl_setopt($ch, CURLOPT_HEADER, true);
  11. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  12. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  13. curl_setopt($ch, CURLOPT_NOBODY, false);
  14. curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cooka.txt');
  15. $page = curl_exec($ch);
  16. if(!$page)
  17. {
  18.  echo curl_error($ch);
  19. }
  20. else
  21. {
  22.  echo $page;
  23. }
  24. preg_match_all('#url=(.+)#i', $page, $matches);
  25. var_dump($matches);
  26. ?>
:

Получается что мне как бы должно вываливать всю цепь редиректов, но оно идёт до первого и получается что один заголовок присылает 302, а второй 200, но у него редирект стоит яваскриптом, я пытался отлавливать его через регулярное выражение, хотя, по идее курл должен ходить до конца. И ещё нужно будет через прокси пробовать, но это уже потом.
2. abra2014 - 19 Января, 2015 - 12:29:48 - перейти к сообщению
у кого какие мысли?
3. Мелкий - 19 Января, 2015 - 12:54:13 - перейти к сообщению
abra2014 пишет:
по идее курл должен ходить до конца

Он прошёл до конца.
Всё. 200 получили в ответ, редиректы кончились.
4. abra2014 - 19 Января, 2015 - 13:00:56 - перейти к сообщению
Мелкий пишет:
abra2014 пишет:
по идее курл должен ходить до конца

Он прошёл до конца.
Всё. 200 получили в ответ, редиректы кончились.

да, 200 получили, но внутри исходника вшит код на яваскрипте, локейшн.хреф или экшн в форму прописан, и далее автосабмит формы.
Вылавливать регулярными не всегда получается.
5. Мелкий - 19 Января, 2015 - 13:30:14 - перейти к сообщению
И что? Это уже не курла дело.

Раз надо эмулировать браузер, то и возьмите соответствующую тяжелую артиллерию в виде selenium или phantomjs.
6. Ch_chov - 19 Января, 2015 - 14:39:50 - перейти к сообщению
или SlimerJS
7. abra2014 - 21 Января, 2015 - 14:45:44 - перейти к сообщению
вот запускаю скрипт через фантом дж с

CODE (javascript):
скопировать код в буфер обмена
  1. console.log('Loading a web page');
  2. var page = require('webpage').create();
  3. var url = 'http://popmyads.com/go/3848/3172/aoapgfxobllppri/aHR0cCUzQS8vd3d3LnBlbGljdWxhc3BlcGl0by5jb20v';
  4. page.open(url, function (status) {
  5.        
  6.     page.injectJs('D://phantomjs-1.9.8-windows/jquery-1.8.3.min');
  7.     var title = page.evaluate(
  8.       function () {
  9.  
  10.          return document.URL;
  11.      }
  12.  
  13. );  
  14.    console.log( "- current url is " + title );
  15.     phantom.exit();
  16.  
  17. });
  18.  
  19.  
  20.  


скрипт выплюнул ссылку. Я её вставляю в браузер, и дальше идут редиректы.
Кто может помочь?

 

Powered by ExBB FM 1.0 RC1