2011-04-27 16 views
15

Mam zadanie do testowania różnych agentów użytkownika na adres URL poprzez automatyzację. Używam ruby ​​do kodu i próbuję ustawić agenta użytkownika przy użyciu poniższej metody, ale nie rozpoznaje on agenta użytkownika.Jak ustawić niestandardowego klienta użytkownika w ruby ​​

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

Czy jest jakikolwiek inny sposób, aby to zrobić, lub co robię źle?

Odpowiedz

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 

Działa doskonale dla mnie.

+0

Niesamowite !! Dzięki ... to działa idealnie! – rubytester

+0

Czy istnieje sposób na globalne ustawienie, aby nie trzeba było ustawiać hasha przy każdym połączeniu? – g33kz0r

15

również inny, który działa dla mnie:

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

Nadzieja to pomoże.

2

Dołączony Net::HTTPHeader ma metodę initialize_http_header:

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

HTH

+0

Dzwonisz do niewłaściwej klasy. Nie będzie działać. – user2398029

+1

@ user2398029 tak było w wersji 1.9.3. zmiany są mile widziane :) –