我试图从Facebook上的用户那里获取Facebook源代码,当我手动尝试进入用户页面时,它会向我提供所有数据。
html中的这行代码似乎不同:
meta name =“referrer”content =“origin-when-crossorigin” ID = “meta_referrer”
当程序获得html时,这就是给出的内容:
meta name =“referrer”content =“default”id =“meta_referrer”>
这是代码,我使用的是Jsoup,这是一个Java库
public void test() throws IOException {
String html = Jsoup.connect("https://www.facebook.com/*adduseridhere*").get().html();
System.out.println(html); }
所以我的问题是,我的程序是否可以像浏览器收集html数据时那样运行?
答案 0 :(得分:0)
您必须发送一些标题数据,如下所示。
首先看看是什么将浏览器从浏览器发送到该链接并尝试使用jsoup实现它。
正如我在您的示例中看到的那样,您不会发送任何标题数据,因此Facebook不会从浏览器接受它
Document doc = Jsoup
.connect(url.trim())
.timeout(3000)
.header("Host", "someip")
.header("Connection", "keep-alive")
.header("Content-Length", "111")
.header("Cache-Control", "max-age=0")
.header("Accept",
"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")
.header("User-Agent",
"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36")
.header("Content-Type", "application/x-www-form-urlencoded")
.header("Referer", url.trim())
.header("Accept-Encoding", "gzip,deflate,sdch")
.header("Accept-Language", "en-US,en;q=0.8,ru;q=0.6")
.userAgent("Mozilla")
.get();