当我想抓取网站时被阻止

时间:2019-06-15 16:48:23

标签: python-3.x selenium web-scraping beautifulsoup

我正在尝试抓取一个网站,但是我遇到了403禁止的问题(这意味着他们阻止了我),我该如何解决此问题?

from bs4 import BeautifulSoup
from selenium import webdriver

options = webdriver.ChromeOptions()
options.headless = True
driver = webdriver.Chrome(options=options)
#url: the website that i wanna scrape
driver.get(url)

html = driver.page_source
soup = BeautifulSoup(html, 'lxml')
print(soup)

我收到此错误消息:

<pre>&lt;html&gt;&lt;head&gt;&lt;title&gt;You have been blocked&lt;/title&gt;&lt;style&gt;#cmsg{animation: A 1.5s;}@keyframes A{0%{opacity:0;}99%{opacity:0;}100%{opacity:1;}}&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot;margin:0&quot;&gt;&lt;script async=&quot;&quot; src=&quot;/_Incapsula_Resource?SWJIYLWA=719d34d31c8e3a6e6fffd425f7e032f3&amp;amp;ns=1&amp;amp;cb=749975105&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;&lt;script&gt;var dd={&apos;cid&apos;:&apos;AHrlqAAAAAMAcW1trsuCoDEAXu-3KQ==&apos;,&apos;hsh&apos;:&apos;53505CB4534F4422CC81E4A9499234&apos;,&apos;t&apos;:&apos;fe&apos;}&lt;/script&gt;&lt;script src=&quot;https://ct.datado.me/c.js&quot;&gt;&lt;/script&gt;&lt;iframe border=&quot;0&quot; frameborder=&quot;0&quot; height=&quot;100%&quot; scrolling=&quot;yes&quot; src=&quot;https://c.datado.me/captcha/?initialCid=AHrlqAAAAAMAcW1trsuCoDEAXu-3KQ%3D%3D&amp;amp;hash=53505CB4534F4422CC81E4A9499234&amp;amp;cid=09ccOuPGIGlqdUvFNJgB7GzPDCFBmdMIU8Ng~E~1M6.&amp;amp;t=fe &quot; style=&quot;height:100vh;&quot; width=&quot;100%&quot;&gt;&lt;/iframe&gt;&lt;script type=&quot;text/javascript&quot;&gt;
//&lt;![CDATA[
(function() {
var _analytics_scr = document.createElement(&apos;script&apos;);
_analytics_scr.type = &apos;text/javascript&apos;; _analytics_scr.async = true; _analytics_scr.src = &apos;/_Incapsula_Resource?SWJIYLWA=719d34d31c8e3a6e6fffd425f7e032f3&amp;ns=1&amp;cb=749975105&apos;;
var _analytics_elem = document.getElementsByTagName(&apos;script&apos;)[0]; _analytics_elem.parentNode.insertBefore(_analytics_scr, _analytics_elem);
})();
// ]]&gt;
&lt;/script&gt;
&lt;/body&gt;&lt;/html&gt;
</pre>

1 个答案:

答案 0 :(得分:1)

403禁止访问

HTTP 403 Forbidden客户端错误状态响应代码表示服务器已接收到请求,但客户端未获得授权,也没有对该内容的访问权限。

此状态类似于401,但是在这种情况下,重新认证不会有任何区别。永久禁止访问并将访问与应用程序逻辑绑定在一起,例如对资源的权限不足。


示例响应

HTTP/1.1 403 Forbidden 
Date: Sun, 16 June 2019 07:28:00 GMT

原因

无头 Chrome 浏览器有很多检测方法,其中一些主要因素包括:

  • User agent
  • Plugins
  • Languages
  • WebGL
  • Browser features
  • Missing image
  

您可以在Selenium and non-headless browser keeps asking for Captcha

中找到详细的讨论

解决方案

一个通用的解决方案是使用来自Free Proxy List代理旋转代理

  

您可以在Change proxy in chromedriver for scraping purposes

中找到详细的讨论