Java Jsoup téléchargement de fichier torrent


J'ai un problème, je veux me connecter à ce site web (https://ww2.yggtorrent.is) pour télécharger un fichier torrent. J'ai fait une méthode pour me connecter au site Web par Jsoup qui fonctionne bien mais quand j'essaie de l'utiliser pour télécharger le fichier torrent, le site Web retourne "Vous devez être connecté pour télécharger le fichier".

Voici mon code pour me connecter:

Response res = Jsoup.connect("https://ww2.yggtorrent.is/user/login")
            .data("id", "<MyLogin>", "pass", "<MyPassword>")
            .method(Method.POST)
            .execute();

Et voici mon code pour télécharger le fichier

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();

J'ai testé beaucoup de chose mais maintenant je n'ai aucune idée.

Author: Jacky-Marley, 2018-07-26

1 answers

La seule chose que vous ne nous avez pas montrée dans votre code est d'obtenir des cookies de response. J'espère que vous le faites correctement car vous les utilisez pour faire une deuxième demande.

Ce code ressemble au vôtre mais avec un exemple de la façon dont j'obtiens les cookies. J'ajoute également l'en-tête referer. Il télécharge avec succès ce fichier pour moi et utorrent le reconnaît correctement:

    // 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");
 1
Author: Krystian G, 2018-07-26 22:39:39