Найти - Пользователи
Полная версия: Requests: 403 в питоне, OK в браузере
Начало » Python для новичков » Requests: 403 в питоне, OK в браузере
1 2
m0rtal
wallet
R
Попробовал, то же самое. Пока удалось продвинутся только со ссылками на сторонние сайты благодаря удалению слэша в адресе. Member area почему-то для меня по-прежнему закрыта.

Код полностью:
 #! python3
import requests, bs4, os, re, random, time, pyperclip
myheader = {'user-agent': 'Mozilla Firefox/51.0.1', 'Referer':'https://www.volodaily.com/'}
loginpage='https://www.volodaily.com:443/login'
payload={'cjfm_do_login_nonce':'cc12226939','do_login':'','login_form_user_login':'blah','login_form_user_pass':'blah','redirect_url':'https://www.volodaily.com/issues','remember_me':'on'}
image='https://s3.amazonaws.com/dailyvolo/wp-content/uploads/2016/05/03164021/oceanflavor-by-Igor-Koshelev.jpg'
with requests.Session() as s:
    logged = s.post(loginpage, headers=myheader, data=payload)
    mycookies = logged.cookies
    print(mycookies)
    print('Login page responce: ' + str(logged))
    err = s.get(image, headers=myheader, cookies=mycookies)
    print('Amazon link avail: ' + str(err))
    membersonly = s.get('https://www.volomagazine.com', headers=myheader, cookies=mycookies)
    print('Members only area avail: ' + str(membersonly))

 Login page responce: <Response [200]>
Amazon link avail: <Response [200]>
Members only area avail: <Response [403]>
m0rtal
Слэш в конце пришлось удалить по рекомендациям отсюда http://stackoverflow.com/questions/19909127/python-requests-403-on-post
Говорят, нужно скармливать именно файл, а не каталог.

А ещё там же говорят, что 403 - это не 401, и сделано именно для защиты:
403 means the server is refusing to respond it and authentication won't make a difference. Sure, there's a chance whoever implemented it doesn't know the difference, but it's also likely that they are tracking something else and trying to prevent automated access like you're trying to do.

Но, я уверен, что и на это можно найти обход… только как?
m0rtal
Ещё немного поправили: User-Agent большими буквами. Но всё равно не помогает.
Gogantov
У меня вот так получилось картинку слить -
 # -*- coding: UTF-8 -*-
from robobrowser import RoboBrowser
USER_AGENT = 'Mozilla/5.0 (compatible; ABrowse 0.4; Syllable)'
browser = RoboBrowser(user_agent=USER_AGENT, parser='html.parser')
LOGIN = 'логин'
PASSWORD = 'пароль'
browser.open('https://www.volodaily.com/login/')
form = browser.get_form(action='https://www.volodaily.com:443/login/')
form['login_form_user_login'] = LOGIN
form['login_form_user_pass'] = PASSWORD
browser.submit_form(form)
browser.open('https://www.volodaily.com/ocean-flavor-by-igor-koshelev/')
url = 'https://s3.amazonaws.com/dailyvolo/wp-content/uploads/2016/05/03164021/oceanflavor-by-Igor-Koshelev.jpg'
headers = {'Referer':'https://www.volodaily.com/ocean-flavor-by-igor-koshelev/'}
image = browser.session.get(url , headers=headers, stream=True)
with open('Igor-Koshelev.jpg', 'wb') as file:
    file.write(image.content)
print('ok')

И действительно, пока headers не прописал amasonaws отдавал xml с ошибкой.
wallet
m0rtal
Ещё немного поправили: User-Agent большими буквами. Но всё равно не помогает.

Вместо “Mozilla Firefox” пишите просто “Mozilla”

 'Mozilla/51.0.1'
m0rtal
Добавил полную строку User-Agent отсюда, вроде пошло. Редко ещё бывает 403, но пока не системно, буду разбираться.

Спасибо!
py.user.next
m0rtal
Добавил полную строку User-Agent отсюда, вроде пошло.
Свой браузер можно было посмотреть в заголовках запроса в Firebug или HttpFox.
m0rtal
py.user.next
Можно было, но честно говоря глазами в выдаче не нашёл.
py.user.next
m0rtal
Можно было, но честно говоря глазами в выдаче не нашёл.
Там вкладка “заголовки”, вот в ней.
m0rtal
py.user.next
Там вкладка “заголовки”, вот в ней.
Теперь нашёл ))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB