2011-04-27 2 views
15

J'ai une tâche pour tester différents agents utilisateur sur une URL grâce à l'automatisation. J'utilise ruby ​​pour coder, et j'ai essayé de définir un agent utilisateur en utilisant la méthode suivante, mais il ne semble pas reconnaître l'agent utilisateur.Comment définir un agent utilisateur personnalisé dans ruby ​​

@http = Net::HTTP.new(URL) 
response = @http.request_get(URL, {'User-Agent' => useragent}) 

Y a-t-il un autre moyen de le faire, ou qu'est-ce que je fais de mal?

Répondre

21
http = Net::HTTP.new("your.site.com", 80) 
req = Net::HTTP::Get.new("/path/to/the/page.html", {'User-Agent' => 'your_agent'}) 
response = http.request(req) 
puts response.body 

Fonctionne très bien pour moi.

+0

Awesome !! Merci .. cela fonctionne parfaitement! – rubytester

+0

Y at-il un moyen de le définir globalement de sorte que vous n'avez pas à définir le hachage sur chaque appel? – g33kz0r

15

aussi une autre qui travaillent pour moi:

require 'open-uri' 
html = open('http://your.site.com/the/page.html', 'User-Agent' => 'Ruby').read 
puts html 

Espérons que cela vous aidera.

2

Le Net::HTTPHeader inclus a la méthode initialize_http_header:

@http = Net::HTTP.new(URL) 
@http.initialize_http_header({'User-Agent' => useragent}) 
response = @http.request_get(URL) 

HTH

+0

Vous appelez ceci sur la mauvaise classe. Ne fonctionnera pas. – user2398029

+1

@ user2398029 c'était vrai à 1.9.3. les modifications sont les bienvenues :) –

Questions connexes