自动登录网站,保持登录状态,并使用Jsoup(java)进行解析

自动登录网站,保持登录状态,并使用Jsoup(java)进行解析,java,cookies,jsoup,autologin,webautomation,Java,Cookies,Jsoup,Autologin,Webautomation,在过去的三周里,我一直在尝试编写一个程序,该程序登录到一个网站,并在页面中循环以过滤特定信息(指定表的行/列)。公平地说,这个程序就是我认为自己(用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();
    }
试试看{
字符串url1=”https://www.novaragnarok.com/";
字符串url2=”https://www.novaragnarok.com/?module=vending&action=item&id=2499";
Connection.Response res=Jsoup
.connect(url1)
.followRedirects(true)
.数据(“用户名”、“stackoverflowww”、“密码”、“stackpw”)
.method(method.POST)
.execute();
映射cookies=res.cookies();
Document doc=Jsoup.connect(url2)
.饼干(饼干)
.followRedirects(true)
.get();
System.out.println(cookies);
系统输出打印项次(doc);
}捕获(IOE异常){
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){

    }
 }
}
试试这个

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){

    }
 }
}