我在用curl做一个用户模拟登陆,但是遇到了验证码。我在网上找了很多资料,但都没有解决问题。我想,要模拟登录的思路大概是这样子的:
1、获取页面中的表单,模拟填写登录名和密码;
2、从验证码图片中得到验证码,模拟填写验证码;(这一步获取验证码解决不了)
3、提交cookie和参数进行登录,保存本地cookie;
其中第2步遇到了问题,怎么会的验证码?使用图片识别库吗?还是下载让用户手工输入呢?或者还有其他的办法?
希望做过这类需求的朋友帮帮忙,谢谢~
1.如果手工打码,用PHP带Cookie取到验证码的值,再设Header("Content-Type: image/jpeg");吐出来, 这里你可以自己结合前端做些小的改善,例如用Ajax Long Poll或webSocket做个实时提醒的小东西,一旦产生新验证码,你的客户端叮咚提示你打验证码,打完,把内容传给CURL类,CURL再模拟你把验证码传给网站。 在PHP中这里有个很强悍的模拟库,叫做snoopy.class.php。
2.如果验证码比较简单(无扭曲、无干扰线、非中文、字符长度是定长、每个验证码字符边界距离等同、噪点小、字体不生僻或你能找到),也就是说,你觉得机器可以根据一定模式识别出来,那么自己用PHP写个OCR,或调用扩展,我不知道有没有OCR扩展你自己找找。自己写也简单,我记得是先把图片二值化,再把每个字母的区域拆分,计算黑色所占比例,和已有字体库对比,网上类似教程太多,自己实践。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。