У меня проблема с локонами. Мне нужно извлечь данные из моего профиля с веб-сайта (действительность учетной записи). Проблема заключается в отсутствии регистрации.
$login = "user";
$password = "passtest";
$ckfile = tempnam("./cookies", "cookies.txt");
$page_login = "http://host.tv/login.html";
$page_download = "http://host.tv/profil.html";
$post_data = "?login=$login&pass=$password";
$agent = "Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3";$headers = array();
$headers[] = 'GET /login.html HTTP/1.1';
$headers[] = 'Host: host.tv';
$headers[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8';
$headers[] = 'Accept-Language: pl-PL,pl;q=0.8,en-US;q=0.6,en;q=0.4';
$headers[] = 'Referer: http://host.tv/login.html';
$headers[] = 'Upgrade-Insecure-Requests: 1';
$headers[] = 'User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36';$connect = curl_init ();curl_setopt($connect, CURLOPT_URL, $page_login);
curl_setopt($connect, CURLOPT_COOKIESESSION, 1);
curl_setopt($connect, CURLOPT_COOKIEJAR, $ckfile);
curl_setopt($connect, CURLOPT_COOKIEFILE, $ckfile);
curl_setopt($connect, CURLOPT_TIMEOUT, 40);
curl_setopt($connect, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($connect, CURLOPT_HEADER, 0);
curl_setopt($connect, CURLOPT_HTTPHEADER, $headers);
curl_setopt($connect, CURLOPT_USERAGENT, $agent);
curl_setopt($connect, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($connect, CURLOPT_POST, 1);
curl_setopt($connect, CURLOPT_POSTFIELDS, $post_data);
curl_exec($connect);curl_setopt($connect, CURLOPT_URL, $page_download);
$page = curl_exec($connect);curl_close($connect);echo $page;
Скрипт не вошел в аккаунты. Пожалуйста помоги.
Вы делаете некоторые ошибки здесь,
1: не создавайте вручную заголовок GET /, пусть curl создаст его для вас с помощью CURLOPT_URL / CURLOPT_HTTPGET
2: вход в систему — это не операция GET, а операция POST.
и отсутствует проверка ошибок возвращаемых значений curl.
Вот пример входа в систему, перехода на страницу профиля и извлечения типа учетной записи (я думаю, что это говорит «бесплатная учетная запись» или что-то, но я не говорю на этом языке), используя hhb_curl из https://github.com/divinity76/hhb_.inc.php/blob/master/hhb_.inc.php
<?php
declare(strict_types=1);
require_once('hhb_.inc.php');
hhb_init();
$hc=new hhb_curl();
$hc->_setComfortableOptions();
//getting a session
$hc->exec('http://host.tv/login.html');
//logging in
$username='user';
$password='passtest';
$hc->setopt_array(array(
CURLOPT_POST=>true,
CURLOPT_POSTFIELDS=>http_build_query(array(
'login'=>$username,
'pass'=>$password,
'logged'=>''//??
))
));
$hc->exec('http://host.tv/login.html');
//TODO: confirm login was successful
$hc->exec('http://host.tv/profil.html');
//extract "account type" from your profile
$domd=@DOMDocument::loadHTML($hc->getResponseBody());
$accountType=trim(preg_replace('/\s+/', "\n", $domd->getElementById("content-top-right")->textContent));
echo $accountType.PHP_EOL;
выход:
Konto:
Standard
Ważne
do:
Brak
Других решений пока нет …