0
我想使用socks代理來訪問服務器。但有些事情是不對的。我有一個代理,代理的所有者聲稱它是一個襪子代理。使用Socks代理進行HTTP調用
我簡化了我的問題,現在嘗試使用下面的代碼訪問google.com。
URL url = new URL("https://www.google.com");
URLConnection connection = null;
SocketAddress proxySocketAddress1 = new InetSocketAddress("XXXXXXXXXX", 8081);
Proxy proxy = new Proxy(Proxy.Type.SOCKS, proxySocketAddress1);
connection = url.openConnection(proxy);
connection.setConnectTimeout(150000);
connection.connect();
無法用Google建立連接。但是,如果使用PROXY類型爲HTTP,則工作,如果我替換上面的代碼的第4行與
Proxy proxy = new Proxy(Proxy.Type.HTTP, proxySocketAddress1);
即我嘗試使用瀏覽器(鉻),並指定相同的代理爲「襪子到達google.com代理「和」http代理「,並能夠打開谷歌之後。
不知道當給定的代理在瀏覽器中作爲SOCKS代理工作時,爲什麼它不能在代碼中工作?
如果我得到這個工作,然後最終我想要做的事,如:
SocketAddress socketAddress = new InetSocketAddress(proxyHostname,proxyPort);
Proxy socketProxy = new Proxy(Proxy.Type.SOCKS, socketAddress);
socket = new Socket(socketProxy);
InetSocketAddress socketAddress = new InetSocketAddress(hostIP,hostPort);
socket.connect(socketAddress,100000);
任何建議我可以試試嗎?
其實它是一個SOCKS4代理。當我試圖連接通過SOCKS4,然後我能夠達到谷歌通過代碼。 – user3280587
然後奇怪的是,java應用程序可以使用它作爲HTTP代理,但不能作爲SOCKS代理。也許你應該做一個tcpdump來看看真正發生了什麼。 –