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
lixuda
V2EX  ›  Python

Python 爬虫被屏蔽有好的办法吗?

  •  
  •   lixuda · 2018-04-18 10:34:50 +08:00 · 6867 次点击
    这是一个创建于 2418 天前的主题,其中的信息可能已经有所发展或是发生改变。

    除了用 selenium 模拟外,其他还有好的办法吗?

    第 1 条附言  ·  2018-04-18 17:44:50 +08:00
    补充:requests get 几次就返回不到正确 html,随机 user-agent,要么填验证码,要么提示我是爬虫。用浏览器访问,一直都可以。没有封 ip。selenium 也要加载久一点。
    34 条回复    2018-04-23 14:52:46 +08:00
    sunwei0325
        1
    sunwei0325  
       2018-04-18 10:42:57 +08:00
    selenium 一般用来爬一些 js 搞上去的内容, 而不是解决爬虫被屏蔽的, 解决被屏蔽的方法一般是代理 ip 池, cookie 池, 随机 user-agent 等
    lixuda
        2
    lixuda  
    OP
       2018-04-18 10:53:36 +08:00
    @sunwei0325 ip 没有封,user-agent 随机无效,只能打开浏览器访问就可以。
    leir
        3
    leir  
       2018-04-18 10:54:53 +08:00 via iPhone
    什么网站?
    lixuda
        4
    lixuda  
    OP
       2018-04-18 10:57:50 +08:00
    est
        5
    est  
       2018-04-18 11:13:46 +08:00
    技术不过关啊。。。。
    lixuda
        6
    lixuda  
    OP
       2018-04-18 11:18:09 +08:00
    @est 是的
    huweic
        7
    huweic  
       2018-04-18 11:24:46 +08:00 via Android
    该有的 Header 都加上
    kimchan
        8
    kimchan  
       2018-04-18 11:26:52 +08:00
    mark, 之前也是遇过一个网站, 用爬虫各种伪装了都不行, 用浏览器访问却可以. 最后也是只能用 selenium😂😂. 看看大神们有什么更好的方法
    lixuda
        9
    lixuda  
    OP
       2018-04-18 11:34:49 +08:00
    @huweic 应该不是,selenium 我也要加载很久才可以获得。提早获得也是提升爬虫页面。
    magicO
        10
    magicO  
       2018-04-18 11:42:34 +08:00 via Android
    抓包看看浏览器访问时的包
    alen
        11
    alen  
       2018-04-18 11:59:44 +08:00
    限速控制并发
    takato
        12
    takato  
       2018-04-18 12:23:24 +08:00
    把并发间隔整形成高斯分布试试。
    wqzjk393
        13
    wqzjk393  
       2018-04-18 12:27:53 +08:00 via iPhone
    顺便问一下,像斗鱼这种第一次爬就直接屏蔽掉,返回 404 的,该怎么处理?
    lixuda
        14
    lixuda  
    OP
       2018-04-18 12:30:22 +08:00
    @alen 没有并发,就访问了 2-3 次就这样。并且间隔很久
    em70
        15
    em70  
       2018-04-18 12:41:04 +08:00
    说明伪装得不像,一般防盗链就 user-agent 和 referer 两个参数来判断,这两个都不填,傻子都知道你是机器人
    lixuda
        16
    lixuda  
    OP
       2018-04-18 12:57:00 +08:00
    @em70 我都说了,无用。selenium 我也要加载很久才可以获得真实页面
    wplct
        17
    wplct  
       2018-04-18 13:03:58 +08:00
    并不是学艺不精,看来一下这个网址的反爬确实很严格
    wplct
        18
    wplct  
       2018-04-18 13:06:07 +08:00
    各种加载 js 运行,懒得搞的话还是调用浏览器吧
    wplct
        19
    wplct  
       2018-04-18 13:11:33 +08:00
    如果是要请求较多的数据的话,记得保存 cookies 会比较好一些
    vtwoextb
        20
    vtwoextb  
       2018-04-18 14:05:31 +08:00
    重启路由器 更换家里的动态 ip https://github.com/hizdm/dynamic_ip
    JackYao
        21
    JackYao  
       2018-04-18 14:13:05 +08:00
    估计 js 检测吧, 能执行才是浏览器。
    summerwar
        22
    summerwar  
       2018-04-18 14:33:55 +08:00
    贴地址 不然靠猜吗
    craftx
        23
    craftx  
       2018-04-18 16:54:32 +08:00
    请先说明是哪种方式的屏蔽
    jamesfuxk
        24
    jamesfuxk  
       2018-04-18 17:29:09 +08:00
    用抓包软件,设置好 header 啊。可以减少被封的概率的
    cuberlzy
        25
    cuberlzy  
       2018-04-18 17:46:27 +08:00   ❤️ 2
    Chrome F12 找到接口 右键复制到 curl

    然后贴到这里 https://curl.trillworks.com/ 把生成的代码运行一遍

    看看行不行先~我猜多半是 Cookie 的问题
    cuberlzy
        26
    cuberlzy  
       2018-04-18 17:47:00 +08:00
    浏览器也想被提示爬虫可以试试把 Cookie 清掉 这样多半就会提示你输验证码啦
    Telegram
        27
    Telegram  
       2018-04-18 19:20:27 +08:00 via iPhone
    @kimchan #8 这个只能对症下药。
    Leigg
        28
    Leigg  
       2018-04-18 20:38:56 +08:00
    UA 是比较基本的反爬,最好清除浏览器 cookie,打开 F12-network,再打开网站,这个时候分析一下请求的 method、header 一般就能找到关键所在
    Leigg
        29
    Leigg  
       2018-04-18 20:42:10 +08:00
    你是要抓这个 URL 中的什么信息,中间的正文应该是可以直接获取的
    golmic
        30
    golmic  
       2018-04-18 21:33:55 +08:00 via Android
    浏览器可以,requests 就一定可以。愿意付费可以联系我,微信公众号 pydatame 有联系方式
    qqpkat2
        31
    qqpkat2  
       2018-04-19 01:14:34 +08:00
    js 加密检测,了解一下
    jimmyczm
        32
    jimmyczm  
       2018-04-19 09:22:04 +08:00
    抓包时发现应该是这个 pwhqfbsrcqtcbabfzrvevcde.js 文件作怪,在这个文件后面浏览器和 selenium 的内容变了
    soho176
        33
    soho176  
       2018-04-23 09:28:25 +08:00
    用火车头试试看!
    leir
        34
    leir  
       2018-04-23 14:52:46 +08:00 via iPhone
    @lixuda 搞定了么?简单得话,火车头就可以了,要想分析的话可以看看楼 js,没有混淆,能够明显看到检查
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2722 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 05:34 · PVG 13:34 · LAX 21:34 · JFK 00:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.