Я пытаюсь сделать приложение php, которое регистрируется в Comcast здесь
https://login.comcast.net/login
и загрузить файл
http://xfinity.comcast.net/
помня печенье.
Это то, что у меня есть до сих пор:
<?php $username="username"; $password="password"; $url="https://login.comcast.net/login"; $cookie="cookie.txt"; $postdata = "user=".$username."&passwd=".$password."&rm=2&deviceAuthn=false&forceAuthn=true&s=ccentral-cima&r=comcast.net&continue=http://xfinity.comcast.net/"; $ch = curl_init(); curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"); curl_setopt ($ch, CURLOPT_TIMEOUT, 60); curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 0); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie); curl_setopt ($ch, CURLOPT_REFERER, $url); curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata); curl_setopt ($ch, CURLOPT_POST, 1); $result = curl_exec ($ch); echo $result; curl_close($ch); file_put_contents("page.txt",$ch); echo $cookie; ?>
Что этот скрипт делает, это просто вход в систему и показать мне
https://customer.comcast.com/Public/Home.aspx
как я был вошел в систему, а затем, когда я нажимаю Email, например, он просто относится ко мне, как будто я никогда не входил в систему, запрашивая у меня имя пользователя и пароль. Все, что я хочу, – это получить количество писем, сохранив http://xfinity.comcast.net/ (с файлом cookie) на странице. Txt
Это возможно?
Обязательно установите CURLOPT_COOKIEFILE
. Jar – это то, что записано, файл отправляется на сервер.
Кроме того, если вы хотите сделать оба в одном запросе, вам нужно дважды запросить сервер. Однажды войдите в систему (с CURLOPT_COOKIEJAR
) и второй раз, чтобы получить фактический контент (с CURLOPT_COOKIEFILE
).
Кроме того, нет необходимости устанавливать CURLOPT_FOLLOWLOCATION
в false
поскольку логин обычно перенаправляет. Я бы изменил его на true
, просто чтобы убедиться.
Прежде всего, было бы удобно, если бы вы вставили завитки в функцию.
Теперь шаги должны быть довольно легкими.
РЕДАКТИРОВАТЬ
Убедитесь, что файл cookie.txt находится в том же каталоге, что и ваш php-файл. и убедитесь, что он доступен для записи. (chmod 777), чтобы проверить:
if (is_writable('cookie.txt')) { echo 'The cookie is writable'; } else { echo 'The cookie is not writable'; ## start by making it writable : if (! chmod ( 'cookie.txt', 0777 )) die ( 'chmod() failed on file cookie.txt' ); }
Что-то вроде этого :
//@param string $url : url of page/file //@param bool $binary : binary file. //@param string $post : post data in format : formvar1=VAR1&formvar2=VAR2 //@param string $cookie : cookie file. function curl($url ,$binary=false,$post=false,$cookie =false ){ $ch = curl_init(); curl_setopt ($ch, CURLOPT_URL, $url ); curl_setopt ($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_REFERER, $url); curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate'); curl_setopt($ch, CURLOPT_AUTOREFERER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_TIMEOUT, 60); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); if($cookie){ $agent = "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)"; curl_setopt($ch, CURLOPT_USERAGENT, $agent); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie); } if($binary) curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); if($post){ curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); } return curl_exec ($ch); }
Затем войдите в систему:
$username="username"; $password="password"; $url="https://login.comcast.net/login"; $cookie="cookie.txt"; $postdata = "user=".$username."&passwd=".$password."&rm=2&deviceAuthn=false&forceAuthn=true&s=ccentral-cima&r=comcast.net&continue=http://xfinity.comcast.net/"; // function $ch = curl($url,false,$postdata,$cookie);
Вход в систему? проверьте файл cookie.txt для контента.
Шаг 2, получите вторую страницу.
$url ='http://xfinity.comcast.net/' $cookie="cookie.txt"; $ch =curl($url,false,false,$cookie); echo $ch;
Что-то вроде этого … Дайте мне знать, если это сработает.