Очистка страницы PHP - проблема перенаправления cUrl - PullRequest
2 голосов
/ 27 декабря 2010

Я пытаюсь очистить эту ссылку: https://www.bu.edu/link/bin/uiscgi_studentlink/1293403322?College=SMG&Dept=AC&Course=222&Section=C1&Subject=ACCT & MtgDay = & MtgTime = & ModuleName = univschr.pl & KeySem = 20114 & ViewSem = Spring + 2011 & SearchOptionCd = C & SearchOptionDesc = Class + Subject & MainCampusInd =. (Он работает нормально, если вы обращаетесь к нему в браузере.)

Итак, я делаю это, используя этот код:

function curl_classes($url){
  $ch = curl_init();
  $userAgent = 'Googlebot/2.1 (http://www.googlebot.com/bot.html)';
  curl_setopt($ch,CURLOPT_USERAGENT, $userAgent);
  curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
  curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  echo "NOW IM REALY GOING TO: " . $url;
  curl_setopt($ch,CURLOPT_URL,$url);
  curl_setopt($ch, CURLOPT_FAILONERROR, true);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
  curl_setopt($ch, CURLOPT_AUTOREFERER, true);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
  curl_setopt($ch, CURLOPT_TIMEOUT, 50);
  curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);

  $html = curl_exec($ch);
  curl_close($ch);
  unset($ch);
  if (!$html) {
    echo "<br />cURL error number:" .curl_errno($ch);
    echo "<br />cURL error:" . curl_error($ch);
    exit;
  }
  echo htmlspecialchar($html);
} 

EDIT

Хорошо, новая проблема. Кажется, мой код хранения файлов cookie не работает. Я могу отсканировать это как угодно: bu [DOT] edu / link / bin / uiscgi_studentlink / 1293357973? ModuleName = univschr.pl & SearchOptionDesc = Class + Subject & SearchOptionCd = C & KeySem = 20114 & ViewSem = Spring + 2011 & Subject * ACCT & MtgTime = MAYTEGTAY = MAYTAYTIME MAYTAY = MAYTIME MAYTAY = MAYTIME

Но когда я пытаюсь почистить ссылку в верхней части этого поста, я получаю: «Извините, вам нужны куки ...»

Что я делаю не так в своем коде хранения файлов cookie?

Ответы [ 4 ]

2 голосов
/ 27 декабря 2010

Готов поспорить, что у вас есть доступ к HTML. Он выводит HTML-код на экран, и этот HTML-код включает в себя код, который перенаправляет вас на новую страницу.

Попробуйте вывести закодированную версию HTML, чтобы браузер интерпретировал ее как простой текст:

echo htmlspecialchars($html);

Однако, глядя на ваш фактический код: пожалуйста, не претендуйте на звание Google. Вы не робот Google, поэтому ваш сценарий не должен указывать, что вы есть. Если вы вообще включили какой-либо пользовательский агент (и я рекомендую это сделать), сделайте так, чтобы он отражал вашу личность, на случай, если владелец сайта столкнется с проблемами с вашим ботом. Не нужно быть тенистым :) 1006 *

0 голосов
/ 08 октября 2013

Вы можете записать HTML в файл, а затем открыть его в редакторе, если у вас есть раздражающий JavaScript.Или просто отключите JS в вашем браузере.

0 голосов
/ 01 января 2011

I думаю проблема в том, что cUrl не является настоящим браузером , поэтому он не может работать с Javascript и куки. Вместо этого вы можете использовать iMacros для Firefox через интерфейс командной строки . У iMacros есть специальная поддержка web-scraping .

0 голосов
/ 27 декабря 2010

Поскольку вы выводите содержимое в браузере, любой javascript на удаленной странице будет выполнен. Предположительно что-то перенаправляет страницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...