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

Python - Requests 爬虫 爬取亚马逊产品页, Headers 被识别为机器人

  •  
  •   wyzh97 · 239 天前 · 3186 次点击
    这是一个创建于 239 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我试图抓取亚马逊的产品页面( https://www.amazon.com/dp/B0B6TR2GTJ), 代码如下:

    
    import requests
    
    url = "https://www.amazon.com/dp/B0B6TR2GTJ"
    
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36', 
        'Accept-Language': 'en-US, en;q=0.5'
    }
    r= requests.get(url, headers = headers)
    
    print(r.status_code)
    print("-------------------")
    doc = pq(r.text)  
    
    print(doc("title"))
    print("-------------------")
    print(r.text)
    

    结果如下(被判断为机器人了): Headers 尝试了各种写法, 都是一样的结果.

    503
    -------------------
    <title>Sorry! Something went wrong!</title>
      
    -------------------
    <!--
            To discuss automated access to Amazon data please contact [email protected]
            For information about migrating to our APIs refer to our Marketplace APIs at https://developer.amazonservices.com/ref=rm_5_sv, or our Product Advertising API at https://affiliate-program.amazon.com/gp/advertising/api/detail/main.html/ref=rm_5_ac for advertising use cases.
    -->
    <!doctype html>
    ......
    

    我爬虫还在初学阶段, 有没有前辈大神帮帮我. 万分感谢

    21 条回复    2022-10-15 16:27:34 +08:00
    kile
        1
    kile  
       239 天前   ❤️ 5
    初学阶段为什么要去尝试顶级难度的电商爬虫...
    Kinnice
        2
    Kinnice  
       239 天前
    我学会了 1+1=2 ,我要去解决哥德巴赫猜想了
    cy1027
        3
    cy1027  
       239 天前
    简单一点的打开浏览器复制请求头,带上就行,复杂一点的点开 debugger ,找出关键 js ,通过 js 生成对应的 cookie 等参数,加入 headers 里面,再请求就可以了,如果亚马逊对 python 的请求指纹进行了识别,可以用 pycurl 进行请求,什么,你又问 pycurl 怎么用?先安装,再调用就行了!!!
    cy1027
        4
    cy1027  
       239 天前
    @cy1027 当然了,有些 js 会加密,不会直接让你运行,专业点的说法就叫加壳了,这时你就需要脱壳,把 js 的龟壳脱下来,看看他的真容,然后他就会告诉你 cookie 怎么生成了,那么脱壳具体的步骤是什么呢?你可以化身人肉编译器,用眼睛编译一下 js ,在大脑中运行一部分,这时,js 会变成普通的 js 的样子,这个时候你就能认出哪个变量是干什么用的了,这个时候你会发现他的 js 对运行环境进行了检测,你要补充一下运行环境,欺骗一下这个 js ,它就会告诉你正确的 cookie 了
    fournoas
        5
    fournoas  
       239 天前
    不行就用无头浏览器爬咯
    fbichijing
        6
    fbichijing  
       239 天前
    2022-10-14 16:20:40 刚试了一下,headers 写全可以信息爬出来。
    ospider
        7
    ospider  
       239 天前
    TLS ja3 指纹,你用 python 怎么也改不了的
    f165af34d4830eeb
        8
    f165af34d4830eeb  
       239 天前   ❤️ 7
    westoy
        9
    westoy  
       239 天前
    直接放弃

    这只是入门的无差别格挡

    之后还有限频、 随机变换页面规则、风控, 到这一步的时候你会发现你虽然爬到了数据, 但你不知道你爬到的数据是真的还是假的..........
    lambdaq
        10
    lambdaq  
       239 天前
    问题是,你 python 代码本来就是机器人啊。别人识别的没毛病啊。
    pengtdyd
        11
    pengtdyd  
       239 天前
    你这个水平还想爬电商网站,回去再练练吧。
    pepesii
        12
    pepesii  
       239 天前
    可能你需要搜索下这些关键词,设备指纹,ja3 指纹,creepjs
    ian77729
        13
    ian77729  
       239 天前
    puppeteer 和 selenium
    bobobruce
        14
    bobobruce  
       239 天前
    chromedrive
    laravel
        15
    laravel  
       239 天前
    这种限制多的最好用 puppeteer
    另外有需要 woocommerce 产品采集入库的联系我微信:gekongfei
    长期合作,价格优惠。
    p1956
        16
    p1956  
       239 天前
    idm 就可以
    CrabAss
        17
    CrabAss  
       239 天前
    初学就开始爬 Amazon ,OP 是个狠人
    Puteulanus
        18
    Puteulanus  
       239 天前
    没那么夸张吧,之前做过 Amazon 的上货提醒,感觉和没设防差不多了都
    也可能现在变严了

    同一个 IP 扒多了可能遇到这个提示,会被拉黑一段时间,得换 IP
    dreamtrail
        19
    dreamtrail  
       238 天前
    @Puteulanus
    你那是很久以前了吧,几年前我想弄个 ps5 的上货提醒,写了个简单的脚本就发现不行了
    wyzh97
        20
    wyzh97  
    OP
       238 天前
    额, 这么多热心的朋友: 我网上看了下, 使用 Selenium 是比较方便的哈, 就是有点笨重, 我回头试一下 phantomJS 看能否搞定, 就是 CentOS 上布置起来可能有点费劲了
    blinkdr
        21
    blinkdr  
       238 天前 via Android
    rpa 也行吧,虽然笨了点
    关于   ·   帮助文档   ·   博客   ·   nftychat   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   843 人在线   最高记录 5634   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 22:24 · PVG 06:24 · LAX 15:24 · JFK 18:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.