当自动重定向到另一个页面时,无法使用URLConnection获取原始网页源代码

时间:2012-09-03 04:22:04

标签: java urlconnection

当我在浏览器中打开网页时,我可以成功访问该网页。但是,当我厌倦了在线获取Java网页的源代码时,网页会自动重定向到另一个页面,所以我只能在我的程序中获得新网页的源代码。有什么办法可以在java中打破这种重定向的东西吗?

很多。

以下是在我的程序中获取源代码的部分。

目标网页是一个在线社区网页(如Facebook),属于中国最大的互联网公司(百度)。

运行以下程序时,您会发现控制台中发布的网页源代码不是您可以从浏览器获取的代码。控制台中发布的源代码几乎与您在以下网页中找到的相同, http://www.baidu.com/search/ressafe.html?q=%E5%AE%AB%E5%B4%8E%E9%AA%8F%E5%90%A7&url=http://tieba.baidu.com/f?kw=%B9%AC%C6%E9%BF%A5

表示网页已重定向。

import java.net.*;
import java.io.*;
import java.util.*;

public class URLConnectTest {

    public static final String s = "%B9%AC%C6%E9%BF%A5";

    public static void main(String[] args) throws Exception {
        URL u = new URL("http://tieba.baidu.com/f?kw=" + s);
        URLConnection yc = u.openConnection();

        /* I've ever tried to reset the UA, which doesn't work.
        yc.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.16 Safari/534.24");
        */

        BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
        String line;
        while ((line = in.readLine()) != null) {
            System.out.println(line);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

HTTPURLConnection自动跟踪HTTP重定向,如果要禁用它,请拨打HTTPURLConnection.setInstanceFollowRedirects(false)