当我们有时使用爬虫的时候,如果频繁对某一个界面请求过太多的次数,那么有些网站就会因为反爬虫的措施发现同一个IP地址对它请求了太多的次数,因此对我们的爬虫进行了禁止,你必须要登录这个网站才能够继续进行爬虫。这个时候呢,如果我们能够直接在请求网页的时候不断更换自己的IP地址,就不会被系统检查出来。因此,这也是我们需要使用动态IP代理的缘故。
经常会看到大家在群里面讨论隧道代理,那今天我们就来重点了解下隧道代理。所谓隧道代理就是一个能帮你自动更换代理 IP 的代理服务,在你的代码里面,你只需要把一个入口代理地址写死,然后正常发起请求,而目标服务器接收到的请求,每一次都是不同的代理地址。隧道代理的原理,跟常规代理的不同之处,是自动转发技术,通过配置固定代理域名、端口、用户名和密码直接使用,默认每个http请求自动转发,不需要绑定IP白名单。有demo参考使用,方便快捷,适合快速启动项目。
网上有很多的隧道代理提供,那么很多小伙伴要问了,这种代理怎么使用呢?我们今天就重点分享下如何使用隧道代理,最简单的粗暴的方式就是以实际的示例
代码语言:javascript复制#! -*- 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
这是最简单的使用方式,代码我们已经试验过了,代码示例可以直接使用,而且这种使用方式真的很方便,但是代理是使用不了的,因为是过期了,有需要的可以直接找上面的代理商购买使用。