2012-04-04 12 views
19

Próbuję POST danych na stronie internetowej, aby zalogować się do serwisu za pomocą Jsoup, ale nie działa?Jak umieścić dane na stronie internetowej przy użyciu Jsoup

Staram kod

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

tutaj to daje normalną stronę logowania w źródło strony

Próbowałem również kod

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

tutaj także to daje normalną stronę ponownie zalogować się w witrynie źródłowej.

Wszelkie sugestie dotyczące tego samego będą bardzo mile widziane!

dzięki ....

+0

Jestem również zmierzyć sam problem teraz, w jaki sposób rozwiązać ten problem –

Odpowiedz

27

dam odpowiedź na swoje pytanie, biorąc przykład. Załóżmy, że chcesz się zalogować na Facebook.

Następnie oprócz nazwy użytkownika i hasła istnieje wiele innych parametrów, które są również przekazywane za pośrednictwem żądania POST. Wszystkie te parametry są ukryte i przekazywane podobnie jak nazwa użytkownika i hasło. Dla przykładu:

Jeśli otworzysz html source Facebook, a następnie można zobaczyć tam jest jeden parametr, który jest ukryty jest lgnrnd i jego wartość jest 071129_5D7M.

Istnieje wiele innych podobnych parametrów. Musisz przekazać wszystkie parametry. Należy również określić 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. 
+0

Mam krzyż sprawdzić jakie są wartości przekazywane natomiast po użyciu nagłówków HTTP Live, i nic nie znalazłem innego niż 'cmd = login & username = xxxx & password = yyyyy' i próbuję kod 'docs dokumentów = Jsoup.connect ("http://some.com/login")
.data ("cmd", "Login") .data (" username "," xxxx ") .data (" hasło "," yyyy ") .userAgent (" Mozilla ") .referrer (" http://some.com/login/ ") .post(); ' nadal nie podaje źródła stron w dokumentacji !! raczej daje ponownie stronę logowania !! Czy coś jest nie tak w kodowaniu? – Aspirant

+1

Nie używaj strony odsyłającej i nie próbuj. Jeśli witryna, którą chcesz zalogować, nie jest prywatna, możesz mi powiedzieć, że mogę być bardziej pomocna. – vikiiii

+0

Hej, próbowałem usunąć referer, wciąż tak samo !! co masz na myśli przez prywatne? – Aspirant

2

Jeśli problem jest przekierowanie JavaScript, można spróbować wchodząc javascript i sprawdzenie, czy adres URL przekierowuje do jest statyczny, a następnie użyć przekierowania, aby uzyskać dostęp. Zrobiłem to, aby uzyskać dostęp do wyskakującego okienka zrobionego przez javascript.

Powiązane problemy