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

2022-10-14 14:52:08 +08:00
 wyzh97

我试图抓取亚马逊的产品页面( 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 api-services-support@amazon.com.
        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>
......

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

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

这只是入门的无差别格挡

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

同一个 IP 扒多了可能遇到这个提示,会被拉黑一段时间,得换 IP
dreamtrail
2022-10-15 09:32:41 +08:00
@Puteulanus
你那是很久以前了吧,几年前我想弄个 ps5 的上货提醒,写了个简单的脚本就发现不行了
wyzh97
2022-10-15 16:02:20 +08:00
额, 这么多热心的朋友: 我网上看了下, 使用 Selenium 是比较方便的哈, 就是有点笨重, 我回头试一下 phantomJS 看能否搞定, 就是 CentOS 上布置起来可能有点费劲了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/886930

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX