我在用curl做一个用户模拟登陆,但是遇到了验证码。我在网上找了很多资料,但都没有解决问题。我想,要模拟登录的思路大概是这样子的:1、获取页面中的表单,模拟填写登录名和密码;2、从验证码图片中得到验证码,模拟填写验证码;(这一步获取验证码解决不了)3、提交cookie和参数进行登录,保存本地cookie;其中第2步遇到了问题,怎么会的验证码?使用图片识别库吗?还是下载让用户手工输入呢?或者还有其他的办法?希望做过这类需求的朋友帮帮忙,谢谢~
2 回答
神不在的星期二
TA贡献1963条经验 获得超6个赞
火速解答手工输入花钱买在线的api在线打码ocr(不准确,简单的验证码可以,但总体上指望不大)你可以去www.uuwise.com这样的网站,去了解一下验证码打码的黑技术
桃花长相依
TA贡献1860条经验 获得超8个赞
如果手工打码,用PHP带Cookie取到验证码的值,再设Header("Content-Type:image/jpeg");吐出来,这里你可以自己结合前端做些小的改善,例如用AjaxLongPoll或webSocket做个实时提醒的小东西,一旦产生新验证码,你的客户端叮咚提示你打验证码,打完,把内容传给CURL类,CURL再模拟你把验证码传给网站。在PHP中这里有个很强悍的模拟库,叫做snoopy.class.php。如果验证码比较简单(无扭曲、无干扰线、非中文、字符长度是定长、每个验证码字符边界距离等同、噪点小、字体不生僻或你能找到),也就是说,你觉得机器可以根据一定模式识别出来,那么自己用PHP写个OCR,或调用扩展,我不知道有没有OCR扩展你自己找找。自己写也简单,我记得是先把图片二值化,再把每个字母的区域拆分,计算黑色所占比例,和已有字体库对比,网上类似教程太多,自己实践。
添加回答
举报
0/150
提交
取消