Tag: 袜子

java运行时6与socks v5代理 – 可能吗?

我编写了一个应用程序(除此之外)在Windows中运行本地服务,充当Firefox的SOCKS v5代理。 我现在正处于调试阶段,发现某些网站无法正常运行。 例如,Facebook.com上的图片上传Java Applet失败,因为无法查找域。 我的应用程序覆盖隐藏的FF配置设置network.proxy.socks__remote__dns将其设置为true 。 该应用程序的整个目的是允许在防火墙后面访问网站(例如,如果用户在中国),因此此设置对于确保远程解析域(而不仅仅是HTTP请求)至关重要。 在JRE6设置( 此处记录 )中没有相应的设置,因为远程DNS解析是SOCKS v5的一个function而不是v4,因为文档似乎意味着我担心它是不可能的。 如何以编程方式确保JRE对所有请求(包括DNS)使用SOCKS v5代理? 更新:重现此问题的步骤: 确保您位于阻止(或重定向)Internet访问( 包括DNS )的防火墙后面 安装PuTTY并在您选择的某个端口号上添加动态SSH隧道(例如9870)。 然后登录到可以完全访问Internet的远程服务器 启动Firefox,您将无法浏览网页 在FF网络设置中,将SOCKS v5代理设置为localhost:9870 在FF中转到about:config,将network.proxy.socks__remote__dns更改为true 您现在可以浏览网页了。 转到facebook.com,登录,转到您的个人资料并尝试使用图片上传器java applet添加一些图片 它会因一系列类未找到的错误而失败,类似于: load:未找到类com.facebook.facebookphotouploader5.FacebookPhotoUploader5.class 。 我相信这是失败的,因为JRE无法解析该类所在的域。 我基于这样的信念,即文档( http://java.sun.com/javase/6/docs/technotes/guides/deployment/deployment-guide/properties.html )仅讨论SOCKS v4(其中据我所知,不支持远程DNS)。 我的deployment.properties文件位于%APPDATA%\ Sun \ Java \ Deployment中。 我可以确认我在Java控制面板中进行的修改会写入该文件。 如果不是“使用浏览器设置”而是Java的网络设置覆盖并尝试手动使用SOCKS代理设置,我仍然遇到问题。 似乎没有一种简单的方法可以强制JRE通过代理远程执行DNS。 更新2: 没有SOCKS代理,来自我的本地客户端 www.facebook.com解析为203.161.230.171 upload.facebook.com解析为64.33.88.161 两个主机都不可访问(因为防火墙) 如果我登录到远程服务器,我会得到: www.facebook.com 69.63.187.17 upload.facebook.com 69.63.178.32 几分钟后这两个IP都会发生变化,因为看起来Facebook使用循环DNS和其他负载平衡。 […]