代理上的标头问题

时间:2013-11-20 09:16:56

标签: java proxy

我正在使用套接字在代理上使用标头遇到一些令人沮丧的问题。

这是我在连接到www.google.es时收到的内容(例如):

GET http://www.google.es/ HTTP/1.1
Host: www.google.es
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Cookie: PREF=ID=62a609089cbce13d:U=20c30fc6df717cbe:FF=0:LD=es:TM=1378210903:LM=1384897041:S=wX0-kDwF5KqLESKr; NID=67=wbjT3HqfQNz0JSuq11Rpmu4C_fY69quKSF_rfe_VAdK-oiKejeFaTwJi7jHcYyEbrHms8by5lkrEHIlXGZJGKYgDTma4kQF8JVqZddinnI75T5v-EJ90we-OUc93HegBxX0gbhWKF1-_EmkptGY; OGPC=4061029-1:; OGP=-4061029:; __qca=P0-1591457945-1384728978104; __gads=ID=fd5470c0fda87be6:T=1384738414:S=ALNI_MaS2YtYfdr0-_d4mn78YuI6py6CWQ; centralnotice_bucket=1-4.2
Connection: keep-alive

然后建立连接我正在这样做:

HttpURLConnection connection = null;
connection = (HttpURLConnection) u.openConnection();
connection.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0");
connection.connect();

请注意,我设置的User-Agent标头与我从浏览器获得的值完全相同。 但是当我尝试连接到www.google.es时,收到此错误: 302已移动 该文件已移至此处。

如果我注释掉标题“setRequestProperty”:

//connection.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0");

然后我收到了网页,但它看起来与原来的网页不同(没有代理)。 我做错了什么?

感谢。

2 个答案:

答案 0 :(得分:0)

您无法使用HttpURLConnection类编写正确的HTTP代理。您必须处理TCP套接字并处理CONNECT命令。之后,只需在两个方向上复制字节。

答案 1 :(得分:0)

致电HttpURLConnection.setFollowRedirects(true)

服务器似乎基于User-Agent的行为不同。当User-Agent为“Mozilla / 5.0(Windows NT 6.1; WOW64; rv:25.0)Gecko / 20100101 Firefox / 25.0”时,网站会将您的客户端重定向到另一个页面(通过向客户端发送302),但目前您的客户端确实不遵循重定向。