单个程序的端口路由/DNS

单个程序的端口路由/DNS

背景

Flickr 已关闭其 http api,仅保留 https api。我最喜欢的上传器(在 wine 下运行的官方 Flickr Uploadr 版本 2.5)不再维护,所以这个更改破坏了它。

我当前的解决方案是设置一个反向代理服务器来转换http://www.flickr.comhttps://www.flickr.com修复我的 DNS,以便www.flickr.com将流量转发到该代理服务器。

这是可行的,但显然我不希望所有的 flickr 流量都流向代理,而只希望来自上传者的流量。

问题

我可以仅将从此应用程序定向到 www.flickr.com 的流量发送到我的反向代理吗?

补充问题

有没有更简单的方法来实现这一目标?例如,无需代理服务器http://www.flickr.com直接转发。https://www.flickr.com

解决方案

尴尬的是,该应用程序本身有一个代理设置,所以我所要做的就是将其设置为指向我的代理服务器。另外,下面 Giles 的回答显示了如何为单个 Unix 应用程序和所有 Wine 应用程序设置代理。

答案1

仅 DNS 无法帮助您:它可以将您的客户端指向另一台计算机,但该计算机必须在端口 80 上提供预期的 Flickr 内容。

您需要的是一个通过 HTTP 接收 HTTP 请求并使用 HTTPS 重新发出请求的代理。将您的上传者指向此代理;代理是发出 DNS 请求的人,而不是客户端,因此您根本不需要摆弄 DNS。

阿帕奇与mod_proxymod_ssl是一个简单的,如果重量级的,这样的代理。我现在想不出现成的轻量级解决方案。修改Python的SimpleHTTPServer可能是另一种解决方案。

要将 Wine 应用程序指向代理,请参阅葡萄酒常见问题解答§7.18“如何配置代理?”。有两种解决方案:

  • 通常的unix解决方案:设置环境变量http_proxy,例如(如果您的代理正在侦听端口8070):

    export http_proxy=http://localhost:8070/
    wine 'c:/Program Files/Flickr Uploader/Flickr Uploader.exe'
    
  • Wine 方法:设置[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings] ProxyEnable注册表项(语法请参阅 Wine FAQ)。

答案2

在您的盒子上创建一个 SSH 端口转发,并将上传器指向本地端口。

ssh -L 80:www.flickr.com:443 user@localhost

将上传者指向localhost:80,端口转发会将流量铲到www.flickr.com:443

相关内容