PHP Curl Вход и выборка данных

Я пытаюсь сделать приложение 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' ); } 
  1. войдите в систему и сохраните данные cookie для входа с помощью curl. (убедитесь, что файл cookie.txt существует и доступен для записи).
  2. Сделайте еще один завиток WITH cookie включен и загрузите страницу.

Что-то вроде этого :

 //@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; 

Что-то вроде этого … Дайте мне знать, если это сработает.