2017-04-01 5 views
1

で正しくセットアップのリダイレクトには、次のコードスニペットを考えてみましょう:どのようにいくつかのコーナーケースのためのPythonの要求

#!/usr/bin/env python3 
# -*- coding: utf-8 -*- 

import sys 
import requests 
from requests import exceptions 

try: 
    url=sys.argv[1] 
except IndexError: 
    print('No URL provided.') 
    sys.exit(1) 

print('\n--- {}\n'.format(url)) 

try: 
    s = requests.Session() 
    r = s.get(url) 
except exceptions.TooManyRedirects as t: 
    print('ERROR: {}'.format(t)) 
    r = s.get(url, allow_redirects=False) 

print('-----------------------------') 
print(r.status_code) 
print(r.headers) 

コードは、入力としてURLを取り、その上にGETリクエストを実行しようとします。 セッションオブジェクトを使用して、複数のリクエストなどでCookieを管理します。

私の問題は、無限のリダイレクトループで実行され、30回の試行後に破損するいくつかのURL(主にTumblr)です。

例:http://ansgar-skoda.tumblr.com/post/96703389502

私は、ブラウザまたは

curl -v -L http://ansgar-skoda.tumblr.com/post/96703389502 

リダイレクト作品で、このページを要求し、私は正しいWebページを受け取ります。 これは正しく設定していないようです。 Requests docuを調べると、allow_redirectsオプションがデフォルトでTrueであることがわかりました。この場合、ユーザーエージェントは結果に影響を与えていないようです。

ここに進む方法についてのヒントを教えてください。 ありがとうございます。今日のよう

+1

のバグです - の両方で同じ要求パッケージ(2.13.0)。 – mhawke

+0

非常によく目撃された。これをRequestsのIssue Trackerに伝えます。 –

+0

https://github.com/kennethreitz/requests/issues/3949 –

答えて

関連する問題