web-dev-qa-db-fra.com

Comment POST Données dans le site Web en utilisant Jsoup

J'essaie de POST des données sur le site Web pour me connecter au site à l'aide de Jsoup, mais cela ne fonctionne pas?

J'essaye le code 

    Document docs = Jsoup.connect("http://some.com/login")
        .data("cmd", "login","username", "xxxx","password", "yyyyy")
        .referrer("http://some.com/login/").post();

ici, il donne page normale de connexion dans Pagesource

j'ai aussi essayé le code 

 Document docs = (Document) Jsoup.connect("http://some.com/login")
    .data("cmd", "login","username", "xxxx","password", "yyyyy")
    .referrer("http://some.com/login/").method(Method.POST).execute().parse();

ici aussi, il redonne page de connexion normale dans pagesource.

Toutes les suggestions concernant la même chose seraient très appréciées !!

Merci....

23
Aspirant

Je vais donner la réponse à votre question en prenant un exemple . Supposons que vous souhaitiez vous connecter à Facebook.

Outre le nom d'utilisateur et le mot de passe, de nombreux autres paramètres sont également transmis via la demande POST. Tous ces paramètres sont cachés et sont transmis de la même manière que nom d'utilisateur et mot de passe . Par exemple:

Si vous voulez ouvrir le html source de facebook, vous verrez alors qu’un paramètre est caché est lgnrnd et que sa valeur est 071129_5D7M.

Il existe donc de nombreux autres paramètres similaires à celui-ci.Vous devez transmettre tous les paramètres . Vous devez également spécifier le userAgent.

Document doc = Jsoup.connect("http://www.facebook.com")
.data("email", "myemailid")
.data("pass", "mypassword")
// and other hidden fields which are being passed in post request.
.userAgent("Mozilla")
.post();
System.out.println(doc); // will print html source of homepage of facebook.
31
vikiiii

Si le problème est une redirection javascript, vous pouvez essayer d’explorer le javascript et de vérifier si l’URL à laquelle il redirige est statique, puis utiliser la redirection pour obtenir un accès. J'ai fait cela pour accéder une fois à une boîte de dialogue créée par javascript.

2
Ethan

Les données de publication peuvent également être envoyées à l'aide de la carte. Semble plus géré et propre. Parfois, les sites Web vérifient la présence de certains en-têtes. Transmettez-les pour que la demande soit aussi similaire qu’elle devrait être. La plupart du temps, le type de contenu est attendu.

package test;

import Java.util.HashMap;
import Java.util.Map;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

/**
 * POST example
 * 
 * @author iampayload
 *
 */
public class JsoupPost {

    private final String USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:65.0) Gecko/20100101 Firefox/65.0";

    private final String urlPost = "https://www.huawei.com/en/accounts/PersonalPost";

    // main class
    public static void main(String[] args) throws Exception {
    JsoupPost http = new JsoupPost();
    http.sendPost();
    }

    // HTTP Post request
    private void sendPost() throws Exception {

    Map<String, String> postData = new HashMap<>();
    postData.put("username", "xxxx");
    postData.put("cmd", "login");
    postData.put("password", "yyyyy");

    Document doc = Jsoup.connect(urlPost).ignoreContentType(true).userAgent(USER_AGENT).data(postData).post();
    }
}
0
Manasi