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