Intereting Posts
Как отредактировать implode, чтобы он присоединил значения к двум строкам? Как отслеживать, где настройки umask php5-fpm исходят из ubuntu Могу ли я «Mock» время в PHPUnit? Как преобразовать специальные символы в стандартные символы? идентичный md5 для JS и PHP Как я могу запустить команду linux из скрипта PHP Загружать session_start () только в том случае, если сеанс не существует? передавать случайные числа, сгенерированные из Rand (), на другие страницы для проверки Как добавить http: //, если он не существует в URL? Создание нескольких страниц из SQL-запроса Загрузка нескольких файлов в PHP с использованием HTML-формы или cURL Обработка Javascript потока октетов php readfile Что такое целочисленное свойство и что значит «\ 0A \ 0A»? Форма: позвольте пользователю выбрать свою страну (раскрывающийся список) и получить валюту (php) Как загрузить последний файл на FTP с помощью PHP?

Проблемы с php cURL

<?php $email = ""; $password = ""; $useragent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"; //curl get function curl_get($url, $cookiefile) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_USERAGENT, $useragent); curl_setopt($curl, CURLOPT_COOKIEJAR, $cookiefile); curl_setopt($curl, CURLOPT_COOKIEFILE, $cookiefile); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); $data = curl_exec($curl); curl_close($curl); return $data; } //curl post function curl_post($url, $cookiefile, $post) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $post); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_USERAGENT, $useragent); curl_setopt($curl, CURLOPT_COOKIEJAR, $cookiefile); curl_setopt($curl, CURLOPT_COOKIEFILE, $cookiefile); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); $data = curl_exec($curl); curl_close($curl); return $data; } //cookie file $cookiefile = "cookie.txt"; //get url to grab GALX & dsh to login $data = curl_get("https://www.google.com/accounts/ServiceLogin?uilel=3&service=youtube&passive=true&continue=http%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26nomobiletemp%3D1%26hl%3Den_US%26next%3D%252Findex&hl=en_US&ltmpl=sso", $cookiefile); preg_match('/name="GALX"\s*value="(.*?)"/', $data, $galx); preg_match('/name="dsh" id="dsh"\s*value="(.*?)"/', $data, $dsh); //login $data = curl_post("https://www.google.com/accounts/ServiceLoginAuth", $cookiefile, "ltmpl=sso&continue=http%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26nomobiletemp%3D1%26hl%3Den_US%26next%3D%252Findex&service=youtube&uilel=3&dsh=$dsh[1]&ltmpl=sso&hl=en_US&ltmpl=sso&timeStmp=&secTok=&GALX=$galx[1]&Email=$email&Passwd=$password&PersistentCookie=yes&rmShown=1&signIn=Sign+in&asts="); //auth url $data = curl_get("https://www.google.com/accounts/CheckCookie?continue=http%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26nomobiletemp%3D1%26hl%3Den_US%26next%3D%252Findex&hl=en_US&service=youtube&ltmpl=sso&chtml=LoginDoneHtml", $cookiefile); // youtube $data = curl_get("http://www.youtube.com/", $cookiefile); print $data; ?> 

вот мой код, в последней строке, когда я распечатываю содержимое youtube.com, он показывает, что я не зарегистрирован. Кто-нибудь знает, что я делаю неправильно здесь? для входа в google вам нужно захватить значения GALX и dsh, и я делаю это. это такая головная боль!

вот мой код, на последней строке, когда я распечатываю содержимое youtube.com, он показывает, что я не вошел в систему ..

Google прав 🙂 Вы видите, вы curl_init () снова и снова, что означает, что вы начинаете новые сеансы каждый вызов своих функций curl_get и curl_post. Вы должны только инициализировать один раз и пройти по ресурсу, который вы извлекаете. Это должно решить вашу проблему.

EDIT: позволил себе переписать код, чтобы проиллюстрировать:

 <?php $email = ""; $password = ""; //curl get function curl_get( $curl, $url, $cookiefile) { curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_USERAGENT,"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1" ); curl_setopt($curl, CURLOPT_COOKIEJAR, $cookiefile); curl_setopt($curl, CURLOPT_COOKIEFILE, $cookiefile); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); $data = curl_exec($curl); return $data; } //curl post function curl_post( $curl, $url, $cookiefile, $post) { curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $post); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_USERAGENT,"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1" ); curl_setopt($curl, CURLOPT_COOKIEJAR, $cookiefile); curl_setopt($curl, CURLOPT_COOKIEFILE, $cookiefile); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); $data = curl_exec($curl); return $data; } //cookie file $cookiefile = "cookie.txt"; $curl = curl_init( ); //get url to grab GALX & dsh to login $data = curl_get( $curl, "https://www.google.com/accounts/ServiceLogin?uilel=3&service=youtube&passive=true&continue=http%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26nomobiletemp%3D1%26hl%3Den_US%26next%3D%252Findex&hl=en_US&ltmpl=sso", $cookiefile); preg_match('/name="GALX"\s*value="(.*?)"/', $data, $galx); preg_match('/name="dsh" id="dsh"\s*value="(.*?)"/', $data, $dsh); //login $data = curl_post( $curl, "https://www.google.com/accounts/ServiceLoginAuth", $cookiefile, "ltmpl=sso&continue=http%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26nomobiletemp%3D1%26hl%3Den_US%26next%3D%252Findex&service=youtube&uilel=3&dsh=$dsh[1]&ltmpl=sso&hl=en_US&ltmpl=sso&timeStmp=&secTok=&GALX=$galx[1]&Email=$email&Passwd=$password&PersistentCookie=yes&rmShown=1&signIn=Sign+in&asts="); //auth url $data = curl_get( $curl, "https://www.google.com/accounts/CheckCookie?continue=http%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26nomobiletemp%3D1%26hl%3Den_US%26next%3D%252Findex&hl=en_US&service=youtube&ltmpl=sso&chtml=LoginDoneHtml", $cookiefile); // youtube $data = curl_get( $curl, "http://www.youtube.com/", $cookiefile); print $data;