基于Netty实现高效HTTP代理ip请求

在这里插入图片描述
什么是Netty?
由JBoss制作的Jar包
目标:快速开发高性能、高可靠性的网络服务器和客户端程序。
优势:提供了一个异步的,事件驱动的网络应用框架和工具。

代理服务器实现HTTP代理请求

  • 代理服务器:创建侦听消息的Socket服务端。
  • 在本地配置Internet选项的Http代理,将所有来自自己电脑(浏览器)的请求转发给代理服务器。
  • 代理服务器获取到发送给本机的请求消息后,将其转发给目标主机(即请求行中的主机信息,如百度)
  • 在目标主机响应信息传递到代理服务器之后,地理服务器将响应返回给它自己的PC(浏览器)。
    在这里插入图片描述
    Netty实现HTTP代理服务器的流程
  • Client将http请求发送到服务器,在通常情况下,client通常指浏览器,也可以通过使用netty自行实现客户端。这时,客户机需要使用HttpRequestEncoder来编写http请求。
  • 服务器端解析http请求,在服务端,您需要使用HttpRequestDecoder解码请求,然后实现您自己的业务需求。
  • 服务器端将http响应发送到client,处理完业务需求后,使用HttpResponseEncoder对对应内容进行编码,并返回数据。
  • Client解析http响应,并使用HttpResponseDecoder解码它。

HTTP代理

GET http://csdnimg.cn/public/favicon.ico HTTP/1.1
Host: http://csdnimg.cn
Proxy-Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
Accept: image/webp,image/apng,image/*,*/*;q=0.8
Referer: http://blog.csdn.net/zuoxiaolong8810/article/details/65441709
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
content-length: 0

HTTPS

CONNECT webim.tim.qq.com:443 HTTP/1.1
Host: http://webim.tim.qq.com:443
Proxy-Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36

对于HTTPS来说,第一次的请求都是CONNECT(连接请求).请求头的信息通常也就这么3个主要的.

Netty实现HTTP代理的大致流程就是这样,需要全部代码的朋友请加扣扣群744942694
总体的来说,Netty实现的HTTP代理性能还是比较强的,不仅能够快速地开发高性能的面向协议的服务器和客户端,还可以在Netty上轻松实现各种自定义的协议。

猜你喜欢

转载自blog.csdn.net/zhimaHTTP/article/details/114884162