如何通过SOCKS5代理转发HTTP请求?

如何通过SOCKS5代理转发HTTP请求?

目前,我正在使用 SSH 隧道(它在客户端主机上提供 socks5 代理)连接到远程服务器及其网络。我需要访问不同的 WebUI 服务,因此我使用 Firefox 配置文件来设置代理设置以通过 SSH 代理。

现在,我需要对另一台服务器执行相同操作。这意味着我要处理 3 个不同的 Firefox 实例,这可能会相当混乱。

我记得曾经使用过一些免费的代理服务,你可以从浏览器中使用这些服务,而无需更改任何设置,只需输入你想要访问的 URL,然后输入代理服务的 URL。例如,要通过代理访问 google.com,你可以访问类似http(s)://fake-proxy-provider.fake/?https://www.google.es

有没有办法在本地主机上做这样的事情?简而言之:

  • 使用我的普通 Firefox 实例(没有配置代理),我去了一个类似的地方http://localhost:8080/?https://www.google.com
  • 这将https://www.google.com通过 socks5 代理进行请求

答案1

你可以使用代理自动配置 (PAC) 文件。它有一个单独的 javascript 函数,用于接收 URL 并返回 Firefox 应该用来访问它的代理(如果有)。检查链接以查看您拥有哪些内置函数。您可以根据需要使其变得尽可能复杂,只需记住它将在每个请求中被调用。

请注意,PAC 文件可以托管在某个地方,这意味着您只需处理单个实例。

一个例子:

function FindProxyForURL(url, host) {

    if (host == "webui-host1.intranet")
        return "SOCKS5 localhost:9001";

    else if (host == "webui-host2.intranet")
        return "SOCKS5 localhost:9002";

    else
        return "DIRECT";
}

在这种情况下,webui-host1.intranet 将使用 localhost:9001 处的 SOCKS5 服务器,而 webui-host2.intranet 将使用 localhost:9002 处的 SOCKS5 服务器。其余 URL 将不使用代理。

然后,你可能会得到如下的结果:

$ ssh -D 9001 [email protected]

$ ssh -D 9002 [email protected]

相关内容