- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在用 Java 开发自定义 SOCKS5 服务器。除了包含 HOST 和 PORT 的第一个 CONNECT 消息之外,还有什么方法可以检查后续消息以确定数据协议(protocol)?例如,如果应用程序数据以“GET/...”开头,请求很可能是超文本传输协议(protocol) (HTTP),但这远不是一个完整的解决方案。有没有办法查看数据是 HTTPS、FTP 还是“Netflix 流媒体”等...?
其次,如果数据是 http 或 https,我如何将请求转发到专用的 HTTP 代理?
最佳答案
is then any way to inspect the subsequent messages to determine the protocol of the data?... s there a way to see if the data is say HTTPS, or FTP, or "NetFlix streaming", etc...?
基本上你有目标端口、目标 IP 地址和主机名(如果 DNS 解析也通过 SOCKS5 服务器完成)和有效负载。基于众所周知的目标主机、目标端口和典型负载的知识,您可以构建启发式算法来猜测协议(protocol)。
您会在当今的入侵检测系统、更好的防火墙和流量分类器中发现此类启发式方法,它们在检测质量上有很大差异,坚定的用户通常可以愚弄这些启发式方法。这是一个非常广泛的主题,但您可能会开始查看免费的深度检查 (DPI) 库,例如 nDPI并阅读更多关于 DPI at Wikipedia 的信息.
Secondarily, if the data is http or https how would I forward the request to a dedicated HTTP proxy?
首先把target从client请求的target改成proxy。当然,这必须在传输任何数据之前完成,这可能与您在数据流上执行的 DPI 冲突,因为某些连接首先从服务器(如 SMTP)获取数据,而其他连接(如 HTTP(S))首先从客户端获取数据。因此,您可能需要在获取任何负载之前查明这是否是 HTTP(S),即仅基于目标端口。对于 HTTPS,您随后需要使用 CONNECT 请求建立隧道,如 RFC 2817 中所述。 .对于 HTTP,您将修改请求以不仅包含路径,还包含完整的 URL(即 http://host[:port]/path
)。
如您所见,所有这些都使用了很多适用于大多数但并非所有情况的启发式方法。除此之外,这可能是一项非常复杂的任务,具体取决于您需要的流量分类质量。
关于java - 从 java SOCKS 套接字检测协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35823957/
我在使用 IdHTTP 客户端组件时遇到一般 Indy 错误结合 SOCKS5 代理服务器并使用 SSL。 如果我将 IdHTTP 组件与我的 SOCKS5 代理(和非 https URL)一起使用,
使用代理连接(HTTP 代理:10.3.100.207,端口 8080)。 使用 python 的 request 模块的 get 函数,得到以下错误: “无法从 socks://10.3.100.2
如何为我的应用程序添加 SOCKS 支持?我在哪里可以得到库? 最佳答案 来自 http://java.sun.com/javase/6/docs/technotes/guides/net/proxi
我正在设置一个安装和配置了 docker 的基础镜像,这样当我运行我的 jenkins 管道时我可以进行 anchor 扫描。我必须将 anchor 图像拉到 docker 图像中,因为我的管道在 d
我提供了一个工作客户端和服务器文件。客户端向服务器发送图片。当你注释掉时: data = sock.recv(1024) print("received: ",str(data,"UTF-8")) 图
为什么我的 SOCKS 代理代码抛出 SocketException: Malformed reply from SOCKS server?我试过在 URLConnection 或其他中设置,但这不起
您好,我刚刚下载了适用于 OS X 10.11 的 mysql 5.7.13,我在让 phpmyadmin 连接它时遇到问题。 我能够完全安装 mysql,打开 mysql 服务器并设置 root 密
我正在尝试从容器内部控制主机 docker 服务。 对于 Linux 主机和 Linux 容器,通常是这样完成的:docker run -it -v/var/run/docker.sock:/var/
我正在使用将执行 docker 命令(docker ps 等)的图像设置 kubernetes 部署。 我的 yaml 如下所示: kind: Deployment apiVersion: apps/
我使用 this guide 安装 docker .我正在使用 Distributor ID: Ubuntu Description: Ubuntu 13.10 Release: 13.1
我正在使用以下命令启动docker: /usr/bin/dockerd --bip=172.30.224.1/21 --ip-masq=false --mtu=1450 --containerd=/r
我刚注册到 Stack Overflow,因为从 2 天前开始我真的无法摆脱这个问题。我使用 Xampp。 所以,我正在关注这个 Laravel tutorial当我从终端输入项目目录或每个其他目录
首先,我发誓我已经查看了涉及此错误的每一个问题。几乎每个人提供的解决方案都是不同的,而且似乎没有人理解错误的系统原因。我和网络上遇到这个常见问题的许多人需要的是对实际出了什么问题的解释。 基本上,当我
Magento 显示“处理您的请求时出错” 尝试命令“sudo service mysqld restart”但启动失败 然后看到日志显示“SQLSTATE[HY000] [2002] 没有这样的文件
Ubuntu 15.04 64位,docker 1.6.1,用户在docker组中。 操作系统启动后,每个docker命令执行都会导致此错误: FATA[0000] Get http:///var/r
我的问题开始于我无法再以 root 身份登录我的 mysql 安装。我试图在没有打开密码的情况下运行 mysql...但是每当我运行命令时 # mysqld_safe --skip-grant-tab
我的问题开始于我在安装 mysql 时无法再以 root 身份登录。我试图在没有打开密码的情况下运行 mysql ......但是每当我运行命令时 # mysqld_safe --skip-grant
简单明了,谁能解释一下如何通过代理 (socks4/5) 连接到 mysql 服务器。最好通过 mysql 命令行(尽管在客户端中没有选项)。 如果无法通过 mysql 命令行,那么任何其他方法都可以
简单明了,谁能解释一下如何通过代理 (socks4/5) 连接到 mysql 服务器。最好通过 mysql 命令行(尽管在客户端中没有选项)。 如果无法通过 mysql 命令行,那么任何其他方法都可以
我试图通过与 SoX 中的脉冲响应进行卷积来应用混响。以下 shell 脚本完全符合我的要求: #!/usr/bin/env bash # # Convolve audio file with and
我是一名优秀的程序员,十分优秀!