Jsoup认证
问题描述:
我尝试登录本网站使用Jsoup上:https://www.startus.cc/Jsoup认证
我用下面的代码是:
String url = "https://www.startus.cc/user/login";
String userAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36";
Connection.Response response = Jsoup.connect(url).userAgent(userAgent)
.method(Connection.Method.GET)
.execute();
response = Jsoup.connect(url)
.cookies(response.cookies())
.data("name", "myname")
.data("pass", "mypass")
.data("op", "Log in")
.userAgent(userAgent)
.method(Connection.Method.POST)
.followRedirects(true)
.execute();
Document doc = Jsoup.connect("https://www.startus.cc/")
.cookies(response.cookies())
.userAgent(userAgent)
.get();
System.out.println(doc);
它打印我页面的HTML内容,但它仍未登录。你知道这里缺少什么吗?谢谢!
答
您的POST
请求中缺少一个参数 - form_build_id
。请按照以下步骤登录:
- 发送
GET
要求 -response = Jsoup.connect...
到主要页:https://www.startus.cc/,并从响应中提取的form_build_id
值。 - 发送
POST
请求https://www.startus.cc/user/login
包括form_build_id
和第1步中得到了饼干 -.cookies(response.cookies())
。
谢谢你的帮助!你能解释一下更多的form_build_id参数吗? –
似乎是表单状态ID - 来源:https://drupal.stackexchange.com/a/203027 – r3dst0rm