簡體   English   中英

在網站上自動登錄,保持登錄狀態並使用Jsoup(java)進行解析

[英]Auto login on website, stay logged in, and parse with Jsoup (java)

在過去的三個星期中,我試圖編寫一個程序,該程序登錄到網站上並循環瀏覽頁面以過濾特定信息(指定的行/表列)。 公平地說,這個程序是我自己(用Java編寫)的原因。 我創建了一種自動填充程序,該方法可以運行,但是速度很慢,因為它必須再次為每個頁面登錄。 因此,我在想,為什么我的第一個(以下)程序無法正常工作。 由於某種原因我無法登錄,但是一旦我從登錄頁面切換到特定頁面(僅在登錄時才可以訪問),我就會被重定向到登錄頁面。 為了這個問題,我創建了一個假賬戶。 也許有人可以幫助或告訴我在哪里可以進一步閱讀本主題。 我猜餅干有問題,盡管我不確定。

 try {
        String url1 = "https://www.novaragnarok.com/";
        String url2 = "https://www.novaragnarok.com/?module=vending&action=item&id=2499";

        Connection.Response res = Jsoup
            .connect(url1)
            .followRedirects(true)
            .data("username", "stackoverflowww", "password", "stackpw")
            .method(Method.POST)
            .execute();

        Map<String, String> cookies = res.cookies();                    

        Document doc = Jsoup.connect(url2)
                  .cookies(cookies)
                  .followRedirects(true)
                  .get();

        System.out.println(cookies);            
        System.out.println(doc);
    } catch (IOException e) {
        e.printStackTrace();
    }

嘗試這個

String USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)" +
        " Chrome/56.0.2924.87 Safari/537.36";

public void parseWebsite(){
    try{
        Connection.Response homepage = Jsoup.connect("https://www.novaragnarok.com/").userAgent(USER_AGENT)
                .method(Connection.Method.GET).timeout(6000).execute();

        Connection.Response login = Jsoup.connect("https://www.novaragnarok.com//?module=account&action=login&return_url=")
                .cookies(homepage.cookies()).data("txtbox", "stackoverflowww")
                .data("password", "stackpw").userAgent(USER_AGENT).method(Connection.Method.POST)
                .timeout(6000).execute();

        Connection.Response url2 = Jsoup.connect("https://www.novaragnarok.com/?module=vending&action=item&id=2499")
                .cookies(login.cookies()).userAgent(USER_AGENT).method(Connection.Method.GET).timeout(6000).execute();

     //Your Code here

    }catch (SocketException e){
        e.printStackTrace();
    }
    catch (UncheckedIOException e){
        e.printStackTrace();
    }
    catch(Exception e){

    }
 }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM