2015-05-29 4 views
0

У меня есть следующий локон команда:Python HTTP GET - не может повторить локон запроса с заголовками

curl -H "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0" -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" -H "Connection: keep-alive" -X GET http://example.com/en/number/111555000 

К сожалению, я не смог повторить его ... Я попытался с:

url = http://example.com/en/number/111555000 
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0', 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Connection':'keep-alive',} 
    req = urllib2.Request(url, None, headers) 
    resp = urllib2.urlopen(req) 
    print resp.read() 

, но сервер узнал, как этот запрос «поддельный» и пересылает меня в Google (ответ с сервера: HTTP/1.1 301 Moved Permanently). Вместо curl я получаю исходную страницу.

Любые идеи или предложения? Спасибо дк

EDIT: некоторая дополнительная информация о:

$ nc example.com 80 
GET /en/number/111555000 HTTP/1.1 
Host: example.com 

HTTP/1.1 301 Moved Permanently 
Date: Fri, 29 May 2015 18:51:05 GMT 
Server: Apache 
X-Powered-By: PHP/5.5.24 
Location: http://www.google.de 
Content-Length: 0 
Content-Type: text/html 


$ nc example.com 80 
GET /en/number/111555000 HTTP/1.1 
Host: example.com 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Connection: keep-alive 

HTTP/1.1 200 OK 
Date: Fri, 29 May 2015 18:57:56 GMT 
Server: Apache 
X-Powered-By: PHP/5.5.24 
Set-Cookie: session=a%3A4%3A%7Bs... 
Set-Cookie: session=a%3A4%3A%7Bs... 
Keep-Alive: timeout=2, max=200 
Connection: Keep-Alive 
Transfer-Encoding: chunked 
Content-Type: text/html; charset=UTF-8 

1c6f8 
<!DOCTYPE html> 
[...] 

с завитком:

$curl -X GET http://example.com/en/number/111555000 
$ 

$ curl -H "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0" -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" -H "Connection: keep-alive" -X GET http://example.com/en/number/111555000 
<!DOCTYPE html> 
[...] 
+0

Что произойдет, если вы используете завиток без заголовков? Вы уверены, что сервер принимает такие заголовки? – Rcynic

+0

Ничего не происходит, нет ответа: '$ curl -X GET http: // example.com/en/number/111555000' ' $ ' – d82k

ответ

2

я могу заставить его работать с библиотекой запросов. Что probably better to use.

import requests 
url = "http://example.com/en/number/111555000" 
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0', 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Connection':'keep-alive',} 
req = requests.get(url, headers=headers) 
req.text 

here is the requests library documentation

Надеется, что это помогает.

+0

Он работает !!! Спасибо! – d82k

Смежные вопросы