正向代理和反向代理的概念
无论是正向代理,还是反向代理,说到底,就是代理模式的衍生版本罢了。我们都学习过代理设计模式,都知道代理模式中有代理角色和被代理角色,为什么这么说,因为这两个角色对于我们理解正向和反向代理非常重要
正向代理
意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),
然后代理向原始服务器转交请求并将获得的内容返回给客户端。
反向代理
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,
然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,
简单来说就是真实的服务器不能直接被外部网络访问,想要访问必须通过代理。
![image.png](https://static.studygolang.com/200714/acd870749c851546a8947de9ea73d3b4.png)
为什么要使用反向代理?
反向代理的主要作用是分发请求。
反向代理可以用来隐藏服务器,对于用户来说,他们访问的是反向代理,然后由反向代理通过防火墙与真正的服务器进行通讯,这样真正的服务器对于用户来说是透明的
反向代理还可以用来进行负载均衡,当大量用户进行访问的时候,访问的是反向代理,然后由隐藏在后面的某一个服务器进行真正的数据处理,每一次处理的服务器不一定是哪个,从而实现负载均衡
python爬虫使用代理代码demo
#! -*- 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
爬虫程序需要使用到爬虫代理ip 时,尽量选择高匿亿牛云代理。![2660278-bfdc4848a69c14d1.webp.jpg](https://static.studygolang.com/200714/3ac4bb0590778afe599574cc4df5d004.jpg)
有疑问加站长微信联系(非本文作者)