[问] 模拟登陆 和 验证码 的原理和解决思路 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dlpu
V2EX    PHP

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

  •  
  •   dlpu 2015 年 6 月 15 日 3946 次点击
    这是一个创建于 3873 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需要模拟登陆的地址: http://210.30.48.14:8080/index.jsp (暴漏了我的大学。。。)
    登陆后的首页地址: http://210.30.48.148080/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 自己写识别代码?(之前看过有大神写的这一类的验证码识别技巧,但。。。)

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

    7 条回复    2015-06-16 10:02:17 +08:00
    blueset
        1
    blueset  
       2015 年 6 月 15 日 via Android
    个人拙见:
    1. 拿到的cookie和验证码可以转换成Base64然后放进cookie/session里面,如果超过大小的话也可以存进数据库,然后cookie/session只放一个ID
    2. 这种验证码的识别貌似网上一搜一大把……
    dai269619118
        2
    dai269619118  
       2015 年 6 月 15 日
    思路是对的
    前几天给女朋友写的一个运营工具 很多数据要抓。
    模拟登录也是 也是自己填账号密码和验证码
    拿到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
        3
    ihciah  
       2015 年 6 月 15 日
    处理这种验证码最快的方式是直接读图片,二值化,切割,扔libsvm。全程下来不超过30行代码
    pupboss
        4
    pupboss  
       2015 年 6 月 15 日
    为什么大学都喜欢用ip地址,不用域名 = =我们学校也是
    Imyssed
        5
    Imyssed  
       2015 年 6 月 15 日 via Android
    @pupboss 因为管理域名麻烦,不如直接用ip
    dlpu
        6
    dlpu  
    OP
       2015 年 6 月 16 日
    @dai269619118 查看cookie有效期是回话期间,另外将来会多个账号同时登陆的,拿到cookie后存session比较方便一点儿吧?
    dai269619118
        7
    dai269619118  
       2015 年 6 月 16 日
    @dlpu 你可以试试,我是要记住登录 每天需要用到这个帐号 调用对应的帐号 找到cookie 然后就好刷帖子的评论
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1033 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 19:00 PVG 03:00 LAX 11:00 JFK 14:00
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86