推荐学习书目
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
lls8672
V2EX  ›  Python

在用 scrapy 爬取天猫商品评价时,爬了几次后发现爬取不了了,在浏览器里打开需要输入验证码,怎么破?

  •  
  •   lls8672 · Apr 25, 2016 · 11070 views
    This topic created in 3702 days ago, the information mentioned may be changed or developed.
    因为评价是动态生成的,所以我自己按照评价页面的链接的规律构造链接,然后进行访问,下载,解析,但是几次之后,就不行了,于是我将自己构造的链接输入浏览器,提示要输验证码。。。可能是被天猫发现了,那要怎么做才能不被发现?
    27 replies    2016-06-20 23:35:58 +08:00
    wind3110991
        1
    wind3110991  
       Apr 25, 2016
    你如果连续用同一个 ip 爬肯定要被 ban 掉吧
    hiboshi
        2
    hiboshi  
       Apr 25, 2016
    很明显被限制了,用 adsl vps 吧
    9hills
        3
    9hills  
       Apr 25, 2016
    用代理池爬,控制速度
    dxwwym
        4
    dxwwym  
       Apr 25, 2016 via iPhone
    每天数以百万的新评价,能评的过来?
    pubby
        5
    pubby  
       Apr 25, 2016
    降低访问频率!

    1. 登录账号,每个账号用一个独立的代理 ip ,控制访问频率(大概 10 秒一次,出现验证码几率会降低)
    2. 不登录账号,每个代理 ip 控制访问频率,需要很低频率才行,否则就不是验证码了而是直接让你登录,所以控制访问频率+切换 ip 吧。
    sosozzzx
        6
    sosozzzx  
       Apr 25, 2016
    神箭手云爬虫开放开发者功能啦~
    海量规则免费使用, 24 小时云端采集,
    舆情监控即时更新,自动同步多个网站,
    5 行代码创建专属于你的云爬虫!
    odirus
        7
    odirus  
       Apr 25, 2016   ❤️ 1
    selenium ,通过 chromedriver 连接 chrome 浏览器。

    解析也面前,代码里面检测是否出现了验证码页面或者弹窗,出现的时候使用 sleep 函数,等待人肉输入验证码,验证码输入完成之后,程序再接着运行。阿里云再神也识别不出你来。

    哈哈哈。之前在爬一个 google 验证吗的网站时就这么干的。
    hadoop
        8
    hadoop  
       Apr 25, 2016
    @hiboshi adsl vps 可以 linux 命令行拨号,对外提供代理 api 接口吗
    gimp
        9
    gimp  
       Apr 25, 2016
    selenium + 人肉打码
    azh7138m
        10
    azh7138m  
       Apr 25, 2016
    @sosozzzx [神箭手平台服务协议] 这个没有啊,根本看不到这个
    pubby
        11
    pubby  
       Apr 25, 2016   ❤️ 1
    @hadoop 可以的

    一般安装了 rp-pppoe ,没有的话自己装一下

    pppoe-setup 设置一下账号密码

    ifup ppp0 拨号

    重拨换 ip 用

    ifdown ppp0 && sleep 5 && ifup ppp0


    这些 vps 是这样的:
    给你一个管理 ip 和端口,然后 ssh -p <端口> root@管理 IP 连上去 拨号

    拨号后 ppp0 上会有动态 ip

    然后开个 socks5 或者 http 代理 (可能需要处理一下 iptables 规则)

    本地用的时候记得连那个 动态 ip : 代理端口
    hadoop
        12
    hadoop  
       Apr 25, 2016
    @pubby 老司机! 有推荐的商家推荐吗? 首富家分不清哪个好哪个坏
    fhefh
        13
    fhefh  
       Apr 25, 2016
    odirus
        14
    odirus  
       Apr 25, 2016
    @fhefh 不是哒, at 错了吧?

    selenium 人肉打码,任何验证码都可破,就是效率低。
    billion
        15
    billion  
       Apr 25, 2016
    @odirus 我以前试过使用 selenium+angurjs ,爬一个页面要 2 分钟,太慢了。
    odirus
        16
    odirus  
       Apr 25, 2016
    @billion 嗯, selenium 主要是用于爬那些变态页面,例如 新浪微博(大部分 JSONP ),某些采用 google 验证码的网站(既要鼠标点击又要选择里面的文字),好处是能够像普通浏览器一样渲染整个页面,还能通过 chromedriver, firefoxdriver 等连接器连接浏览器,做到一步步地可视化调试,调试完成后再换成 phantomjs 这种无界面浏览器部署在服务器上。
    pubby
        17
    pubby  
       Apr 25, 2016 via Android
    @odirus 淘宝登录时滑块验证能搞定吗?
    odirus
        18
    odirus  
       Apr 25, 2016
    @pubby 是这样的。如果通过连接器连接 chrome 、 firefox 的话,是自动打开一个干净的浏览器界面(没有 cookie 、历史纪录等等),你可以在程序里面检测是否有验证码,如果有则程序等待(这个时候可以手动操作浏览器的,你就可以拖动滑块了),通过验证码验证之后的后续的逻辑再让程序自动完成。

    如果你爬慢一点,可以登录验证一次,自动执行很多天,过几天检测到验证码界面时自动发短信到手机上嘛。
    pubby
        19
    pubby  
       Apr 25, 2016
    @odirus 嗯,抓取频率高了还是比较麻烦,输验证码会比清 cookie 改 ua ,重新登录频繁。

    如果要连续不间断高频次抓取,需要不停输验证码以及重新登录,搞得我都想做个简单 app 带身边随时人工操作介入了 -_-
    niceworld
        20
    niceworld  
       Apr 25, 2016
    你可以写个下载中间件,每抓个页面就更换一个代理,代理 ip 可以找免费分享的那种,抓个 1 、 2 千个,定时验证下就好了,基本可以用 3-5 天了
    herozzm
        21
    herozzm  
       Apr 25, 2016 via Android
    @9hills 求代理池
    geek123
        22
    geek123  
       Apr 26, 2016
    人工输入验证吗是终极解决办法,自动验证识别率太低。。
    ZnZt
        23
    ZnZt  
       Apr 26, 2016
    速度慢一点, 去找点代理
    yuriko
        24
    yuriko  
       Apr 26, 2016
    你这么玩肯定被干啊……
    人家反爬虫工作也不是吃素的啊……
    laodao
        26
    laodao  
       Jun 20, 2016
    @pubby 你好, adsl vps 感觉只能实现本地代理,因为在内网,感觉没法给其他服务器提供代理。不知道这种拨号服务器有办法实现给其他外网服务器提供代理吗?
    pubby
        27
    pubby  
       Jun 20, 2016 via Android
    @laodao ADSL 拨号后有外网 IP 的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2846 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 90ms · UTC 08:48 · PVG 16:48 · LAX 01:48 · JFK 04:48
    ♥ Do have faith in what you're doing.