php,用curl写个post登陆并取回cookies的代码

2025-05-12 09:54:19
推荐回答(5个)
回答1:

要在文件中保存COOKIE的信息,你的curl_setopt($ch, CURLOPT_COOKIEJAR,$cookie_file);中的$cookie_file必须是要保存cookie信息的文件名,最最关键的一点,这个文件名是必须要带绝对路径,否则是不行的,如果文件带上绝对路径的话,会在文件中以Netscape格式保存所有的cookie信息。
还有一个需要说明的,COOKIE必须指定有效期,如果没有指定有效期的话,默认的浏览器关闭COOKIE就失效。这种COOKIE信息在内存中存放,不会写入硬盘的。
这两个方面你都需要考虑。用绝对路径,保存一个长效的COOKIE,肯定可以成功!

回答2:

看看我写的完整例子

$data = array(  
    'username' => 'username',  
    'password' => 'password'  
);  
$cookie = tempnam('./', 'cookie');  
  
$ch = curl_init('http://112.124.24.77/Public/authLogin');  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
curl_setopt($ch, CURLOPT_POST, 1);  
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);  
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);  
  
curl_exec($ch);  
curl_close($ch);

楼主测试时可以把url换成自己测试的url,看看

回答3:

curl也不是万能的, 网站可以屏蔽的

回答4:

cookies 在Header 里, 所以需 curl_setopt($ch, CURLOPT_HEADER, 1); 执行后查看cookie.txt。

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)');
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt"); //saved cookies
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$string = curl_exec ($ch);
curl_close ($ch);

回答5:

缺少一个选项值,