网站阻止了Python搜寻器。寻找想法以避免

时间:2018-12-28 16:02:17

标签: python web-crawler

我想从https://www.fewo-direkt.de(在美国https://www.homeaway.com/)的对象站点中抓取数据,像这样:https://www.fewo-direkt.de/ferienwohnung-ferienhaus/p8735326 但是,如果搜寻器尝试启动该页面,我将仅获得带有以下代码的页面。我认为littleo会阻止爬虫,但是我不知道该怎么做,还有什么可行的避免方法。有任何想法吗?

Python,请求,BeautifulSoup-在其他网站上运行正常。

<html style="height:100%">
   <head>
      <meta content="NOINDEX, NOFOLLOW" name="ROBOTS"/>
      <meta content="telephone=no" name="format-detection"/>
      <meta content="initial-scale=1.0" name="viewport"/>
      <meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible"/>
      <script src="/_Incapsula_Resource?SWJIYLWA=719d34d31c8e3a6e6fffd425f7e032f3" type="text/javascript"></script>
   </head>
   <body style="margin:0px;height:100%"><iframe frameborder="0" height="100%" marginheight="0px" marginwidth="0px" src="/_Incapsula_Resource?CWUDNSAI=20&amp;xinfo=5-259174360-0%200NNN%20RT%281546012021046%20144%29%20q%280%20-1%20-1%20-1%29%20r%280%20-1%29%20B15%283%2c901868%2c0%29%20U5&amp;incident_id=877000750783982903-1038286134589588661&amp;edet=15&amp;cinfo=03000000" width="100%">Request unsuccessful. Incapsula incident ID: 877000750783982903-1038286134589588661</iframe></body>
</html>

1 个答案:

答案 0 :(得分:0)

网站可以使用多种方法来检测机器人。我们可以将它们分组在下一个列表中:

  1. 标头验证。这是最广泛的基本级别验证,用于检查HTTP request headers是否存在,不存在,默认,伪造或损坏的值。

    例如python请求中的默认User-Agentpython-requests/开始,可以很容易地在后端进行检查,结果您的客户端将被标记为bot并获得“错误”响应。

    解决方案::尝试从浏览器嗅探相同的请求(您可以使用Fiddler),并从浏览器克隆标头。在python请求中,可以通过下一个代码完成:

    headers = {
        "User-Agent": "Some User-Agent"
    }
    response = requests.get(url, headers=headers)
    
  2. Cookies验证。是的,Cookie还是HTTP标头,但验证方法与以前的不同。这种方法的想法是检查Cookie标头并验证每个cookie。

    解决方案:

    1)嗅探浏览器完成的所有请求;

    2)检查您要重复的请求,并查看Cookie标头;

    3)搜索先前请求中每个cookie的值;

    4)重复每个在主请求之前设置cookie的请求,以收集所有必需的cookie。

    在python请求中,您无需手动抓取,只需使用session

    http_session = requests.Session() 
    http_session.get(url_to_get_cookie)  # cookies will be stored inside "http_session" object
    response = http_session.get(final_url)
    
  3. IP地址或提供者验证。网站可以检查IP地址和提供者是否未在垃圾邮件数据库中列出。如果您使用的是公共代理服务器/ VPN,则是可能的。

    解决方案::尝试使用其他代理或更改VPN。

当然,它是过于简化的指南,其中不包含有关JavaScript生成标头/令牌,“控制”请求,WebSocket等的信息。但是,在我看来,它可以作为入门级指南有所帮助。某人在哪里寻找。