По умолчанию allow_redirects
обычно имеет значение true, но, похоже, что оно не обрабатывает перенаправления, которые выдают коды состояния, отличные от 3XX.
Более конкретно, как мне обрабатывать
>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
# example url
>>> r.status_code
200
>>> r.text
<p>Redirecting...</p>
И переход на сайт вручную показывает, что страница действительно перенаправляется, несмотря на то, что редактирование 200
.
: мое текущее решение на данный момент.Убери это позже
def meta_redirect(html_text, uri):
start = html_text.find('<metahttp-equiv="refresh"content="0;url=') + 40
end = html_text.find('"', start)
redirect = html_text[start:end]
if "http" in redirect:
return redirect
return '/'.join([uri, redirect])
def main():
uri = 'https://api.github.com/user'
r = requests.get(uri, auth=('user', 'pass'))
html_text = r.text.lower().replace("'", '"').replace(" ", "")
while '<metahttp-equiv="refresh"content="0;url=' in html_text:
r = requests.get(meta_redirect(html_text, uri), auth=('user', 'pass'))
html_text = r.text.lower().replace("'", '"').replace(" ", "")
return r