2013-06-17 3 views
0

CURL을 사용하면 결과가 나타납니다. 그리고 그것은 302 redirect입니다.파이썬 요청 모듈 및 컬이 다른 결과

[email protected]:~$ curl -I http://www.vevo.com/watch/kesha/crazy-kids/USRV81300226 
HTTP/1.1 302 Moved Temporarily 
Content-Length: 159 
Content-Type: text/html; charset=utf-8 
Location: http://www.youtube.com/watch?v=xdeFB7I0YH4 
Server: Microsoft-IIS/7.0 
X-AspNetMvc-Version: 3.0 
X-AspNet-Version: 4.0.30319 
X-Powered-By: ASP.NET 
Access-Control-Allow-Origin: * 
Expires: Mon, 17 Jun 2013 15:33:41 GMT 
Cache-Control: max-age=0, no-cache, no-store 
Pragma: no-cache 
Date: Mon, 17 Jun 2013 15:33:41 GMT 
Connection: keep-alive 

파이썬하여 다음과 같은 결과가, 모듈을 요구한다. 그리고 그것은 200 ok입니다.

import requests 
import pprint 

url = 'http://www.vevo.com/watch/kesha/crazy-kids/USRV81300226' 
res = requests.get(url, proxies={'http': '127.0.0.1:8087'}, allow_redirects=False) 

print 'status_code: ', res.status_code 
print 'response_url: ', res.url 
print 'headers: ' 
pprint.pprint(res.headers) 
print 'history: ', res.history 

그리고 출력 : 결과가 다른 이유

status_code: 200 
response_url: http://www.vevo.com/watch/kesha/crazy-kids/USRV81300226 
headers: 
{'access-control-allow-origin': '*', 
'cache-control': 'max-age=0, no-cache, no-store', 
'connection': 'keep-alive', 
'content-encoding': 'deflate', 
'content-length': '12310', 
'content-type': 'text/html; charset=utf-8', 
'date': 'Mon, 17 Jun 2013 16:17:35 GMT', 
'expires': 'Mon, 17 Jun 2013 16:17:35 GMT', 
'pragma': 'no-cache', 
'server': 'Microsoft-IIS/7.0', 
'vary': 'Accept-Encoding', 
'via': 'HTTP/1.1 GWA', 
'x-aspnet-version': '4.0.30319', 
'x-aspnetmvc-version': '3.0', 
'x-powered-by': 'ASP.NET'} 
history: [] 

?

Location: http://www.youtube.com/watch?v=xdeFB7I0YH4 값을 얻으려면 어떻게해야합니까? CURL 출력은 파이썬을 사용합니까?

+0

요청 헤더를 비교해야합니다. 서버가 요청 헤더에 따라 다르게 응답합니다. 이 동작을 전환하는 헤더는 전적으로 서버 인 블랙 박스에 달려 있습니다. –

+0

나는 파이썬 코드로 302를 얻는다. 나는'proxies = ... '인수를 생략했다. – falsetru

+0

@falsetru : 재미있는; 나는 200을 얻는다. –

답변

1
res = requests.get(url, allow_redirects=False) 

proxies=...이 없으면 출력이 다음과 같습니다. 사용

status_code: 302 
response_url: http://www.vevo.com/watch/kesha/crazy-kids/USRV81300226 
headers: 
{'access-control-allow-origin': '*', 
'cache-control': 'max-age=0, no-cache, no-store', 
'connection': 'keep-alive', 
'content-length': '159', 
'content-type': 'text/html; charset=utf-8', 
'date': 'Mon, 17 Jun 2013 16:32:15 GMT', 
'expires': 'Mon, 17 Jun 2013 16:32:15 GMT', 
'location': 'http://www.youtube.com/watch?v=xdeFB7I0YH4', 
'pragma': 'no-cache', 
'server': 'Microsoft-IIS/7.0', 
'vary': 'Accept-Encoding', 
'x-aspnet-version': '4.0.30319', 
'x-aspnetmvc-version': '3.0', 
'x-powered-by': 'ASP.NET'} 
history: [] 

요청 : 0.13.2

요청 1.2.3으로, 나는 비슷한 결과를 얻었다.

+0

프록시를 생략 할 때 문제가 해결되었습니다. 감사. – Huo