无法使用python请求访问站点,即使在从浏览器中处理标题和cookie之后也是如此

2024-06-06 00:22:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图通过以下请求访问allegro.pl网站:

import requests

headers = {
    'authority': 'allegro.pl',
    'dpr': '1',
    'viewport-width': '1920',
    'upgrade-insecure-requests': '1',
    'user-agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36 OPR/76.0.4017.177',
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'sec-fetch-site': 'none',
    'sec-fetch-mode': 'navigate',
    'sec-fetch-user': '?1',
    'sec-fetch-dest': 'document',
    'accept-language': 'en-US,en;q=0.9',
}

s = requests.Session()
r = s.get('https://allegro.pl')
s.headers = headers
r = s.get('https://allegro.pl/oferta/world-of-warcraft-30-dni-pre-paid-klucz-wow-eu-9538042175')

我的第一个请求是获取所需的cookies,而上述方法甚至在昨天就开始工作,但今天我两次都收到403个错误

我已经检查了请求在浏览器中的外观,从浏览器中复制了标题,尝试复制浏览器cookie,但仍然一无所获。 我认为请求模块一定有问题,不知怎的,这个网站可以看到我在使用脚本

有没有办法修复我的程序


Tags: imagegetapplication网站浏览器allegroxmlsec
1条回答
网友
1楼 · 发布于 2024-06-06 00:22:25

看起来服务器正在使用验证码服务来检查JavaScript是否已启用,以及是否没有运行广告拦截器。您可以查看403响应的内容并查看该消息

import requests
res = requests.get('https://allegro.pl/')
res.content

# returns:
<html>
<head>
<title>allegro.pl</title>
<style>#cmsg{animation: A 1.5s;}@keyframes A{0%{opacity:0;}99%{opacity:0;}100%{opac
ity:1;}}</style>
</head>
<body style="margin:0">
<p id="cmsg">Please enable JS and disable any ad blocker</p>
<script>var dd={'cid':'AHrlqAAAAAMADKhs3_VXRtQAVxTsrg==','hsh':'77DC0FFBAA0B77570F6B414F8E5BDB','t':'bv','s':29560,'host':'geo.captcha-delivery.com'}
</script>
<script src="https://ct.captcha-delivery.com/c.js"></script>
</body>
</html>

您仍然可以使用selenium进行刮除,这方面有很多指南

相关问题 更多 >