PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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&timestR_320_11845@p=&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值,而我正在这样做.这真是头疼!

解决方法:

Google是正确的:)您一遍又一遍地看到curl_init(),这意味着您每次对curl_get和curl_post函数调用都开始新的会话.您应该只初始化一次并传递您检索的资源.那应该解决您的问题.

编辑:随意重写代码来说明:

<?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&timestR_320_11845@p=&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;

大佬总结

以上是大佬教程为你收集整理的php cURL问题全部内容,希望文章能够帮你解决php cURL问题所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: