重定向特定域的网络流量(SOCKS代理)

重定向特定域的网络流量(SOCKS代理)

由于某些原因,我在工作时屏蔽了 YouTube。

我是一名科学家,我需要YouTube,因为我想看的大多数会议和演讲都可以在那里找到。是的,我确实需要 YouTube,为了科学。

我跟学校的网络管理员谈过,但他有点难相处,也不懂任何道理。他就是那种认为互联网会通过固定的通道和端口,并且实际上可以阻止访问 YouTube 之类的东西的人。

无论如何,幸运的是我有一个专用的服务器,所以我可以像这样在那里进行 ssh 代理:

ssh -D 5000 -CN 我自己@myserver

然后配置 Firefox(是的,Firefox,因为 Chrome 很懒,只依赖于 OS X 设置 [是的,我在 OS X 上])以使用 SOCKS5 代理到该端口,这样几乎就可以获得我想要的所有互联网连接。

由于这里的互联网非常棒,我没有遇到任何明显的延迟或带宽问题。

问题是,我的专用服务器向我收取带宽费用,而且为了下载一些大文件(出于科学原因,我也需要这些文件),我必须关闭所有服务。因此,由于我不想每次想看 YouTube 视频时都打开和关闭这个服务,所以我想以某种方式告诉 Firefox(或我的计算机)只通过 SOCKS5 代理路由 youtube.com。我发现反过来也很容易做到(即,如果流量不是针对这些域的,则通过代理发送所有流量),但我不知道设计师怎么没有想到相反的情况。

有人知道实现这一目标的简单方法吗?

答案1

您可以创建一个代理自动配置(PAC)文件,并在“自动代理配置 URL”下对其进行配置(将 PAC 文件放在 HTTP 服务器上的某个位置,或使用file:///path/to/file.pac-style URL)。

PAC 文件本身是一个文本文件(JavaScript),定义了一个确定使用哪个代理的函数:

function FindProxyForURL(url, host)
{
  if (shExpMatch(url, "*.youtube.com/*")) {
    return "SOCKS localhost:5000";
  } else {
    return "DIRECT";
  }
}

这是一个简单的例子,应该能满足您的需求,但使用 PAC 可以定义非常复杂的代理方案(例如,考虑一天中的时间、拥有多个代理、取决于本地 IP 地址等)。您可以在互联网上轻松找到有关 PAC 文件的更多信息,例如http://findproxyforurl.com/pac-functions/

答案2

我不知道 Firefox 的情况,但在 Chrome 上我使用扩展程序 Proxy SwitchySharp (https://chrome.google.com/webstore/detail/proxy-switchysharp/dpplabbmogkhghncfbfdeeokoefdjegm,请查看该站点的第三个屏幕),我可以在其中创建规则。

通过此功能,您可以创建一个规则,其中域 youtube.com 使用配置的代理,而所有其他网站都不使用任何代理。

答案3

如果您只想通过代理访问某些域,那么扩展可以通过模式做出选择。例如*youtube*,无论它们使用的域是什么。FoxyProxy 都可以做到https://addons.mozilla.org/en-us/firefox/addon/foxyproxy-standard/

相关内容