curl访问网页版微信登录界面遇到错误

iceman0142 2018-02-27 01:49:09
最近看到网上有人发的微信机器人源码,下载回来后无法使用,研究了一下代码,发现第一步获取二维码的代码就已经失效了,然而看了好多帖子,好像没人遇到和解决这个问题。代码如下:


<?php
$t=get("https://login.wx.qq.com/jslogin?appid=wx782c26e4c19acffb&redirect_uri=https%3A%2F%2Fwx.qq.com%2Fcgi-bin%2Fmmwebwx-bin%2Fwebwxnewloginpage&fun=new&lang=zh_CN&_=1476606163580");
var_dump($t);

function get($url = '', $cookie = '')
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 从证书中检查SSL加密算法是否存在
curl_setopt($ch, CURLOPT_SSLVERSION, 3);
if($cookie){
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt ($ch, CURLOPT_REFERER,'https://wx.qq.com');
}
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$output = curl_exec($ch);
if ( curl_errno($ch) )
return curl_error($ch);
curl_close($ch);
return $output;
}
?>


根据网上的说法,把CURLOPT_SSLVERSION的值从1换到了3,都是不行,遇到了不同的错误,求大神解决
...全文
368 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
木秀猿林 2018-02-28
  • 打赏
  • 举报
回复
引用 楼主 iceman0142 的回复:
最近看到网上有人发的微信机器人源码,下载回来后无法使用,研究了一下代码,发现第一步获取二维码的代码就已经失效了,然而看了好多帖子,好像没人遇到和解决这个问题。代码如下:

<?php
$t=get("https://login.wx.qq.com/jslogin?appid=wx782c26e4c19acffb&redirect_uri=https%3A%2F%2Fwx.qq.com%2Fcgi-bin%2Fmmwebwx-bin%2Fwebwxnewloginpage&fun=new&lang=zh_CN&_=1476606163580");
var_dump($t);

function get($url = '', $cookie = '')
{
  $ch = curl_init(); 
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
  curl_setopt($ch, CURLOPT_HEADER, 0);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查  
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 从证书中检查SSL加密算法是否存在 
  curl_setopt($ch, CURLOPT_SSLVERSION, 3);
  if($cookie){
      curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
      curl_setopt ($ch, CURLOPT_REFERER,'https://wx.qq.com');
    }
  curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  $output = curl_exec($ch);
  if ( curl_errno($ch) )
    return curl_error($ch);
  curl_close($ch);
  return $output;   
}  
?>
根据网上的说法,把CURLOPT_SSLVERSION的值从1换到了3,都是不行,遇到了不同的错误,求大神解决
你值设置为1报错应该就是你的php版本过低也即是openssl版本过低的原因。 你值设置为2和3报错是微信已经不再使用sslv2和sslv3协议版本所以报错。你可以使用1/4/5/6
iceman0142 2018-02-27
  • 打赏
  • 举报
回复
引用 5 楼 w6248117 的回复:
[quote=引用 4 楼 iceman0142 的回复:] [quote=引用 3 楼 w6248117 的回复:] 你能提供下你php的版本吗?原因我暂时也没找到(应该跟网络安全/防火墙有关)。但是在我这边去掉curl_setopt($ch, CURLOPT_SSLVERSION, 3)是可以成功的。
和版本有关吗,我是用5.2.11测试的,是不是太老了点[/quote] 我的php版本是5.6.30,个人建议你升级一下你的php版本吧!你的php版本可能会导致产生的ssl协议版本过低。 至于你前面说的使用http协议后面还会不会有链接,那是肯定的因为微信已经全部改用https协议了。[/quote] 刚升级了php版本,已经可以用了,谢谢
木秀猿林 2018-02-27
  • 打赏
  • 举报
回复
引用 4 楼 iceman0142 的回复:
[quote=引用 3 楼 w6248117 的回复:] 你能提供下你php的版本吗?原因我暂时也没找到(应该跟网络安全/防火墙有关)。但是在我这边去掉curl_setopt($ch, CURLOPT_SSLVERSION, 3)是可以成功的。
和版本有关吗,我是用5.2.11测试的,是不是太老了点[/quote] 我的php版本是5.6.30,个人建议你升级一下你的php版本吧!你的php版本可能会导致产生的ssl协议版本过低。 至于你前面说的使用http协议后面还会不会有链接,那是肯定的因为微信已经全部改用https协议了。
iceman0142 2018-02-27
  • 打赏
  • 举报
回复
引用 3 楼 w6248117 的回复:
你能提供下你php的版本吗?原因我暂时也没找到(应该跟网络安全/防火墙有关)。但是在我这边去掉curl_setopt($ch, CURLOPT_SSLVERSION, 3)是可以成功的。
和版本有关吗,我是用5.2.11测试的,是不是太老了点
木秀猿林 2018-02-27
  • 打赏
  • 举报
回复
你能提供下你php的版本吗?原因我暂时也没找到(应该跟网络安全/防火墙有关)。但是在我这边去掉curl_setopt($ch, CURLOPT_SSLVERSION, 3)是可以成功的。
iceman0142 2018-02-27
  • 打赏
  • 举报
回复
引用 1 楼 w6248117 的回复:
你可以使用http协议不使用https协议。 如果你一定需要使用https协议你可以去掉curl_setopt($ch, CURLOPT_SSLVERSION, 3);这行代码(或者设置为1)让php自动选择ssl协议版本。
去掉curl_setopt($ch, CURLOPT_SSLVERSION, 3)后依然报错 string(63) "error:14077458:SSL routines:SSL23_GET_SERVER_HELLO:reason(1112)" 用http倒是可以,但是不知道后面还有没有类似这种链接,是什么原因导致的呢
木秀猿林 2018-02-27
  • 打赏
  • 举报
回复
你可以使用http协议不使用https协议。 如果你一定需要使用https协议你可以去掉curl_setopt($ch, CURLOPT_SSLVERSION, 3);这行代码(或者设置为1)让php自动选择ssl协议版本。

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧