Python 请求响应 403 禁止
Python requests response 403 forbidden
所以我想抓取这个网站:https://www.auto24.ee
我能够毫无问题地从中抓取数据,但今天它给了我“Response 403”。我尝试使用代理,将更多信息传递给 headers,但不幸的是似乎没有任何效果。我在互联网上找不到任何解决方案,我尝试了不同的方法。
之前可以正常运行的代码:
import requests
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36',
}
page = requests.get("https://www.auto24.ee/", headers=headers)
print(page)
您需要找到 User-Agent
。因此,打开浏览器并从 developer tools
中找到 GET request
的 User-Agent
header 或按 Ctrl+Shift+I
您可以通过以下方式找到针对不同浏览器的 User-Agent
。
import requests
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36'}
page = requests.get("https://www.auto24.ee/", headers=headers)
print(page)
另外,尝试使用requests.Session()
import requests
session = requests.Session()
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36'}
page = session.get("https://www.auto24.ee/", headers=headers)
print(page.content.decode())
session可能会解决问题或安装cfscrape
。你可以在这里找到答案 Python - Request being blocked by Cloudflare
更新
尝试 pip install cloudscraper -U
了解更多信息,请参阅 A Python module to bypass Cloudflare's anti-bot page. In the issues, you will find a fix for Cloudflare v2
代码在这里
import requests
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36'}
page = requests.get("https://www.auto24.ee/", headers=headers)
print(page.text)
总是会得到如下的东西
<div class="cf-section cf-wrapper">
<div class="cf-columns two">
<div class="cf-column">
<h2 data-translate="why_captcha_headline">Why do I have to complete a CAPTCHA?</h2>
<p data-translate="why_captcha_detail">Completing the CAPTCHA proves you are a human and gives you temporary access to the web property.</p>
</div>
<div class="cf-column">
<h2 data-translate="resolve_captcha_headline">What can I do to prevent this in the future?</h2>
<p data-translate="resolve_captcha_antivirus">If you are on a personal connection, like at home, you can
run an anti-virus scan on your device to make sure it is not infected with malware.</p>
该网站受 CloudFlare 保护。通过标准方式,能够通过请求或硒等自动化访问网站的可能性很小。您看到的是 403,因为您的客户端被检测为机器人。可能有一些可以在其他地方找到的绕过 CloudFlare 的任意方法,但该网站正在按预期工作。必须有大量通过 headers 提交的数据和显示您的请求有效的 cookie,并且由于您只是提交了一个用户代理,CloudFlare 被触发。简单地欺骗另一个 user-agent 还不足以不触发验证码,CloudFlare 会检查很多东西。
我建议您查看 selenium here,因为它模拟了一个真实的浏览器,或者研究指南(可能?)通过请求绕过 Cloudflare。
更新
找到 2 python 个库 cloudscraper 和 cfscrape。两者都不能用于此站点,因为它使用 cloudflare v2,除非您支付高级版本。
所以我想抓取这个网站:https://www.auto24.ee 我能够毫无问题地从中抓取数据,但今天它给了我“Response 403”。我尝试使用代理,将更多信息传递给 headers,但不幸的是似乎没有任何效果。我在互联网上找不到任何解决方案,我尝试了不同的方法。 之前可以正常运行的代码:
import requests
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36',
}
page = requests.get("https://www.auto24.ee/", headers=headers)
print(page)
您需要找到 User-Agent
。因此,打开浏览器并从 developer tools
中找到 GET request
的 User-Agent
header 或按 Ctrl+Shift+I
您可以通过以下方式找到针对不同浏览器的 User-Agent
。
import requests
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36'}
page = requests.get("https://www.auto24.ee/", headers=headers)
print(page)
另外,尝试使用requests.Session()
import requests
session = requests.Session()
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36'}
page = session.get("https://www.auto24.ee/", headers=headers)
print(page.content.decode())
session可能会解决问题或安装cfscrape
。你可以在这里找到答案 Python - Request being blocked by Cloudflare
更新
尝试 pip install cloudscraper -U
了解更多信息,请参阅 A Python module to bypass Cloudflare's anti-bot page. In the issues, you will find a fix for Cloudflare v2
代码在这里
import requests
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36'}
page = requests.get("https://www.auto24.ee/", headers=headers)
print(page.text)
总是会得到如下的东西
<div class="cf-section cf-wrapper">
<div class="cf-columns two">
<div class="cf-column">
<h2 data-translate="why_captcha_headline">Why do I have to complete a CAPTCHA?</h2>
<p data-translate="why_captcha_detail">Completing the CAPTCHA proves you are a human and gives you temporary access to the web property.</p>
</div>
<div class="cf-column">
<h2 data-translate="resolve_captcha_headline">What can I do to prevent this in the future?</h2>
<p data-translate="resolve_captcha_antivirus">If you are on a personal connection, like at home, you can
run an anti-virus scan on your device to make sure it is not infected with malware.</p>
该网站受 CloudFlare 保护。通过标准方式,能够通过请求或硒等自动化访问网站的可能性很小。您看到的是 403,因为您的客户端被检测为机器人。可能有一些可以在其他地方找到的绕过 CloudFlare 的任意方法,但该网站正在按预期工作。必须有大量通过 headers 提交的数据和显示您的请求有效的 cookie,并且由于您只是提交了一个用户代理,CloudFlare 被触发。简单地欺骗另一个 user-agent 还不足以不触发验证码,CloudFlare 会检查很多东西。
我建议您查看 selenium here,因为它模拟了一个真实的浏览器,或者研究指南(可能?)通过请求绕过 Cloudflare。
更新 找到 2 python 个库 cloudscraper 和 cfscrape。两者都不能用于此站点,因为它使用 cloudflare v2,除非您支付高级版本。