http代理 PROXY常见的分为两种
- 一种是CONNECT 隧道模式
- 一种是普通代理模式
CONNECT隧道模式
该模式主要用于客户端与服务端的交互内容是加密了的,代理服务器无法解析出来加密了的内容,也就无法识别最终的目标服务器等信息,如浏览器访问https的目标时,浏览器会自动往代理服务器发送
CONNECT xxxxxx.xxxx:xx HTTP/1.1
代理头部1: 代理头部值1
代理头部1: 代理头部值1
代理头部1: 代理头部值1
空行(\n或者\r\n)
以上信息一直到空行为止,是给代理服务器看的,是明文,注意这部分内容是代理服务器获取,不需要转发到目标服务器
代理服务器需要解析xxxxxx.xxxx:xx,并连接到目标xxxxxx.xxxx:xx ,连接成功需要返回HTTP/1.1 200 Connection Established\n\n(这里是两个空行)
try {
response = new Socket(getTargetHost(),
getTargetPort());
getRequest().getOutputStream().write(
"HTTP/1.1 200 Connection Established\n\n"
.getBytes());
} catch (Exception e) {
getRequest().getOutputStream().write(
"HTTP/1.1 502 Bad Gateway\n\n".getBytes());
return true;
}
这部分交互完成,就是双向流拷贝了,这个没什么好说的,就是把a的input得到的数据,通过b的output输出
普通代理模式
交互明文的,与http协议基本一致,唯一的区别在于发送GET(POST一样)的协议数据的时候
GET /test.html HTTP/1.1
会变成
GET http://sxxxxx.com/xxxx.html HTTP/1.1
代理服务器需要通过这行头部,解析出目标的ip和端口,并做全部内容转发,转发前需要把头部信息修改回去(不修改其实也可以,因为大多数比较新的HTTP服务器软件,依然解析的出来)
Pattern pattern = Pattern.compile("http:\\/\\/([^/:]+)([:]{0,1}\\d*)?");
Matcher matcher = pattern.matcher(lines[1]);
//普通代理模式
if(matcher.find()) {
//修改host,port
String domain = matcher.group(1);
String port = matcher.group(2);
//解析出host
if(port.equals("")) {
this.targetPort = 80;
} else {
this.targetPort = Integer.valueOf(port.replace(":", ""));
}
this.targetHost = domain;
line = line.replace(matcher.group(0), "");
isHttpProxy = true;
}
分享到:
相关推荐
### SOCK-HTTP代理协议解析 #### 一、引言 随着互联网技术的不断发展与网络环境的日益复杂化,为了确保网络安全、控制访问权限以及优化网络性能,越来越多的企业和个人选择使用代理服务。代理服务通过中间服务器...
本文将深入探讨自定义代理协议,尤其是如何支持UDP和TCP这两种主要的网络传输协议。 首先,TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是互联网协议栈中最基础的两种传输层协议。TCP是一...
Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件)。 Fiddler 要比其他的网络调试器要更加简单...
Fiddler代理可查看经过的http协议、https协议的所有请求和响应,便于Web开发调试
HTTP协议和TCP协议pcap数据包下载,支持抓包软件(如:wireshark)打开并学习HTTP协议和TCP协议报文解析。需要其他协议,请查看我发布的其他资源。
这个代理程序主要用于帮助用户通过HTTP代理协议访问互联网,以实现共享上网或者在某些特定环境下进行网络访问。 代理程序的核心概念是中间人(Man-in-the-Middle, MITM)机制,它充当客户端和目标服务器之间的桥梁...
3. **代理协议**:代理服务器可能遵循多种协议,如SOCKS、CGI或HTTP代理协议。理解这些协议的工作方式有助于正确处理客户端的请求和转发到目标服务器。 4. **线程管理**:由于代理服务器可能同时处理多个客户端请求...
《易语言WebSocket支持多线程连接代理协议头操作详解》 在现代的互联网通信中,WebSocket作为一种双向通信协议,已经成为实时应用的重要基础。易语言,作为国内广泛使用的编程语言,其对WebSocket的支持使得开发者...
HTTP代理服务器,通过它的所有HTTP代理连接协议都可以查看和分析,用于分析HTTP协议和数据的好工具,支持HTTPS协议,但没法查看真实内容 帮助请看 http://blog.csdn.net/flashcom/article/details/6894639
代理IP分为多种类型,其中HTTP和HTTPS代理主要处理基于HTTP(超文本传输协议)和HTTPS(安全超文本传输协议)的网络请求,而SOCKS5代理则是一种通用的代理协议,支持TCP/IP层的各种协议,包括HTTP、FTP等。...
此外,代理服务器也可能需要处理HTTP代理协议的认证机制,如Basic Auth或Digest Auth。 8. **性能优化** 高性能的代理服务器可能包含缓存机制,以减少对目标服务器的重复请求。这可以通过缓存HTTP响应来实现,尤其...
用于Burp Suite的非HTTP协议扩展(NoPE)代理和DNS
基于Netty实现的内网穿透&反向代理的工具 (支持TCP上层协议和HTTP的穿透式反向代理).zip
### HTTP代理穿透方法详解 #### 一、引言 HTTP代理穿透是指客户端通过HTTP代理服务器访问互联网资源的技术手段。在很多场景下,由于网络安全策略或技术限制,客户端不能直接访问某些资源,这时就需要借助HTTP代理...
Python爬虫代理怎么采用HTTP协议的代理IP.docxPython爬虫代理怎么采用HTTP协议的代理IP.docxPython爬虫代理怎么采用HTTP协议的代理IP.docxPython爬虫代理怎么采用HTTP协议的代理IP.docxPython爬虫代理怎么采用HTTP...
这种代理模式遵循了HTTP代理协议的规定,能够处理各种HTTP方法(如GET、POST等)以及相关的头信息。 自动随机切换代理IP的实现可能涉及到以下几个关键点: 1. **IP池管理**:首先,ProxyServer需要维护一个代理IP...
**HTTP协议详解** HTTP(Hypertext Transfer Protocol)超文本传输协议是互联网上应用最广泛的一种网络协议。它定义了客户端(通常是Web浏览器)与服务器之间的通信格式,用于从万维网服务器传输超文本到本地浏览器...
Proxifier 是一款功能非常强大的socks5代理服务器,可以让不支 ...代理链。支持64位系统,支持Xp,Vista,Win7,...socks5,http代理协议,支持TCP,UDP协议,可以指定端口, 指定IP,指定程序等运行模式,兼容性非常好。