需要模拟登陆的地址: http://210.30.48.14:8080/index.jsp (暴漏了我的大学。。。)
登陆后的首页地址: http://210.30.48.14:8080/ACTIONLOGON.APPPROCESS
验证码地址: http://210.30.48.14:8080/ACTIONVALIDATERANDOMPICTURE.APPPROCESS
先说说我的思路,不知道对不对哈,用的php curl:
第一步,request 验证码地址,存储验证码返回的cookies和验证码图片;
第二步,由用户自己填写用户名、密码、验证码,并加上第一步获取的cookies一起request首页地址;
第三步,存储request首页地址返回的cookies;
第四步,拿到cookies就可以做其他事了。。。
如果我的思路没错的话,问题是:
1. 第一步中怎么存储cookies呢?放到session里么还是存储在本地一个文件里?验证码肯定是只能请求一次的,是要把验证码图片存储在本地么?如果有多个用户通过模拟登陆页面进行登陆,怎么解决呢?
2. 验证码貌似很容易机器识别,OCR or 自己写识别代码?(之前看过有大神写的这一类的验证码识别技巧,但。。。)
各位可以给些建议什么的么?
1
blueset 2015-06-15 10:02:14 +08:00 via Android
个人拙见:
1. 拿到的cookie和验证码可以转换成Base64然后放进cookie/session里面,如果超过大小的话也可以存进数据库,然后cookie/session只放一个ID 2. 这种验证码的识别貌似网上一搜一大把…… |
2
dai269619118 2015-06-15 10:13:58 +08:00
思路是对的
前几天给女朋友写的一个运营工具 很多数据要抓。 模拟登录也是 也是自己填账号密码和验证码 拿到cookie以后 干该干的事情了 你应该下在一个监控http的请求的工具,看下你自己请求的链接和他请求的链接参数是不是一样 https://github.com/lzz29/108sq/blob/master/admin/controllers/DaiSqUser.php 1,获取验证码方法: getImageCode 获取验证码 就有cookie返回了 所以这里就要开始保存cookie 2,登录方法: login 一般来说登录就直接会返回cookie了,我写的这里他跳了好几个链接才保存下来 你看你的程序接口 如果获取到cookie了 就可以直接停止程序了,我会把cookie保存在本地 下次不用登录就好直接调用了。 3, 带着你的cookie访问任何页面 test方法 sqcurl 函数: https://github.com/lzz29/108sq/blob/master/admin/helpers/sqcurl_helper.php 写爬虫挺有意思的 写完最好去好好学学http协议 对你帮助应该挺多的 |
3
ihciah 2015-06-15 12:03:36 +08:00
处理这种验证码最快的方式是直接读图片,二值化,切割,扔libsvm。全程下来不超过30行代码
|
4
pupboss 2015-06-15 12:11:33 +08:00
为什么大学都喜欢用ip地址,不用域名 = =我们学校也是
|
6
dlpu OP @dai269619118 查看cookie有效期是回话期间,另外将来会多个账号同时登陆的,拿到cookie后存session比较方便一点儿吧?
|
7
dai269619118 2015-06-16 10:02:17 +08:00
@dlpu 你可以试试,我是要记住登录 每天需要用到这个帐号 调用对应的帐号 找到cookie 然后就好刷帖子的评论
|