最近在模拟登录的时候愈发的出现登录失败的情况,原因是:微信公众平台登录如果时不时的会对一些异常帐号要求输入验证码才可以登录.
这个时候平台首页的登录逻辑就会经常出现无法登录的状态,前几天写了一个抓取验证码要求用户输入,这个么有做多少代码的调整,主要是让前端写了一写js直接调用微信公众平台的验证码连接了,发现不行,两个方面:
1、imgcode这个表单名打错了
2、在抓包的时候突然发现获取验证码的连接有设置cookie的
发现问题后这些都不是什么大事了,码码代码松松解决:
<?php public function getImgCode($username){ $str = $this -> getcurl()-> get("https://mp.weixin.qq.com/cgi-bin/verifycode?username=".$username."&r=".time())->execute(); header('Content-Type:image/jpeg'); echo $str }
先用curl来请求验证码,顺便将cookie保存下来,当然这里我对curl进行了简单的封装,然后直接将输出抓取到内容,输出header头.
PS:这里遇到一个问题,其实也不算什么问题,可能会经常注意不到,在测试的时候发现有一个warning错误,提示头已经发送,我就很郁闷了.
直接在代码中输出呢,为什么会出现这个呢,文件也是utf-8无bom头的格式,往下一拉才发现当前这个类库中有写 ?> 这个东西,后边正好有一个空行.
其实把重点不在这里,因为就算这个文件的末尾有空行也不会提示头已经发送啊,直接分析到curl类文件中,OK,果然这个文件中又写了 ?>.