当前位置: 首页 > 知识库问答 >
问题:

Jsoup使用表单登录(post)

凌伟泽
2023-03-14

阅读了一些例子后,我想实现一个爬虫的帮助转移与登录,如:

https://target.helpshift.com/login/?next=/admin/issues/

import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class JsouptTest {

    public static void main(String[] args) throws Exception {
        int x = 1;
        Connection.Response loginForm = Jsoup.connect("https://target.helpshift.com/login/?next=%2Fadmin%2Fissues%2F" + x + "%2F")
                .method(Connection.Method.GET)
                .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0")
                .execute();

        Document document = Jsoup.connect("https://target.helpshift.com/login/")
                .data("cookieexists", "false")
                .data("username", "email@example.com")
                .data("password", "123456")
                .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0")
                .cookies(loginForm.cookies())
                .post();
        System.out.println(document);

    }

}

但是,我得到这个错误:

线程“main”组织中出现异常。jsoup。HttpStatusException:获取URL时发生HTTP错误。状态=403,URL=https://target.helpshift.com/login/在org。jsoup。帮手HttpConnection$响应。在org上执行(HttpConnection.java:537)。jsoup。帮手HttpConnection$响应。在org上执行(HttpConnection.java:493)。jsoup。帮手HttpConnection。在org上执行(HttpConnection.java:205)。jsoup。帮手HttpConnection。在edu发布(HttpConnection.java:200)。utfpr。帮助爬虫。JsouptTest。main(jsouptset.java:32)

共有1个答案

沙小白
2023-03-14

如果您检查请求标题,您将看到它像您所做的那样发送cookie,但它也在表单数据中包含cookie的一部分。将此添加到您的第二个请求中

.data("_csrf_token", loginForm.cookie("_csrf_token"))
 类似资料:
  • 问题内容: 如何通过jsoup登录? 我试过了,但是不起作用: 问题答案: 通常,登录网站需要两个步骤- 您发送请求以获取页面,然后从中提取一些值,例如会话ID等以及cookie。 您发送带有第1步中的值以及您的用户名和密码的请求。 要知道您需要发送哪些值,请在开发人员模式下使用浏览器(按F12键)并检查流量。更改字符串以匹配您的浏览器,因为某些站点将不同的页面发送到不同的客户端。

  • 问题内容: 由于某些原因,当我使用正确的登录信息时,此代码将不允许我进入网站。该帖子登录页面的代码,说明我的代码没有工作。有人可以告诉我我忘记了什么或出了什么问题吗? 问题答案: 除了,并且,该网站requeires为登录两个额外的价值- 和。 您可以从第一个请求的响应中获取它们,如下所示- 并将其添加到(顺序并不重要)之后- 我还将字段添加到两个请求中- 一些站点对其进行测试并将不同的页面发送到

  • 问题内容: 在此网站上,您可以输入您的学生卡号,然后显示该卡上还剩多少钱。我想使用JSOUP获得信息。这是我当前的代码,但是不起作用, 我没有太多经验,所以我不知道在哪里寻找问题。一些想法: 我应该使用还是? 在使用chrome devoloper工具时,发布数据是我使用功能发送的所有数据。但是,如果发送时出现错误,为什么? 我应该发送解密或加密的数据吗?(两者均在chrome devoloper

  • 我试图登录使用领英J汤,我已经尝试了几种方法,但总是遇到错误403,我哪里出错了? 测试一 错误控制台 组织。jsoup。HttpStatusException:获取URL时发生HTTP错误。状态=403,URL=https://www.linkedin.com在org。jsoup。帮手HttpConnection$响应。在org上执行(HttpConnection.java:590)。jsoup

  • 问题内容: 我正在尝试登录此网站:http : //deeproute.com 这是我的代码。 不幸的是,这只是以未登录状态返回同一页面。我究竟做错了什么? 问题答案: 您需要在发布前阅读表格!您缺少param subbera =登录。

  • 问题内容: 我已经广泛阅读了有关此操作的信息,并尝试了许多不同的版本,但无法使其正常工作。 基本上,我只想登录ConEdison网站并抓取我的帐单记录。这是我所拥有的: 我知道该信息是正确的(尽管我不知道是否真的需要传递没有值的数据参数)。 我没有任何错误,只是打印了登录页面(https://apps.coned.com/cemyaccount/NonMemberPages/Login.aspx?