未能通过httr :: user_agent设置用户代理

时间:2014-05-08 15:12:27

标签: r user-agent httr

尝试在MS Windows上的httr::user_agent电话中通过httr::GET()更改用户代理时,我需要考虑一些特殊问题吗?我使用R-3.1.0httr 0.3

按照?user_agent的示例,我得到了这些结果:

url_this <- "http://httpbin.org/user-agent"

标准用户代理:

GET(url_this)   
Response [http://httpbin.org/user-agent]
  Status: 200
  Content-type: application/json
{
  "user-agent": "curl/7.19.6 Rcurl/1.95.4.1 httr/0.3"
} 

修改后的用户代理:

GET(url_this, user_agent("Mozilla/5.0"))
Response [http://httpbin.org/user-agent]
  Status: 200
  Content-type: application/json
{
  "user-agent": "curl/7.19.6 Rcurl/1.95.4.1 httr/0.3"
}

我原本预计第二次通话会更接近我在浏览器中访问url_this时所获得的内容:

{
  "user-agent": "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0"
}

我在这里缺少什么?还首先运行setInternet2(TRUE),但结果相同。

1 个答案:

答案 0 :(得分:5)

非常好奇帮助页面?user_agent表明它应该有效。您可以显式设置标题,但它确实可以正常工作

> GET("http://httpbin.org/user-agent", add_headers("user-agent" = "Mozilla/5.0"))
Response [http://httpbin.org/user-agent]
  Status: 200
  Content-type: application/json
{
  "user-agent": "Mozilla/5.0"
} 

?user_agent中给出的示例似乎没有。

> GET("http://httpbin.org/user-agent", user_agent("Mozilla/5.0") )
Response [http://httpbin.org/user-agent]
  Status: 200
  Content-type: application/json
{
  "user-agent": "curl/7.19.6 Rcurl/1.95.4.1 httr/0.3"
} 
> 

它正在返回

> httr:::default_ua()
[1] "curl/7.19.7 Rcurl/1.95.4.1 httr/0.3"

我的ISP也做了一些时髦的事情,所以你可能需要:

GET("http://httpbin.org/user-agent", add_headers("user-agent" = "Mozilla/5.0", "Cache-Control" = "no-cache"))