注意: IP代理精灵仅提供国内ip网络节点,不提供境外网络节点,不能用于任何非法用途或访问境外封闭网站,不能跨境联网,只能用于合法的国内网络加速。

请登录 注册

首页 > 新闻资讯 > Python爬虫如何绕过网站的反爬虫机制?

Python爬虫如何绕过网站的反爬虫机制?

来源:IP精灵 作者:admin 时间:2019-09-25 14:58:28

  Python爬虫如何绕过网站的反爬虫机制?爬取网站的时候经常会遇到网站上都部署了反爬虫机制,当服务器检测到一段时间内同一个IP持续密集的访问网站,则将其判定为爬虫程序,在一段时间内不允许该IP地址访问服务器。

Python爬虫如何绕过网站的反爬虫机制

  这种情况其实可以写个延迟函数,每爬一次随机歇个几秒钟,有效的降低访问密度,从而避开反爬机制。但是弊端是太浪费时间,一天爬几万条数据会感到非常吃力。

  这时就需要更加有效率的爬取数据,所以需要使用动态ip和随机 UA(User-Agent)。说白了就是伪装爬虫,假装不同的人使用不同的浏览器在访问网站。

  使用动态拨号VPS

  除了代理IP以外,还可以使用动态拨号VPS来更换IP,这种方式获得的IP质量更高,而且可以直接在拨号vps上部署业务,更加方便。

  这种方式需要进行一些技术处理,实现IP更换和调用。

  使用动态ip

  使用动态ip 的强大之处在于它在爬虫运行的同时,在线获取动态ip。每次只获取一页,存于数组中,随机使用。当大部分的 IP 失效之后(记录访问失败的次数,当超过一定阈值时,则视为此页动态ip 失效),然后重新获取一页动态ip

  如此,可保证每次使用的都是最新的 IP,而且不需要额外的空间和文件来存放动态ip。

  def get_proxy(page):

  '''

  功能:获取精灵代理网站上的最新代理IP

  参数: page 页数

  返回:存有动态ip 的列表 proxyList

  '''

  # 存放获取到的动态ip 信息 proxyList = [] # 访问精灵代理网站,获取第 page 页的网页信息 headers = { "User-Agent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11" } request = urllib.request.Request("https://www.kuaidaili.com/free/inha/"+str(page), headers=headers) html = urllib.request.urlopen(request).read() # 解析网页信息,从中提取动态ip 的数据 content = etree.HTML(html) ip = content.xpath('//td[@data-title="IP"]/text()') port = content.xpath('//td[@data-title="PORT"]/text()') # 将动态ip 信息存入 proxyList 列表 for i in ip: for p in port: proxyList.append(i+':'+p) return proxyList


最新资讯

推荐阅读

  1. 13

    2019-08

    HTTP代理IP可以用来刷票吗

    HTTP代理IP可以用来刷票吗?现在有很多投票的活动是通过网络投票,这种投票方式对IP的要求很严格,一个IP只能投一次票或者只能投票一次。这时,可能就需要用到HTTP代理IP了。很多人的刷屏

  2. 30

    2019-05

    爬虫为什么使用ip代理

    爬虫为什么使用ip代理?我们在做爬虫的过程中经常会遇到这样的情况,最初爬虫正常运行,正常抓取数据,一切看起来都是那么美好,然而一杯茶的功夫可能就会出现错误,比如403 Forbidden,这

  3. 14

    2019-05

    免费代理为什么弊大于利

    免费代理为什么弊大于利?有时似乎每个人都在关注自己的在线隐私。媒体中的各种泄密和安全丑闻只会增加这种全球热潮。为了保护个人的隐私,用户可以使用当今丰富的各种免费代理服务,

  4. 20

    2019-05

    为什么要用高质量动态ip

    使用IP代理的人日益增多,但有一个奇怪的现象是,还有很多人不习惯付费使用,尽管有的IP代理是免费,但还是有许多不足之处。今天就来一起看看为什么要用高质量动态ip。1.安全性能都没有

  5. 15

    2019-05

    动态IP和静态IP地址有什么区别?

    一个IP地址是分配给设备在互联网上的地址。它类似于发送信件的邮政地址,IP地址是交付互联网流量的计算机地址。您的Internet服务提供商(ISP)为您分配了IP地址。当您向ISP注册时,您的ISP会

  6. 16

    2019-07

    python爬虫时如何知道是否代理ip伪装成功

    python爬虫时如何知道是否代理ip伪装成功?有时候我们的爬虫程序添加了代理,但是我们不知道程序是否获取到了ip,尤其是动态转发模式的,这时候就需要进行检测了,以下是一种代理是否伪