Скребок с веб-сайта, для которого требуется логин?

Можно ли это сделать, если так, как? Я хочу очистить данные от xbox.com, но страницы, которые мне нужно очистить, появляются только после успешного входа в систему.

Related of "Скребок с веб-сайта, для которого требуется логин?"

Вам нужно будет пройти необходимую транзакцию входа, отправив данные POST с вашими запросами CURL. Тем не менее, это плохая идея, чтобы очистить данные из-за входа в систему – сайт не поместил эту информацию в общественных местах по какой-либо причине, и для этого вы можете нарушить авторское право,

В большинстве форм регистрации будет установлен файл cookie. Поэтому вы должны использовать класс HTTP, такой как Zend_Http, который может хранить их для дальнейших запросов. Это, по-видимому, так же просто, как:

$client = new Zend_Http_Client(); $client->setCookieJar(); // this is the crucial part for "logging in" // make login request $client->setUri("http://xbox.com/login"); $client->setParameterPost("login", "hackz0r"); $result = $client->request('POST'); // go scraping ... 

Это можно сделать в теории, если у вас есть веб-выборка, которая поддерживает файлы cookie. Похоже, PHP HTTP_Request2 из PEAR может отправлять файлы cookie, если вы предоставите информацию cookie как часть запроса. Все, что вам нужно сделать, это:

  • Отправить запрос на вход
  • Извлечь данные cookie из HTTP-заголовков ответа на вышеуказанный запрос
  • Установите данные cookie на последующие запросы

Обратите внимание, что на многих сайтах будут методы сглаживания различной степени сложности и могут сделать это более сложным. Он также может быть незаконным, аморальным или противоречащим соглашению пользователя сайта.

Существует несколько способов автоматического входа в систему, несколько более сложных, чем другие. xbox.com, вероятно, использует Windows Live API, поэтому вам придется заглянуть в документацию для этого.

PHP-библиотека PGBrowser может сделать это довольно легко. Ниже приведен фрагмент демонстрационного кода, взятый из сопутствующего блога . Я считаю, что это не сработает с веб-сайтом XBox, потому что Microsoft теперь использует SSO, но по-прежнему применима к другим веб-сайтам с содержимым форм входа в систему.

 require 'pgbrowser.php'; $b = new PGBrowser(); $b->useCache = true; $page = $b->get('http://yoursite.com/login'); // Retrieve login web page $form = $page->forms(1); // Retrieve form // Note the form field names have to be specified $form->set('username', "your_username_or_email"); $form->set('password', "your_password"); $page = $form->submit(); // Submit form echo $page->html; // This shows the web page normally displayed after successful login, eg dashboard