我们已经知道如何通过程序模拟登录来生成cookie,然后在爬取需要登录页面的时候带上这个cookie
可以参考上篇文章
这种方式只适用于简单的登录验证方式,如果遇到验证码,token表单字段,还有各种用js加密算法生成的登录字段,模拟登录就会变得异常复杂,为了节省时间,我们一般人工登录后,拷贝Cookie字符串来登录
具体方法为
首页通过人工输入账号密码来登录,然后进入需要爬取的页面,按f12找到cookie
![](https://box.kancloud.cn/06d4527962e4e0fd3e6c04771bcc479c_1848x558.png)
然后接着码代码
```
public function test(){
$ch = curl_init();
$requesturl = 'http://www.test.com.cn/user/info/index/action/getUserInfo/is_ajax/1';
curl_setopt($ch, CURLOPT_URL, $requesturl);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//$cookie = "复制上面Cookie:后面那一串字符串...";
$cookie = 'PHPSESSID=tfh5vbedf7iksj7srgem8vnc22; loginToken=86dc56bdb12f1e371b54dc454c9546d9';
curl_setopt($ch, CURLOPT_COOKIE, $cookie); //使用上面获取的cookies
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$data=curl_exec($ch);
print_r($data);
curl_close($ch);
}
```
以下为返回内容
```
{
"code": "1",
"status": true,
"msg": "获取成功",
"data": {
"userinfo": {
"username": "138****0731",
"mobile": "138****0731",
"truename": "测试环境昵称1",
"nickname": "测试环境昵称",
"sfz_number": "1",
"create_time": 1633041205
}
}
}
下载|复制|删除
当前路径:data.userinfo
```