首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用java中的Silver隧道netlib连接tor网络

无法使用java中的Silver隧道netlib连接tor网络
EN

Stack Overflow用户
提问于 2014-06-20 11:12:47
回答 1查看 765关注 0票数 2

我试图连接到tor网络发送匿名HTTP请求。但它抛出了IllegalBlockSizeException。我用过silvertunnel.org_netlib.jar

代码语言:javascript
复制
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);
        }

    }

我发现了一个错误:

代码语言:javascript
复制
`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
`
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-04 06:38:43

System.setProperty('socksProxyHost','127.0.0.1');

System.setProperty('socksProxyPort','9051');

在主方法中添加这两行并使用维达利亚

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24325977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档