V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
cloverstd
V2EX  ›  Python

写爬虫的时候验证码怎么处理?

  •  
  •   cloverstd ·
    cloverstd · 2013-05-02 22:22:57 +08:00 · 23704 次点击
    这是一个创建于 4011 天前的主题,其中的信息可能已经有所发展或是发生改变。
    怎么在登录的时候输入验证码,并且 POST 提交验证?

    也就是把验证码显示,人来手动识别输入,然后再提交
    但是这样的话,显示的验证是前一个,等提交的时候,需要验证的验证码已经刷新了,于是就验证不了了
    请问这个怎么解决?
    19 条回复    2016-07-06 00:11:21 +08:00
    lfhong
        1
    lfhong  
       2013-05-02 22:30:35 +08:00
    为什么显示的验证码是前一个?应该不会发生这种情况呀
    lfhong
        2
    lfhong  
       2013-05-02 22:33:04 +08:00   ❤️ 1
    我以前搞一个网站的时候,发现那个网站每周更新一次验证码的图片库,然后每个星期之内,验证码都是从这个库里出的。所以我就每周把所有的图都刷一遍,人工识别了以后,更新到数据库里面。这一周就全自动了。

    不过一般网站验证码应该是随机生成的,我弄的那个站是流量太大,所以他们每周更新一次库。
    cloverstd
        3
    cloverstd  
    OP
       2013-05-02 22:33:10 +08:00
    @lfhong 首先是获取验证码的图片,输入验证码,然后验证提交的时候是验证的是下一个验证的图片
    lfhong
        4
    lfhong  
       2013-05-02 22:35:04 +08:00   ❤️ 1
    那可能是你的keep alive或者cookie session什么的没搞好,服务器后端刷新了。
    lfhong
        5
    lfhong  
       2013-05-02 22:37:33 +08:00   ❤️ 1
    或者是POST的时候,没有post该验证码对应的session id什么的
    cloverstd
        6
    cloverstd  
    OP
       2013-05-02 22:40:18 +08:00
    @lfhong 好的,谢谢,我试试。
    v2ex_user001
        7
    v2ex_user001  
       2013-05-03 00:08:16 +08:00
    将验证码截图发到微信,随时随地人工识图~
    Idiosyncratic
        8
    Idiosyncratic  
       2013-05-03 13:46:58 +08:00
    可不可以试试开源的OCR库,来识别一下看看,失败再发微信人工识别
    lazybios
        9
    lazybios  
       2013-05-04 13:26:55 +08:00
    @Idiosyncratic 这个办法好,机器+人肉
    Idiosyncratic
        10
    Idiosyncratic  
       2013-05-04 15:58:01 +08:00
    @lazybios 我没试过,不知道这个法子靠不靠谱,不过有些类型验证码貌似的确可以被OCR识别出来,有些就不行了。。。,据说那种字歪歪扭扭的是很难用机器识别的,而那些只是大小不一的字符的话,机器可以识别
    billzhuang
        11
    billzhuang  
       2013-05-04 17:44:56 +08:00
    歪歪扭扭的OCR很难识别,还有种思路,就是你有个访问量还凑活的站,让你要爬的网站出现的验证码,丢到你自己的站的访问者那边,让他们输,然后你再返回过去。
    lch21
        12
    lch21  
       2013-05-04 22:50:06 +08:00
    有第三方公司专门提供API,人工识别验证码,不过要花钱
    google 的验证码都能破
    daoluan
        13
    daoluan  
       2013-07-05 23:52:12 +08:00
    @v2ex_user001 哈哈,这个办法好好啊,哈哈
    semut
        14
    semut  
       2015-07-24 13:54:11 +08:00
    @lfhong 怎么发现网站的验证码是一周一次更新的啊,感觉有点难度啊
    xiahei
        15
    xiahei  
       2016-05-05 12:34:55 +08:00
    楼主解决了没?我也遇到这问题了!
    cloverstd
        16
    cloverstd  
    OP
       2016-05-05 13:03:05 +08:00
    @xiahei 简单验证码上 PIL
    复杂的网上找打码工具
    xiahei
        17
    xiahei  
       2016-05-05 22:44:57 +08:00
    @cloverstd 不是识别验证码的问题,不知为何,遇到个总是 post 验证码但是实际上 post 的是前一个,验证码已经刷新了。也不知道是为什么。
    cloverstd
        18
    cloverstd  
    OP
       2016-05-05 22:50:10 +08:00
    @xiahei 用 requests 的 session
    或者自己处理 cookies
    kanchi240
        19
    kanchi240  
       2016-07-06 00:11:21 +08:00
    @cloverstd 我用的 requests 的 session ,但是不行,每次都是提示验证码错误,请求验证码、登录 post 的 session 我打印出来了,都是一样的,但是还是在登陆页面
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4902 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 09:48 · PVG 17:48 · LAX 02:48 · JFK 05:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.