Java Jsoup 正在下载种子文件
Java Jsoup downloading torrent file
我遇到了问题,我想连接到此网站 (https://ww2.yggtorrent.is) 以下载 torrent 文件。我已经通过运行良好的 Jsoup 制作了一种连接网站的方法,但是当我尝试使用它来下载 torrent 文件时,网站 return "You must be connected to download file".
这是我的连接代码:
Response res = Jsoup.connect("https://ww2.yggtorrent.is/user/login")
.data("id", "<MyLogin>", "pass", "<MyPassword>")
.method(Method.POST)
.execute();
这是我下载文件的代码
Response resultImageResponse = Jsoup.connect("https://ww2.yggtorrent.is/engine/download_torrent?id=285633").cookies(cookies)
.ignoreContentType(true).execute();
FileOutputStream out = (new FileOutputStream(new java.io.File("toto.torrent")));
out.write(resultImageResponse.bodyAsBytes());
out.close();
我已经测试了很多东西,但现在我毫无头绪。
您唯一没有在代码中向我们展示的是从响应中获取 cookie。我希望你这样做是正确的,因为你使用它们来发出第二个请求。
此代码看起来像您的代码,但包含我如何获取 cookie 的示例。我还添加了 referer header。它成功地为我下载了那个文件并且 utorrent 正确地识别了它:
// logging in
System.out.println("logging in...");
Response res = Jsoup.connect("https://ww2.yggtorrent.is/user/login")
.timeout(10000)
.data("id", "<MyLogin>", "pass", "<MyPassword>")
.method(Method.POST)
.execute();
// getting cookies from response
Map<String, String> cookies = res.cookies();
System.out.println("got cookies: " + cookies);
// optional verification if logged in
System.out.println(Jsoup.connect("https://ww2.yggtorrent.is").cookies(cookies).get()
.select("#panel-btn").first().text());
// connecting with cookies, it may be useful to provide referer as some servers expect it
Response resultImageResponse = Jsoup.connect("https://ww2.yggtorrent.is/engine/download_torrent?id=285633")
.referrer("https://ww2.yggtorrent.is/engine/download_torrent?id=285633")
.cookies(cookies)
.ignoreContentType(true)
.execute();
// saving file
FileOutputStream out = (new FileOutputStream(new java.io.File("C:/toto.torrent")));
out.write(resultImageResponse.bodyAsBytes());
out.close();
System.out.println("done");
我遇到了问题,我想连接到此网站 (https://ww2.yggtorrent.is) 以下载 torrent 文件。我已经通过运行良好的 Jsoup 制作了一种连接网站的方法,但是当我尝试使用它来下载 torrent 文件时,网站 return "You must be connected to download file".
这是我的连接代码:
Response res = Jsoup.connect("https://ww2.yggtorrent.is/user/login")
.data("id", "<MyLogin>", "pass", "<MyPassword>")
.method(Method.POST)
.execute();
这是我下载文件的代码
Response resultImageResponse = Jsoup.connect("https://ww2.yggtorrent.is/engine/download_torrent?id=285633").cookies(cookies)
.ignoreContentType(true).execute();
FileOutputStream out = (new FileOutputStream(new java.io.File("toto.torrent")));
out.write(resultImageResponse.bodyAsBytes());
out.close();
我已经测试了很多东西,但现在我毫无头绪。
您唯一没有在代码中向我们展示的是从响应中获取 cookie。我希望你这样做是正确的,因为你使用它们来发出第二个请求。
此代码看起来像您的代码,但包含我如何获取 cookie 的示例。我还添加了 referer header。它成功地为我下载了那个文件并且 utorrent 正确地识别了它:
// logging in
System.out.println("logging in...");
Response res = Jsoup.connect("https://ww2.yggtorrent.is/user/login")
.timeout(10000)
.data("id", "<MyLogin>", "pass", "<MyPassword>")
.method(Method.POST)
.execute();
// getting cookies from response
Map<String, String> cookies = res.cookies();
System.out.println("got cookies: " + cookies);
// optional verification if logged in
System.out.println(Jsoup.connect("https://ww2.yggtorrent.is").cookies(cookies).get()
.select("#panel-btn").first().text());
// connecting with cookies, it may be useful to provide referer as some servers expect it
Response resultImageResponse = Jsoup.connect("https://ww2.yggtorrent.is/engine/download_torrent?id=285633")
.referrer("https://ww2.yggtorrent.is/engine/download_torrent?id=285633")
.cookies(cookies)
.ignoreContentType(true)
.execute();
// saving file
FileOutputStream out = (new FileOutputStream(new java.io.File("C:/toto.torrent")));
out.write(resultImageResponse.bodyAsBytes());
out.close();
System.out.println("done");