我试着使用JSoup登录Facebook,当在控制台应用程序或Tomcat服务器Web应用程序中测试时,它可以正常运行:
String userAgent = BrowserVersion.FIREFOX_38.getUserAgent();
Connection conn1 = Jsoup.connect("https://m.facebook.com");
Document document = conn1.userAgent(userAgent).execute().parse();
Element form = document.select("form").get(0);
Elements inputs = form.select("input");
Connection conn2 = Jsoup.connect(form.absUrl("action")).userAgent(userAgent);
for (Element input: inputs) {
conn2.data(input.attr("name"), input.val());
}
conn2.data("email", "mail@gmail.com").data("pass", "mypass");
Connection.Response response1 = conn2.method(Connection.Method.POST).execute();
System.out.println(response1.url());
Document doc1 = response1.parse();
Elements h3 = doc1.select("h3");
for (Element element: h3) {
System.out.println(element.text());
}
response1.url() 是 https://m.facebook.com/home.php?_rdr
但是当我尝试使用 Google App Engine 应用时,它无法登录,只显示带有“您必须先登录”的消息的页面(我猜请求会尝试访问其他 URL)。
我将密码更改为不正确,它会显示不正确的密码页面。所以我认为,使用正确的密码,请求会去到正确的页面。但是为什么使用正确的密码会重定向到其他页面呢?我认为控制台应用程序和 GAE 之间没有任何不同,使得请求不同!