无法使用java中的silvertunnel netlib连接到tor网络
我正在尝试连接到tor网络以发送匿名HTTP请求。但它抛出了非法BlockSizeException。我使用了无法使用java中的silvertunnel netlib连接到tor网络,java,tor,silvertunnel,Java,Tor,Silvertunnel,我正在尝试连接到tor网络以发送匿名HTTP请求。但它抛出了非法BlockSizeException。我使用了silvertunnel.org\u netlib.jar public static void main(String[] args) { try { // TODO code application logic here NetLayer lowerNetLayer = NetFactory.getInstance()
silvertunnel.org\u netlib.jar
public static void main(String[] args) {
try {
// TODO code application logic here
NetLayer lowerNetLayer = NetFactory.getInstance().getNetLayerById(NetLayerIDs.TOR);
lowerNetLayer.waitUntilReady();
NetlibURLStreamHandlerFactory factory = new NetlibURLStreamHandlerFactory(false);
factory.setNetLayerForHttpHttpsFtp(lowerNetLayer);
String urlStr = "http://www.whatismyip.com/";
URLStreamHandler handler = factory.createURLStreamHandler("http");
URL context = null;
URL url = new URL(context, urlStr, handler);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("GET");
//connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
//connection.setRequestProperty("Content-Length", String.valueOf(postData.length()));
// Write data
OutputStream os = connection.getOutputStream();
// Read response
StringBuilder responseSB = new StringBuilder();
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
while ( (line = br.readLine()) != null)
responseSB.append(line);
// Close streams
br.close();
os.close();
Document doc=Jsoup.parse(responseSB.toString());
} catch (IOException ex) {
System.out.println(ex);
}
}
我得到了这个错误:
`WARNING: Directory.updateNetworkStatusNew Exception
java.lang.RuntimeException: javax.crypto.IllegalBlockSizeException: Data must not be longer than 256 bytes
at org.silvertunnel.netlib.layer.tor.util.Encryption.verifySignature(Encryption.java:272)
at org.silvertunnel.netlib.layer.tor.directory.DirectoryConsensus.<init>(DirectoryConsensus.java:117)
at org.silvertunnel.netlib.layer.tor.directory.Directory.updateNetworkStatusNew(Directory.java:377)
at org.silvertunnel.netlib.layer.tor.directory.Directory.refreshListOfServers(Directory.java:287)
at org.silvertunnel.netlib.layer.tor.directory.DirectoryManagerThread.updateDirectory(DirectoryManagerThread.java:60)
at org.silvertunnel.netlib.layer.tor.directory.DirectoryManagerThread.run(DirectoryManagerThread.java:76)
Caused by: javax.crypto.IllegalBlockSizeException: Data must not be longer than 256 bytes
at com.sun.crypto.provider.RSACipher.doFinal(RSACipher.java:337)
at com.sun.crypto.provider.RSACipher.engineDoFinal(RSACipher.java:382)
at javax.crypto.Cipher.doFinal(Cipher.java:2087)
at org.silvertunnel.netlib.layer.tor.util.Encryption.verifySignature(Encryption.java:251)
... 5 more
`
`WARNING:Directory.updateNetworkStatusNew异常
java.lang.RuntimeException:javax.crypto.IllegalBlockSizeException:数据长度不得超过256字节
位于org.silvertunnel.netlib.layer.tor.util.Encryption.verifySignature(Encryption.java:272)
位于org.silvertunnel.netlib.layer.tor.directory.directorycensus.(directorycensus.java:117)
位于org.silvertunnel.netlib.layer.tor.directory.directory.updateNetworkStatusNew(directory.java:377)
位于org.silvertunnel.netlib.layer.tor.directory.directory.refreshListOfServers(directory.java:287)
位于org.silvertunnel.netlib.layer.tor.DirectoryManagerThread.updateDirectory(DirectoryManagerThread.java:60)
位于org.silvertunnel.netlib.layer.tor.directory.DirectoryManagerThread.run(DirectoryManagerThread.java:76)
原因:javax.crypto.IllegalBlockSizeException:数据长度不得超过256字节
位于com.sun.crypto.provider.rsaciper.doFinal(rsaciper.java:337)
在com.sun.crypto.provider.rsaciper.engineDoFinal上(rsaciper.java:382)
位于javax.crypto.Cipher.doFinal(Cipher.java:2087)
位于org.silvertunnel.netlib.layer.tor.util.Encryption.verifySignature(Encryption.java:251)
... 还有5个
`
System.setProperty('socksProxyHost','127.0.0.1')
System.setProperty('socksProxyPort','9051')
在main method中添加这两行并使用use也可以使用Autoidetityswitcher作为交换机标识。此答案不回答问题,但建议使用不同的工具并链接到死点。