我们如何才能使抓取看起来像真实的人浏览

时间:2019-12-08 08:37:27

标签: web-scraping beautifulsoup python-requests

因此,我正在抓取一个网站,但有时我会在几分钟内被暂时禁止使用。我在代码中使用标头进行抓取,但我想知道是否还有更多的方法可以使我们看起来像一个真实的人,而不只是一个机器人。

我研究了一下,发现我们可以使抓取速度变慢,并且绕过检测。

我想听听您的想法和建议。

ua=UserAgent()
   hdr = {'User-Agent': ua.random,
  'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
  'Accept-Encoding': 'none',
  'Accept-Language': 'en-US,en;q=0.8',
  'Connection': 'keep-alive'}

(由于无法让我发布代码,所以不得不放置此代码!)

2 个答案:

答案 0 :(得分:2)

您可以做的一件事是使time.sleep变得随机。机器人是步调一致,人类是飘忽不定。

您需要导入随机库

   import random

然后,您更改时间,像这样睡觉:

  time.sleep(random.randint(3,15))

答案 1 :(得分:0)

避免被禁止的一种方法是不要用太大的力炸开该站点,然后他们肯定不会这么做,因为使用浏览器的人将无法以如此快的速度击中该站点,因此它必须是机器人。因此,降低每秒发送的请求数量会有所帮助。解决此问题的另一种方法是使用代理。如果您被禁止使用一段时间,则表示他们已记下您的IP地址并将其屏蔽。如果代理在阻止一个IP时使用代理,则可以切换到另一个IP并继续使用快乐的抓取方式,这是更复杂的漫游器和Spider的主要组成部分之一,并且做起来也不难。 / p>

import requests
from bs4 import BeautifulSoup as bs

def crawler():
   headers = {headers}
   proxies = {proxies}
   url = url
   requests.get(url, headers=headers, proxies=proxies)

与此一起,您的IP地址被隐藏。并非所有代理地址都不能在所有位置使用,因此与它们一起使用时,我倾向于在文件中的某处放置一堆。我读取了文件,然后遍历从文件中获取的代理,直到找到可以在当前位置使用的代理为止,然后就可以开始抓取而不必担心IP被阻塞。如果仍然不确定代理如何与请求库和精美汤一起使用,请查看此post