今天是一篇关于目标网站的反爬机制和破解方法大分享首选我们需要知道什么是爬虫和反爬虫以及?
爬虫:使用任何技术手段,批量获取网站数据的一种方式。反爬虫:目标网站使用技术手段,阻止别人批量获取自己网站信息的一种方式。
反爬虫的一些手段
(1) Headers and referer 反爬机制:headers进行反爬是最常见的反爬虫策略。还有一些网站会对 Referer (上级链接)进行检测,这些需要我们在爬虫过程中去分析,
(2)p限制
目标网站限制ip访问频率和次数进行反爬,这是最基本的反爬策略也是最容易解决的。
解决措施:可以自己搭建ip池,但是成本太大不推荐,最简单的是直接购买代理ip服务,像亿牛云、、、、等专门提供代理ip的。
(3) UA限制
UA是用户访问网站时候的浏览器标识.
解决措施,构建自己的UA池,每次python做requests访问时随机挂上UA标识,更好的模拟浏览器行为.
以上都是一些最基本的反爬策略,一般的网站只要做好了这三方面的策略都是没有问题的,比较大型的网站就需要做更复杂的策略。
分享一段简直的爬虫程序添加代理的示例,有这方面需要的小伙伴可以尝试看下。
Plain Text
复制代码#! -*- encoding:utf-8 -*- import requests import random # 要访问的目标页面 targetUrl = "http://httpbin.org/ip" # 要访问的目标HTTPS页面 # targetUrl = "https://httpbin.org/ip" # 代理服务器(产品官网 www.16yun.cn) proxyHost = "t.16yun.cn" proxyPort = "31111" # 代理验证信息 proxyUser = "username" proxyPass = "password" proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % { "host" : proxyHost, "port" : proxyPort, "user" : proxyUser, "pass" : proxyPass, } # 设置 http和https访问都是用HTTP代理 proxies = { "http" : proxyMeta, "https" : proxyMeta, } # 设置IP切换头 tunnel = random.randint(1,10000) headers = {"Proxy-Tunnel": str(tunnel)} resp = requests.get(targetUrl, proxies=proxies, headers=headers) print resp.status_code print resp.text