0

当我通过 Java 运行以下网址时,它会给出响应代码 301。网址是: http ://www.amazon.com/Kindle-Wireless-Reading-Display-Globally/dp/B003FSUDM4/ref=amb_link_353259562_2?pf_rd_m=ATVPDKIKX0DER&pf_rd_s= center-10&pf_rd_r=11EYKTN682A79T370AM3&pf_rd_t=201&pf_rd_p=1270985982&pf_rd_i=B002Y27P3M 并且它根据java代码提供的重定向网址是:

http://www.amazon.com/Kindle-Keyboard-Free-Wi-Fi-Display/dp/B004HZYA6E

代码是:

public class newTestURLConnection {
    public static void main(String[] args) throws IOException {
        String url="http://www.amazon.com/Kindle-Wireless-Reading-Display-Globally/dp/B003FSUDM4/ref=amb_link_353259562_2?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-10&pf_rd_r=11EYKTN682A79T370AM3&pf_rd_t=201&pf_rd_p=1270985982&pf_rd_i=B002Y27P3M";
        HttpURLConnection con =(HttpURLConnection) new URL( url ).openConnection();
        con.setInstanceFollowRedirects(false);

        con.connect();

        InputStream is = con.getInputStream();
        System.out.println(con.getHeaderField("Location"));
        System.out.println( "Response code: " + con.getResponseCode() );
    }
}

但是当我在浏览器中打开 url 时,它不会重定向到:http://www.amazon.com/Kindle-Keyboard-Free-Wi-Fi-Display/dp/B004HZYA6E。谁能提出为什么会有这种差异?

4

2 回答 2

1
instanceFollowRedirects

protected boolean instanceFollowRedirects

    If true, the protocol will automatically follow redirects. If false, the protocol will not automatically follow redirects.

    This field is set by the setInstanceFollowRedirects method. Its value is returned by the getInstanceFollowRedirects method.

    Its default value is based on the value of the static followRedirects at HttpURLConnection construction time. 

这是来自类 HttpURLConnection Docs

于 2013-02-19T12:32:22.060 回答
0

谁能提出为什么会有这种差异?

可能是亚马逊根据请求标头的差异做出了不同的响应;例如,在 User-Agent 标头中发送的内容。

也许这是关于向真实客户和网络爬虫/内容抓取工具显示不同的结果。

不管是什么原因,两页之间的差异非常微妙……至少在人眼看来。


如果这不仅仅是一次性的事情(例如测试一些代码),我还应该问您是否阅读过亚马逊的“使用条件”;例如它说的位:

未经亚马逊明确书面同意,不得出于任何商业目的复制、复制、复制、出售、转售、访问或以其他方式利用亚马逊服务或任何亚马逊服务的任何部分。

于 2013-02-19T12:48:58.347 回答