前言
工作中遇到了一个网络代理的问题,简单的对代理总结了一下。
网络代理实际上就是一个中介。简单来说,客户端A和服务器B不能够直接连接,此时通过一个中间的代理服务器C,使得客户端A通过代理服务器C能够连接到服务器B,就是网络代理。
常见的网络代理有正向代理和反向代理两种。
一、正向代理
正向代理是客户端代理,类似于一个跳板,当客户端A无法访问服务器B时,可以通过一个正向代理去间接的访问,所以客户端是需要配置代理服务器的IP,一般称为客户端代理。
举例来说,国内访问Google直接访问无法访问到,我们就可以通过一个正向代理服务器,将请求发送到代理服务器,代理服务器去访问Google。这样代理服务器就可以从Google中取到数据返回给我们,这样我们就能够成功访问Google。
由于正向代理客户端需要进行配置,作为一个Android开发,对正向代理需要有一定的了解。
正向代理如图所示:
![](https://img.haomeiwen.com/i16647598/011f4f398e2e9ea7.jpg)
1. 在Android中的正向代理配置方式
在Android中配置整下代理可以通过进行全局配置的方式进行配置,示例代码如下:
public void setProxy(){
// HTTP 代理,只能代理 HTTP 请求
System.setProperty("http.proxyHost", "IP地址");
System.setProperty("http.proxyPort", "端口");
// HTTPS 代理,只能代理 HTTPS 请求
System.setProperty("https.proxyHost", "IP地址");
System.setProperty("https.proxyPort", "端口");
}
此方法需要在程序开始运行的时候进行调用,例如在Application的onCreate方法中进行调用。
2. Android测试代理配置
Android测试代理配置是否生效推荐使用Charles软件。Charles软件是一个比较常用的客户端抓包软件,可以通过更改WiFi配置完成对客户端的抓包。
抓包流程在此不再说明,需要注意的是,在Android配置抓包时,安装Charles软件的PC实际上相当于一个代理服务器,其代理的地址是你当前PC的IP地址。可以根据这一特性,通过抓包流程来同时测试代理配置是否生效。
二、 反向代理
反向代理中,客户端是无感知代理的存在,以代理服务器来接受Internet上的链接连接请求,然后将请求转发给内部网络的服务器上,并将服务器上得到的结果返回给Internet上请求链接的客户端。
反向代理是需要服务器端进行配置,客户端不需要进行配置,也成为服务端代理。
具有如下的作用:
- 反向代理可以保证内网的安全,公网作为访问地址,web服务器作为内容,阻止web攻击。
- 负载均衡。
反向代理如图所示:
![](https://img.haomeiwen.com/i16647598/5933a3e9f9613c12.jpg)
网友评论