[问] 模拟登陆 和 验证码 的原理和解决思路

2015-06-15 09:38:47 +08:00
 dlpu

需要模拟登陆的地址: 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 自己写识别代码?(之前看过有大神写的这一类的验证码识别技巧,但。。。)

各位可以给些建议什么的么?

3456 次点击
所在节点    PHP
7 条回复
blueset
2015-06-15 10:02:14 +08:00
个人拙见:
1. 拿到的cookie和验证码可以转换成Base64然后放进cookie/session里面,如果超过大小的话也可以存进数据库,然后cookie/session只放一个ID
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协议 对你帮助应该挺多的
ihciah
2015-06-15 12:03:36 +08:00
处理这种验证码最快的方式是直接读图片,二值化,切割,扔libsvm。全程下来不超过30行代码
pupboss
2015-06-15 12:11:33 +08:00
为什么大学都喜欢用ip地址,不用域名 = =我们学校也是
Imyssed
2015-06-15 12:27:49 +08:00
@pupboss 因为管理域名麻烦,不如直接用ip
dlpu
2015-06-16 06:49:07 +08:00
@dai269619118 查看cookie有效期是回话期间,另外将来会多个账号同时登陆的,拿到cookie后存session比较方便一点儿吧?
dai269619118
2015-06-16 10:02:17 +08:00
@dlpu 你可以试试,我是要记住登录 每天需要用到这个帐号 调用对应的帐号 找到cookie 然后就好刷帖子的评论

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/198583

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX