我尝试这样设置http请求的用户代理:
public BufferedReader readURL(String url){
URL urlcon;
BufferedReader in = null;
try {
urlcon = new URL(url);
connection = (HttpURLConnection)urlcon.openConnection();
System.setProperty("http.agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)");
connection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)");
System.out.println(connection.getHeaderField("User-Agent"));
connection.connect();
in = new BufferedReader(
new InputStreamReader(
connection.getInputStream()));
String header = connection.getHeaderField(0);
System.out.println(header);
System.out.println("---Start of headers---");
int i = 1;
while ((header = connection.getHeaderField(i)) != null) {
String key = connection.getHeaderFieldKey(i);
System.out.println(((key==null) ? "" : key + ": ") + header);
i++;
}
System.out.println(connection.getHeaderField("http.agent"));
System.out.println("---End of headers---");
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return in;
}我得到的是User-Agent null:
空
HTTP/1.0 200正常
-标头的开头
服务器: Apache
Cache-Control: max-age=10
过期时间: Sun,07 Aug,2011 16:09:26 GMT
变化:接受-编码
Content-Type: text/html
内容长度: 163582
日期: Sun,07 Aug,2011 16:09:20 GMT
X-Varnish: 889692780 889684459
年龄:4岁
连接:保持连接
X-Bip: 889692780 70148
途径: 1.1 CachOS
空
-报头末尾
为什么不能设置User-Agent?
发布于 2011-08-08 00:18:12
使用setHeader(),而不是setRequestProperty。
发布于 2017-01-15 06:44:45
设置系统属性:"http.agent“将更改您的连接头:"User-Agent",但请注意,according to documentation您的java版本仍在其中:
其他HTTP属性
http.agent (默认为“Java/”)定义了在http请求中User-Agent请求头部中发送的字符串。
请注意,字符串“Java/”将附加到属性中提供的字符串之后(例如,如果使用-Dhttp.agent=“foobar”,则如果VM的版本为1.5.0,则用户代理标头将包含“foobar Java/1.5.0”)。此属性仅在启动时选中一次。
请注意,属性在启动时只检查一次,因此您可能希望首先设置属性,然后创建第一个url并进行连接。
要验证是否发送了正确的报头,可以使用"tcpdump“。用法:
tcpdump -n dst host stackoverflow.com -vvvv发布于 2011-08-08 02:32:32
服务器返回报头信息。我猜"User-Agent“还不够重要,不应该返回。它没有返回并不意味着它没有被发送。
我有一个显示标题信息的小工具(ieHTTPHeader)。当我在这个页面上刷新时,这是发送和返回的第一组标头:
获取/questions/6973981/why-cant-i-set-java-http-user-agent HTTP/1.1
接受:/
推荐人:https://stackoverflow.com/questions/tagged/java?page=2&sort=newest&pagesize=15
Accept-Language:简体中文
User-Agent: Mozilla/4.0 (兼容;MSIE 8.0;Windows NT 5.1;Trident/4.0)
Accept-Encoding: gzip、deflate
主持人: stackoverflow.com
连接:保持连接
Cookie:__utmc=140029553;__utma=140029553.1370458634.1310761265.1312727448.1312739618.123;__utmz=140029553.1312739618.123.123.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=yahoo%20finance%20api%20java;__qca=P0-1025379872-1310761265343;__utmc=140029553;usr=t=cEyCYO7bXECF&s=X6DJTj5kuY8H;__utmb=140029553.15.10.1312739618
HTTP/1.1 200正常
Cache-Control: public,max-age=60
Content-Type: text/html;charset=utf-8
Content-Encoding: gzip
过期时间: Sun,08,2011 18:25:43 GMT
最后修改时间: Sun,07 Aug,2011 18:24:43 GMT
变化:*
日期: Sun,07 Aug 2011 18:24:42 GMT
内容长度: 12040
https://stackoverflow.com/questions/6973981
复制相似问题