V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dlpu
V2EX  ›  PHP

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

  •  
  •   dlpu · 2015-06-15 09:38:47 +08:00 · 3310 次点击
    这是一个创建于 3243 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    7 条回复    2015-06-16 10:02:17 +08:00
    blueset
        1
    blueset  
       2015-06-15 10:02:14 +08:00 via Android
    个人拙见:
    1. 拿到的cookie和验证码可以转换成Base64然后放进cookie/session里面,如果超过大小的话也可以存进数据库,然后cookie/session只放一个ID
    2. 这种验证码的识别貌似网上一搜一大把……
    dai269619118
        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
        3
    ihciah  
       2015-06-15 12:03:36 +08:00
    处理这种验证码最快的方式是直接读图片,二值化,切割,扔libsvm。全程下来不超过30行代码
    pupboss
        4
    pupboss  
       2015-06-15 12:11:33 +08:00
    为什么大学都喜欢用ip地址,不用域名 = =我们学校也是
    Imyssed
        5
    Imyssed  
       2015-06-15 12:27:49 +08:00 via Android
    @pupboss 因为管理域名麻烦,不如直接用ip
    dlpu
        6
    dlpu  
    OP
       2015-06-16 06:49:07 +08:00
    @dai269619118 查看cookie有效期是回话期间,另外将来会多个账号同时登陆的,拿到cookie后存session比较方便一点儿吧?
    dai269619118
        7
    dai269619118  
       2015-06-16 10:02:17 +08:00
    @dlpu 你可以试试,我是要记住登录 每天需要用到这个帐号 调用对应的帐号 找到cookie 然后就好刷帖子的评论
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2334 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 08:55 · PVG 16:55 · LAX 01:55 · JFK 04:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.