我正在寻找支持认证的java socks Proxy客户端类,有什么建议吗?java.net.Proxy不支持身份验证.
编辑:我似乎找不到通过套接字将身份验证数据附加到特定代理主机的方法.Authenticator.setDefault()仅允许一组凭据.
Authenticator.setDefault(new Authenticator(){
protected PasswordAuthentication getPasswordAuthentication(){
PasswordAuthentication p=new PasswordAuthentication("xxx", "xxx".toCharArray());
return p;
}
});
Proxy proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("xxx.xx.xxx.xxx", xxx));
Socket sock = new Socket(proxy);
sock.connect(new InetSocketAddress(server,xx));
Run Code Online (Sandbox Code Playgroud) 我正在尝试排序SOCKS代理列表,并找出哪些连接和读取时间小于1000毫秒,这是我的代码
for(Proxy p : proxies) {
try {
URLConnection testConnection = testUrl.openConnection(p);
testConnection.setConnectTimeout(TIMEOUT_VALUE);
testConnection.setReadTimeout(TIMEOUT_VALUE);
success.add(p);
} catch(SocketTimeoutException ste) {
System.out.println("Proxy " + p.address().toString() + " timed out.");
}
}
Run Code Online (Sandbox Code Playgroud)
但是他们中的每一个人都通过了测试,即使我做了TIMEOUT_VALUE = 1;什么我做错了什么?谢谢你的帮助.
问题:我正在尝试使用iOS XMPPFramework和OpenFire服务器进行TURN连接(XEP-0065).我希望能够发送和接收文件.但是,我收到503服务不可用的错误.
注意:我的代码基础来自以下教程:http://mobile.tutsplus.com/tutorials/iphone/building-a-jabber-client-for-ios-server-setup/
XML错误:
我通过TURNSocket.m进行了调试.它进入processRequestResponse并具有以下XML.(如果我没弄错的话,这是从OpenFire发送给我的,而不是反过来的?)......
<iq xmlns="jabber:client"
type="error"
id="03CC977E-2645-4E87-AE78-536D985CA2B5"
from="friendsUsername@beta.myCompany.co.uk"
to="myUsername@beta.myCompany.co.uk/12f10b69">
<query xmlns="http://jabber.org/protocol/bytestreams"
sid="03CC977E-2645-4E87-AE78-536D985CA2B5"
mode="tcp">
<streamhost jid="proxy.beta.myCompany.co.uk"
host="127.0.1.1"
port="7777"/>
</query>
<error code="503"
type="cancel">
<service-unavailable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
</error>
</iq>
Run Code Online (Sandbox Code Playgroud)
为什么会出错?
更新:XEP-0065说明如下.即使这个错误看起来与我的有点不同,它是否相关?如果是这样,问题是什么?
如果代理无法充当StreamHost,则代理必须向请求者返回错误,应该是请求者
<not-allowed/>.Run Code Online (Sandbox Code Playgroud)<iq from='requester@example.com/foo' id='uj2c15z9' to='streamer.example.com' type='error'> <error type='cancel'> <not-allowed xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> </error> </iq>
更新:目前我正在研究在各种发送和检索的XML位中是否包含或排除JID资源是问题所在.或者,我在下面的xml中甚至没有'from'.文档意味着我需要这个.这是问题吗?我没有看到代码中的当前方式来制作'来自'...
<iq type="get"
to="beta.myCompany.co.uk"
id="215784CF-81A8-403E-89BF-455C926BEAE5">
<query xmlns="http://jabber.org/protocol/disco#items"/>
</iq>
Run Code Online (Sandbox Code Playgroud)
更新19/04/12上午11:00:为了回应Matt J的回复,我发布了更多的XML.我不确定Matt是否要求发送和检索内容的完整XML日志,但为了以防万一,现在就是这样.请注意,这些日志并非全部来自同一个运行(因为当我调试它以获取XML日志时,它会导致超时,所以我必须重新开始)
发送:
<iq type="get" to="beta.myCompany.co.uk"
id="082A1987-384F-43CD-9E7B-A2C0E31F2CA8">
<query xmlns="http://jabber.org/protocol/disco#items"/>
</iq>
Run Code Online (Sandbox Code Playgroud)
回应:
<iq xmlns="jabber:client"
type="result"
id="18EED477-B0E4-492D-89CF-CA692FCF13AD"
from="beta.myCompany.co.uk" …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种在我的 java 应用程序中使用 ssh 绑定连接到我的远程服务器的方法。我在终端中输入如下命令来连接我的服务器:
ssh -D 1234 username@w.x.y.z
Run Code Online (Sandbox Code Playgroud)
然后我可以将我的浏览器袜子 ip 和端口配置为:
socks ip: 127.0.0.1
socks port: 1234
Run Code Online (Sandbox Code Playgroud)
& 使用我的服务器浏览互联网内部
现在请帮助我在我的 Java 应用程序中执行此操作。
目前我在我的程序中使用了一个名为 JSCH 的库,但我无法让我的应用程序工作。你有任何想法或示例代码或任何关于这个问题的东西吗?
(请注意,Java 库中应同时支持 SOCKS v4 和 v5)
我需要使用我的Heroku/Rails应用程序连接到API,我需要有静态IP.
我知道附加组件proximo - https://devcenter.heroku.com/articles/proximo - 但它的价格非常高,所以这是不可能的.
在我的情况下,大多数人最终部署到EC2而使用弹性IP作为他们的静态IP.我也试过这个并且它有效,但我发现整个EC2的流程真的很麻烦.
我已经在一些答案中读到可以设置EC2服务器并将其用作Heroku/Rails应用程序的代理 - 用于SFTP的Heroku静态IP - 但对于不是非常服务器的人来说这听起来非常神秘 -精明.
有人可以提供有关如何设置Heroku/Rails应用程序以将EC2实例用作代理的分步教程吗?
有没有办法通过 sock 代理调用 HbaseAdmin/Htable?我想使用 localhost:1080 袜子代理映射到集群中的一个盒子,然后与 Hbase(Zookeeper、Master、RegionServer)交谈。有没有办法做到这一点?
谢谢。
proxifier如何工作?
例如 - 我的大学不允许学生连接到torrent网站.但是当我们在proxifier中放置一个特定的ip地址并在proxifier中将"协议类型"设置为HTTPS时,torrent网站就会打开.它是如何发生的.只是这一个具体的ip(172.16.1.11)工作正常,没有别的.这个ip有什么特别之处.
Android SDK管理器(android-sdk-manager)的默认代理是HTTP,但问题是如何将它与SOCKS一起使用(我的操作系统是Windows 7)?
浏览器可以通过SOCKS 5代理DNS请求.我不明白这个过程是如何工作的.
如我错了请纠正我.在正常的DNS操作中,程序通过其操作系统进行DNS解析,而操作系统又配置为访问特定的DNS服务器并在那里进行查询.因此,在正常操作中,浏览器不应该自己通过网络进行DNS查询.
现在,使用SOCKS代理,浏览器需要自己进行查询.浏览器如何知道代理隧道另一端将存在哪个DNS服务器?
我必须通过SOCKS 5代理使用python 3发出DNS请求。(因此,没有从我的IP地址发出DNS请求,socks5代理为我完成了该请求,并且应该以相应的A / AAA记录响应,或者如果无法解决,则不响应/提供其他任何响应)
我找到了以下github项目:
rthalley / dnspython:不支持代理/袜子
Anorov / PySocks:没有ipv6,没有接收远程DNS响应的可能性
我发现了以下stackoverflow线程: Python-通过代理使用socket.gethostbyname- >它使用不支持ipv6的pysocks->对我不可用
你知道如何完成我的任务吗?