Python - Requests 爬虫 爬取亚马逊产品页, Headers 被识别为机器人 - V2EX
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 2022-10-14 14:52:08 +08:00 5102 次点击
    这是一个创建于 1092 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    这只是入门的无差别格挡

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

    同一个 IP 扒多了可能遇到这个提示,会被拉黑一段时间,得换 IP
    dreamtrail
        19
    dreamtrail  
       2022-10-15 09:32:41 +08:00
    @Puteulanus
    你那是很久以前了吧,几年前我想弄个 ps5 的上货提醒,写了个简单的脚本就发现不行了
    wyzh97
        20
    wyzh97  
    OP
       2022-10-15 16:02:20 +08:00
    额, 这么多热心的朋友: 我网上看了下, 使用 Selenium 是比较方便的哈, 就是有点笨重, 我回头试一下 phantomJS 看能否搞定, 就是 CentOS 上布置起来可能有点费劲了
    blinkdr
        21
    blinkdr  
       2022-10-15 16:27:34 +08:00 via Android
    rpa 也行吧,虽然笨了点
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3925 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 05:14 PVG 13:14 LAX 22:14 JFK 01:14
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86