2017-01-14 6 views
0

Я пытаюсь войти в свой веб-сайт колледжа, используя jsoup, используя следующий код:Вход на веб-сайт с jsoup

public class captcha { 
public Map cookies; 
private String regno = "####"; //my regno 
private String passwd = "####"; //my pass 

public HashMap<String,String> downloadCaptcha()throws Exception { 
    Connection.Response response = Jsoup.connect("https://academicscc.vit.ac.in/student/stud_login.asp") 
      .timeout(300000) 
      .userAgent("Mozilla/5.0") 
      .method(Connection.Method.GET).execute(); 

    cookies = response.cookies(); 
    Document doc = response.parse(); 
    Elements fields = doc.select("form input"); 
    HashMap<String,String> formFields = new HashMap<String, String>(); 
    for (Element field : fields){ 
     formFields.put(field.attr("name"), field.attr("value")); 
    } 

    Connection.Response resultImageResponse = Jsoup.connect("https://academicscc.vit.ac.in/student/captcha.asp") 
      .cookies(cookies) 
      .ignoreContentType(true) 
      .method(Connection.Method.GET).timeout(30000).execute(); 


    cookies.putAll(resultImageResponse.cookies()); 

    FileOutputStream out = (new FileOutputStream(new java.io.File("abc.jpg"))); 
    out.write(resultImageResponse.bodyAsBytes()); 
    out.close(); 

    System.out.println("Captcha Fetched"); 
    //formFields.remove("message"); 
    formFields.values().remove("Forgot Password ?"); 

    System.out.println(formFields); 


    return formFields; 
} 

public void getData(HashMap<String, String> formFields) throws Exception{ 
    Connection conn = Jsoup.connect("https://academicscc.vit.ac.in/student/stud_login.asp") 
      .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0") 
      .cookies(cookies) 
      .timeout(0) 
      .data(formFields) 
      .method(Connection.Method.POST); 



    Connection.Response response = conn.execute(); 
    cookies = response.cookies(); 
    System.out.println(response.cookies()); 
    Document doc= response.parse(); 
    FileWriter fr = new FileWriter("response.html"); 
    PrintWriter pw= new PrintWriter(fr); 
    pw.println(doc.toString()); 
    System.out.println(doc.toString()); 
    pw.close(); 
    fr.close(); 
} 

private void run() throws Exception, IOException { 
    HashMap<String, String> formFields = downloadCaptcha(); 

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    String vrfcd = br.readLine(); 

    formFields.put("regno", regno); 
    formFields.put("passwd", passwd); 
    formFields.put("vrfcd", vrfcd); 
    System.out.println(formFields); 
    getData(formFields); 

} 

public static void main(String[] args) throws Exception { 
    captcha main = new captcha(); 
    main.run(); 
    } 
} 

я капчу и получить печенье. Затем я получаю поля формы. Затем я вводим captcha и устанавливаю его значение в поля формы в дополнение к reg no и password. Затем я подключаюсь и получаю ответ. Проблема в том, что я возвращаю страницу входа в качестве ответа.

Любая помощь приветствуется :)

EDIT: При входе в хромом я получить REQUEST COOKIES

SESSIONIDSGASBSQA = DKCNGAHAAGPJILOAHBGEPDHO      
_ga =GA1.3.1284394013.1479732373      
logstudregno= 

В то время как выходной код имеет запросить печенье в

{logstudregno=, ASPSESSIONIDSGASBSQA=JODNGAHAIIGMCJALLNMOHKMG} 
+0

У вас есть другое поле под названием «сообщение», которое вы игнорируете. – TDG

+0

Я проверил активность сети в хроме при входе в систему и получил данные формы. _message: _ _regno: #### (рег мой) _ _passwd: #### (мой пропуск) _ _vrfcd: FRH6B7_ Как вы можете видеть поле сообщения пуст. – TheUltimateQuest

+0

Это не значит, что вы можете его игнорировать. – TDG

ответ

0

После нескольких дней от головной боли, я, наконец, решил это. Оказывается, я просто не использовал правильный URL для сообщения. Я проверил в Chrome и нашел фактический URL. Теперь это работает :).

public void getData(HashMap<String, String> formFields) throws Exception{ 
     Connection conn = Jsoup.connect("https://academicscc.vit.ac.in/student/stud_login_submit.asp") 
     .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0") 
     .cookies(cookies) 
     .timeout(0) 
     .data(formFields) 
     .method(Connection.Method.POST);} 

Мне все еще интересно узнать, почему я получаю больше куки, используя Chrome.