我正在尝试自动登录网站并重定向。我这样做是使用curl这里是我的代码,但它不适合我,我的意思是它不做自动登录,即使我的登录详细信息是正确的我可以直接登录但不能通过curl php。 这是我的代码:
function login($url,$data){
$fp = fopen("cookie.txt","w");
fclose($fp);
$login = curl_init();
curl_setopt($login,CURLOPT_COOKIEJAR,"cookie.txt");
curl_setopt($login,CURLOPT_COOKIEFILE,"cookie.txt");
curl_setopt($login,CURLOPT_TIMEOUT, 40000);
curl_setopt($login,CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($login,CURLOPT_URL,$url);
curl_setopt($login,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
curl_setopt($login,CURLOPT_FOLLOWLOCATION,TRUE);
curl_setopt($login,CURLOPT_POST,TRUE);
curl_setopt($login,CURLOPT_POSTFIELDS,$data);
ob_start();
return curl_exec($login);
ob_end_clean();
curl_close($login);
unset($login);
}
function grab_page($site){
$ch= curl_init();
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
curl_setopt($ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch,CURLOPT_TIMEOUT,40);
curl_setopt($ch,CURLOPT_COOKIEFILE,"cookie.txt");
curl_setopt($ch,CURLOPT_URL,$site);
ob_start();
return curl_exec($ch);
ob_end_clean();
curl_close($ch);
unset($ch);
}
function post_data($site,$data){
$datapost = curl_init();
$headers=array("Expect:");
curl_setopt($datapost,CURLOPT_URL,$site);
curl_setopt($datapost,CURLOPT_TIMEOUT,40000);
curl_setopt($datapost,CURLOPT_HEADER,TRUE);
curl_setopt($datapost,CURLOPT_HTTPHEADER,$headers);
curl_setopt($datapost,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
curl_setopt($datapost,CURLOPT_POST,TRUE);
curl_setopt($datapost,CURLOPT_POSTFIELDS,$data);
curl_setopt($ch,CURLOPT_COOKIEFILE,"cookie.txt");
ob_start();
return curl_exec($datapost);
ob_end_clean();
curl_close($datapost);
unset($datapost);
}
echo login("https://www.jollywallet.com/api/aff","token=00D3A9E8-A9F4-F21B-122E-54AF4B00A0E8&captcha%5Binput%5D=&captcha%5Bid%5D=&type=login&user=armokoj@gmail.com&dist_id=0&dist_sub_id=0&password=4704e86d0ea8a20752a9b882b9a2a5f9®_option=2");
echo grab_page("https://www.jollywallet.com/jollywallet/storelist");
答案 0 :(得分:0)
你没有解释你的错误是什么。
如果您是登录并从服务器获得正确的响应,但是网站重定向或使用另一个卷曲转到另一个页面,但第二个卷曲的响应是登录页面,它回到您的cookie。是的我知道你保存cookie但有些网站使用javascript设置cookie然后必须浏览器加载页面以获得正确的cookie或其他导致cookie不能正常工作的事情
如果您的第一个curl用于登录错误的响应,那么您不会发送一些数据。一些网站使用隐藏输入必须发送它们,在某些情况下隐藏输入的值用javascript填充,你必须自己填写
我希望这可以帮到你