V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ChrisTang
V2EX  ›  问与答

如何正确的保存验证码

  •  
  •   ChrisTang · 2017-02-11 11:24:13 +08:00 · 3199 次点击
    这是一个创建于 2827 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在京东某登录页面,需要填写验证码,登录页面每次请求均会生成一个如下的 randomId 。但每次访问时其二维码均会随机变化。也就是说,当访问一次登录页面时,出现下述 randomId ,然后显示一个验证码,当程序获取到这串 ID 后,向其发起请求下载验证码图片,已经和第一次向登录页面请求后收到的图片不同。

    https://oauth.jd.com/CheckCoder?randomId=7.140602943075475E8_1486783086179

    各位大佬有好的解决办法么?在暂时不考虑 selenium 之类的工具情况下。

    8 条回复    2017-02-11 20:43:11 +08:00
    nanlong
        1
    nanlong  
       2017-02-11 11:36:40 +08:00 via iPhone
    截图
    m939594960
        2
    m939594960  
       2017-02-11 11:55:53 +08:00
    randomId 应该是可以随便写的,是防止缓存用的吧
    popok
        3
    popok  
       2017-02-11 13:26:18 +08:00 via iPhone
    @m939594960 对,一般都是这样,真正绑定验证码的一般都在 cookie
    shiny
        4
    shiny  
       2017-02-11 16:35:06 +08:00
    感觉 lz 应该没做过验证码?
    ChrisTang
        5
    ChrisTang  
    OP
       2017-02-11 16:56:21 +08:00
    @nanlong selenium 类工具可以实现截图,但这里暂不考虑这种方式。

    @popok 但通过 Charles 抓包发现, randomid 确实是需要向服务器提交的。
    ChrisTang
        6
    ChrisTang  
    OP
       2017-02-11 16:56:43 +08:00
    @shiny 小白,对验证码知之甚少,还望赐教
    shiny
        7
    shiny  
       2017-02-11 17:21:45 +08:00
    @ChrisTang 一般情况下做验证码,是在生成图片的时候将正确结果写入 SESSION ,同时生成图片。后面 randomId 用于防止缓存图片。

    所以你的情况应该只下载一次到本地;后面再要使用此图片要从本地图片读取;验证过一次后,再重新下载验证码。
    ChrisTang
        8
    ChrisTang  
    OP
       2017-02-11 20:43:11 +08:00
    @shiny 感谢!直接把整个页面保存到本地再读取图片的方式确实可行。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2837 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 13:06 · PVG 21:06 · LAX 05:06 · JFK 08:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.