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

现在淘宝详情页销量的反爬策略是如何实现的?我使用了稳定更换 ip 的代理池,仍会被 ban。

  •  
  •   ilovebaicai · 2017-12-04 11:35:45 +08:00 · 15655 次点击
    这是一个创建于 2545 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1. 抓取淘宝商品月销量,使用淘宝页面的[detailskip.taobao.com],进行抓取。
    2. 有使用稳定的代理池,每隔一段时间更换。
    3. 如果对爬虫请求来说,如果我请求的每次 ip 地址都不一样,还会被 ban。那这个原因是什么?是需要带 cookie 去访问,还是淘宝使用了行为分析一类的策略?
    4. 帮忙一起分析下目前淘宝的反爬策略,谢谢!
    第 1 条附言  ·  2017-12-04 13:13:52 +08:00
    目前是 12 个 ip 地址,ip 地址是 5 分钟轮流更换一次,使用随机的 user-agent,header+referer 访问,没使用 cookie。但是即使更换了 ip 地址,这个 ip 地址还是会被 ban。
    第 2 条附言  ·  2017-12-04 13:16:37 +08:00
    使用的更换的 ip 地址,也是立马直接拒绝,不让访问,而不是访问一段时间才拒绝的。
    第 3 条附言  ·  2017-12-04 22:11:46 +08:00
    1. 非常感谢大家的回复
    2. 目前汇总的可能使用策略大概表现为:
      • 淘宝使用的行为分析的一类的反爬
      • X-Forwarded-for可能会追踪到原始IP
      • 淘宝使用了蜜罐
      • 代理ip可能较少,已全被淘宝拉黑
    3. 解决方案目前未想到,需要优化代码,去尽量模拟用户真实行为去访问,抓取数据。
    4. 感谢大家热心回复,谢谢!
    49 条回复    2020-03-06 20:15:23 +08:00
    ilovebaicai
        1
    ilovebaicai  
    OP
       2017-12-04 11:45:25 +08:00
    目前发现 Amazon,也是这样的。使用了代理 ip 去请求,一段时间后,就会让你输入验证码。即使立即更换 ip,也不让访问。
    vus520
        2
    vus520  
       2017-12-04 11:47:02 +08:00
    估计是代理 IP 被记录了吧。
    ilovebaicai
        3
    ilovebaicai  
    OP
       2017-12-04 11:50:07 +08:00
    @vus520 这个可能性会有。但是我是使用 asdl 自建的代理池,IP 重复的概率不会很大。
    shaobin
        4
    shaobin  
       2017-12-04 11:54:20 +08:00
    useragent ip cookie referer 等特征结合着来
    firefox12
        5
    firefox12  
       2017-12-04 12:02:18 +08:00 via iPhone
    估计这些 ip 结合历史记录看 早就在黑名单了吧
    qu3290052
        6
    qu3290052  
       2017-12-04 12:05:02 +08:00 via Android
    1.ip 被拉黑
    2,协议头长期没变
    150
        7
    150  
       2017-12-04 12:07:14 +08:00
    我天天浏览车托之家,也经常弹出个验证框,估计也把我当成了代理爬虫
    qwertty01
        8
    qwertty01  
       2017-12-04 12:11:24 +08:00
    使用的什么爬虫?
    请求头 Cookie 之类的分析了吗?
    动态爬虫之类的用了没?
    enenaaa
        9
    enenaaa  
       2017-12-04 12:14:31 +08:00
    似乎在哪里有人说过,淘宝反爬用的逻辑回归做判断。 也就是说 ip,浏览器信息,浏览行为都会是判断因素。
    比如,如果一直只浏览某个页面, 那 99%是爬虫了。 所以需要模拟用户真实的浏览行为。
    ytmsdy
        10
    ytmsdy  
       2017-12-04 12:15:54 +08:00
    ip,cookies,referer...
    还有检查一下爬虫有没有进到蜜罐里面
    Jackeriss
        11
    Jackeriss  
       2017-12-04 12:22:52 +08:00
    有可能会根据访问频率判断,也可能你访问了只有爬虫才会访问到的隐藏链接。
    zzNucker
        12
    zzNucker  
       2017-12-04 12:28:03 +08:00
    就换个 IP 就行了? 你开玩笑吧。。
    LevineChen
        13
    LevineChen  
       2017-12-04 12:43:07 +08:00
    你登录了吧 爬一会会强制登录的.
    yuriko
        14
    yuriko  
       2017-12-04 13:07:50 +08:00
    ip 更换频率?分钟级的?
    ilovebaicai
        15
    ilovebaicai  
    OP
       2017-12-04 13:13:26 +08:00
    目前是 12 个 ip 地址,ip 地址是 5 分钟轮流更换一次,使用随机的 user-agent,header+referer 访问,没使用 cookie。但是即使更换了 ip 地址,这个 ip 地址还是会被 ban。
    shaobin
        16
    shaobin  
       2017-12-04 13:38:42 +08:00
    要么你换出来的 ip 已经再黑名单,要么特质太过明显
    ilovebaicai
        17
    ilovebaicai  
    OP
       2017-12-04 13:48:19 +08:00
    @shaobin 您能说下,这个请求的特质,具体点是什么?我现在使用的 header 是随机,ip 地址也是代理随机拨号的。
    wangxiaoer
        18
    wangxiaoer  
       2017-12-04 13:55:52 +08:00
    你 IP 5 6 分钟切换一次,header 随机,这就有可能在出现下面的情况:

    同一个 ip 在 5 6 分钟内的访问,每次 header 都特么不一样。

    你说这算不算特征?
    ilovebaicai
        19
    ilovebaicai  
    OP
       2017-12-04 14:05:11 +08:00   ❤️ 1
    @wangxiaoer 如果按照您的说法,我一个公司就一个出口 ip,如果有几十个人同时在访问淘宝,这也是算是同 ip,不同 header 访问,但是并不会被 ban。可能并不会是这个原因导致的。
    cheesea
        20
    cheesea  
       2017-12-04 14:28:20 +08:00
    X-Forwarded-for ?
    你都用上拨号了,ip 怎么才这么少,不是每次拨号都会变么。
    dewi
        21
    dewi  
       2017-12-04 14:38:46 +08:00
    @ilovebaicai MAC 地址你的是固定的,但是你的 header 随机,不查你查谁= =
    ilovebaicai
        22
    ilovebaicai  
    OP
       2017-12-04 14:45:13 +08:00
    @cheesea 预算问题。只有少量的 asdl 的拨号服务。所以 ip 地址更换的并不会很快,但是每次拨号会改变 ip 地址。
    ilovebaicai
        23
    ilovebaicai  
    OP
       2017-12-04 14:45:56 +08:00
    @dewi 这个确实是个问题,谢谢您!
    ilovebaicai
        24
    ilovebaicai  
    OP
       2017-12-04 14:46:42 +08:00
    @cheesea X-Forwarded-for 这个也可能是追踪到了原始 ip,谢谢您!
    find456789
        25
    find456789  
       2017-12-04 14:56:30 +08:00
    @dewi 网页得不到 mac 地址吧
    capo
        26
    capo  
       2017-12-04 15:01:38 +08:00
    请问一下用户的 MAC 地址是可以获取的吗?
    wang12xishan
        27
    wang12xishan  
       2017-12-04 15:12:36 +08:00
    @dewi 同问 用什么办法可以获取到 MAC 地址
    Level5
        28
    Level5  
       2017-12-04 15:17:46 +08:00   ❤️ 1
    网页得到 mac 地址?
    记得谷歌也是这样。换 ip 已经没用了。有人用 py 包调 IE 浏览器模拟用户请求还是一样被 ban,觉得是不是页面 JS 获取了用户鼠标事件等判断?
    smilekung
        29
    smilekung  
       2017-12-04 15:23:01 +08:00
    大概率是触发蜜罐了吧 或者是页面检测了鼠标轨迹 我碰到过 打开页面会先加载反爬 js 然后检测鼠标,不通过就不允许后续接口请求
    guotie
        30
    guotie  
       2017-12-04 15:23:51 +08:00
    mac 地址从报文中是获取不到的,路由每一跳都会更换 mac 头
    ilovebaicai
        31
    ilovebaicai  
    OP
       2017-12-04 15:29:33 +08:00
    貌似确认获取不到 mac 地址,可参考 http://www.jianshu.com/p/61b1506e4c0f。
    mazao
        32
    mazao  
       2017-12-04 15:37:04 +08:00
    除了 ie 使用 ActiveX 能获取 mac 以外,浏览器无法获取 mac 吧?不然不符合浏览器的安全协议了。 @dewi
    ilovebaicai
        33
    ilovebaicai  
    OP
       2017-12-04 15:53:08 +08:00
    @smilekung 这个是一个可能的原因,谢谢您!
    wangxiaoer
        34
    wangxiaoer  
       2017-12-04 16:35:43 +08:00
    @ilovebaicai 几十个人同时访问淘宝也不可能出现每个 ip 每个请求的 header 都随机吧。

    同一个 ip header 有不同是正常的,但是没有一个相同的就是不正常了
    binux
        35
    binux  
       2017-12-04 16:44:53 +08:00 via Android   ❤️ 1
    所以随机 UA 这东西是谁想出来的?
    你不去模拟真实的用户,或者你自己都不知道真实的用户行为是怎样的,不被封才怪了。
    402645707
        36
    402645707  
       2017-12-04 16:59:27 +08:00 via Android   ❤️ 1
    淘宝 ua 我有个建议,测试发现 ie 浏览器的 ua 可以有效避免验证码
    ryang
        37
    ryang  
       2017-12-04 19:26:25 +08:00   ❤️ 1
    可以考虑用 selenium+chrome 的方式爬取呢。
    目前我用公司的 ip 地址,爬 1000 条没有要求登录。猜测可能是公司人比较多,所以同一个 ip 经常会有不同的人登录或者不登录访问淘宝。
    如果用代理,爬个 10 几条就需要登录,但是用密码加短信验证码的方式登录后,再爬取 1000 多条都没有限制。
    akira
        38
    akira  
       2017-12-04 19:50:05 +08:00
    尽可能模拟真实用户提交的数据,而不是尽可能的随机
    LukeChien
        39
    LukeChien  
       2017-12-04 20:26:29 +08:00 via Android
    你的 IP 不是民用的吧,可以反向解析
    safeoy
        40
    safeoy  
       2017-12-05 00:16:36 +08:00
    试试民用宽带,ADSL 拨号换 IP
    sgissb1
        41
    sgissb1  
       2017-12-05 09:55:25 +08:00
    小伙,我这么给你说。就算不用爬虫,我们普通用户上去只要逛的多一点,也常常让我输入坑爹的验证信息。

    也许人家的策略比你认为的还暴力。
    wampyl
        42
    wampyl  
       2017-12-05 10:18:47 +08:00
    刷单的都让在页面上停留 30s,还要下拉到最后,所以他们的策略很细的。
    EmmaSwan
        43
    EmmaSwan  
       2017-12-05 12:38:27 +08:00 via Android
    我家電信,公網 ip, 整天讓我輸入驗證碼,煩得我都不樂意買了。
    京東從來不需要輸驗證碼
    EmmaSwan
        44
    EmmaSwan  
       2017-12-05 12:41:20 +08:00 via Android
    @sgissb1 關鍵是,輸入一次以後,如果不換 ip,就不應該再重複讓用戶輸入。可事實上,他會持續讓你輸入,每個商品都讓你輸一次,真的不懂怎麼個思路
    sgissb1
        45
    sgissb1  
       2017-12-06 09:56:35 +08:00
    @EmmaSwan 这个你也遇到了?如果是真的,我前段时间就这样,幸亏我不怎么买东西。我是大半年没有开过 TB,再打开 TB,貌似就没问题了。因为路由器常年在线,所以 IP 一直是同一个公网 ip。
    EmmaSwan
        46
    EmmaSwan  
       2017-12-07 14:53:07 +08:00
    @sgissb1 经常这样,特别是傍晚到半夜这段时间. 淘宝 /天猫 /飞猪,都这样.
    没有什么真的假的,我又不是京东员工,黑淘宝作甚
    EmmaSwan
        47
    EmmaSwan  
       2017-12-07 14:57:47 +08:00
    另外, 我登录支付宝, 是 100%要求短信验证! 即便喝口水回来的功夫, 也会登录失效, 并要求再次使用短信验证码登陆. 我觉得这些人就是故意的, 强迫你使用 APP.
    以前我还会用花呗买东西, 现在都不乐意用了, 因为电脑上不给你对账, 你根本不知道上个月买了什么东西, 数额对不对. 用手机来对账, 在我看来非常脑残, 不仅不能一个屏幕上开计算器, 也没有数字小键盘, 而且反复上下拖动屏幕带来的拖尾效果会让眼镜很不舒服
    sgissb1
        48
    sgissb1  
       2017-12-07 15:21:21 +08:00
    @EmmaSwan 小伙别急,我又没怀疑你。我只是想确定你和我是否一样的遭遇,毕竟我没有 1000w
    lxk11153
        49
    lxk11153  
       2020-03-06 20:15:23 +08:00
    你们说的蜜罐是啥?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2805 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 14:17 · PVG 22:17 · LAX 06:17 · JFK 09:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.