php curl 模拟登陆https
curl 模拟登陆https 代码如下:
$url = "https://mp.weixin.qq.com/cgi-bin/login?lang=zh_CN"; $cookie_file = tempnam("./tmp","cookie"); $headerArray = array( "Accept:application/json, text/javascript, */*", "Content-Type:application/x-www-form-urlencoded", "Referer:https://mp.weixin.qq.com/" ); $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$url); // 对认证证书来源的检查,0表示阻止对证书的合法性的检查。 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 从证书中检查SSL加密算法是否存在 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//关闭直接输出 curl_setopt($ch,CURLOPT_POST,1);//使用post提交数据 curl_setopt($ch,CURLOPT_POSTFIELDS,$post);//设置 post提交的数据 curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36");//设置用户代理 curl_setopt($ch,CURLOPT_HTTPHEADER,$headerArray);//设置头信息 // curl_setopt($ch, CURLOPT_SSLVERSION, 3); //设定SSL版本 curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);//设置cookie的保存目录,这里很重要,你懂的(cookie你都不存,你以为你是麻花腾啊!) $loginData = curl_exec($ch);//这里会返回token,需要处理一下。 if (curl_errno($ch)) { echo "Errno".curl_error($ch); } curl_close($ch);
如果没有设置ssl版本
报错如下:35-error:14077458:SSL routines:SSL23_GET_SERVER_HELLO:reason(1112);
使用的SSL版本(2 或 3)。默认情况下PHP会自己检测这个值,尽管有些情况下需要手动地进行设置。
curl_setopt($ch, CURLOPT_SSLVERSION, 3);
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: (PHP)用cURL访问HTTPS资源
- 下一篇: php用curl实现https双向认证