爬虫HTTP代理异常处理方式
分类:
文章
•
2024-01-31 21:19:28
- 为什么要设置代理
代理分为用户代理use-agent和ip代理proxy,两者的区别在于user-agent更多在于本地用户服务管理来伪装自己,相当于人换了件衣服,而proxy代理更倾向于服务器访问,例如,A要访问B,但是不能直接访问B,就要通过proxyC来访问,相当于借刀杀人的作用。
一般来说,服务器会禁止同一用户或者同一ip在某个时段高频率访问网站,或者为了防止黑客攻击手段,都会对用户进行反爬虫处理,而我们需要设置代理池来伪装自己,假装自己不是机器人而是一个真实的用户。
- 如何设置用户代理(user-agent)
user-agent一般是存在http请求头里面。UA是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。
#! -- 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)[email protected]%(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
有些网站会检查你是不是真的浏览器访问,还是机器自动访问的。这种情况,加上User-Agent,表明你是浏览器访问即可。有时还会检查是否带Referer信息还会检查你的Referer是否合法,一般再加上Referer。
User-Agent可以用亿牛云提供给的真实库,Referer的来源可以伪装成百度搜索来的。
3.HTTP异常处理方式

从示例中可以看到,两种方式都能输出异常:其中第二种中HTTPError必须写在URLError异常前,因HTTPError是URLError的子类,如果URLError在前面它会捕捉到所有的URLError(包括HTTPError )。
使用高质量爬虫代理,解决这些异常处理更容易些。