sessions requests auth python cookies python-requests

requests - Solicitudes de Python: administración de cookies



response get python (2)

Debería reutilizar todo el objeto de sesión , no el cookiejar asociado. Use self.s para todas las solicitudes que realice.

Si sus solicitudes siguen fallando al reutilizar la sesión, estarán fallando por un motivo diferente, no porque no esté devolviendo las cookies correctamente.

Tenga en cuenta que si necesita usar auth=(''username'', ''password'') entonces la autenticación está basada en HTTPAuth, no basada en cookies. Debe pasar la misma autenticación para todas las llamadas. La sesión de solicitudes también puede hacer eso por usted:

s = requests.session(auth=(''username'', ''password''))

Sin embargo, si la página de inicio de sesión es un formulario con un campo de nombre de usuario y contraseña, deberá llamar al formulario en su lugar. Compruebe si el formulario es POST o GET, y verifique los nombres de los campos:

s.post(loginTarget, {usernamefield=username, passwordfield=password, otherfield=othervalue})

y no usar autenticación HTTP en absoluto.

Intento obtener cierto contenido automáticamente de un sitio usando solicitudes (y bs4)

Tengo un script que obtiene una cookie:

def getCookies(self): username = ''username'' password = ''password'' URL = ''logonURL'' r = requests.get(URL, auth=(''username'', ''password'')) cookies = r.cookies

el volcado de las cookies se ve así:

<<class ''requests.cookies.RequestsCookieJar''>[<Cookie ASP.NET_SessionId=yqokjr55ezarqbijyrwnov45 for URL.com/>, <Cookie BIGipServerPE_Journals.lww.com_80=1440336906.20480.0000 for URL.com/>, <Cookie JournalsLockCookie=id=a5720750-3f20-4207-a500-93ae4389213c&ip=IP address for URL.com/>]>

Pero cuando paso el objeto de cookie a la siguiente URL:

soup = Soup(s.get(URL, cookies = cookies).content)

no funciona, puedo ver al eliminar la sopa que no le doy mis credenciales al servidor web

Traté de ejecutar una sesión de solicitudes:

def getCookies(self): self.s = requests.session() username = ''username'' password = ''password'' URL = ''logURL'' r = self.s.get(URL, auth=(''username'', ''password''))

y me da lo mismo sin alegría.

Miré el encabezado a través de liveHttp en FF cuando visito la segunda página, y veo una forma muy diferente:

Cookie: WT_FPC=id=264b0aa85e0247eb4f11355304127862:lv=1355317068013:ss=1355314918680; UserInfo=Username=username; BIGipServerPE_Journals.lww.com_80=1423559690.20480.0000; PlatformAuthCookie=true; Institution=ReferrerUrl=http://logonURL.com/?wa=wsignin1.0&wtrealm=urn:adis&wctx=http://URL.com/_layouts/Authenticate.aspx?Source=%252fpecnews%252ftoc%252f2012%252f06440&token=method|ExpireAbsolute; counterSessionGuidId=6e2bd57f-b6da-4dd4-bcb0-742428e08b5e; MyListsRefresh=12/13/2012 12:59:04 AM; ASP.NET_SessionId=40a04p45zppozc45wbadah45; JournalsLockCookie=id=85d1f38f-dcbb-476a-bc2e-92f7ac1ae493&ip=10.204.217.84; FedAuth=77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48U2VjdXJpdHlDb250ZXh0VG9rZW4gcDE6SWQ9Il9mMGU5N2M3Zi1jNzQ5LTQ4ZjktYTUxNS1mODNlYjJiNGNlYzUtNEU1MDQzOEY0RTk5QURCNDFBQTA0Mjc0RDE5QzREMEEiIHhtbG5zOnAxPSJodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93c3MvMjAwNC8wMS9vYXNpcy0yMDA0MDEtd3NzLXdzc2VjdXJpdHktdXRpbGl0eS0xLjAueHNkIiB4bWxucz0iaHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvd3Mtc3gvd3Mtc2VjdXJlY29udmVyc2F0aW9uLzIwMDUxMiI+PElkZW50aWZpZXI+dXJuOnV1aWQ6ZjJmNGY5MGItMmE4Yy00OTdlLTkwNzktY2EwYjM3MTBkN2I1PC9JZGVudGlmaWVyPjxJbnN0YW5jZT51cm46dXVpZDo2NzMxN2U5Ny1lMWQ3LTQ2YzUtOTg2OC05ZGJhYjA3NDkzOWY8L0luc3RhbmNlPjwvU2VjdXJpdHlDb250ZXh0VG9rZW4+

He redactado el nombre de usuario, la contraseña y las URL de la pregunta por razones obvias.

¿Me estoy perdiendo algo obvio? ¿Hay alguna forma diferente / apropiada de capturar la cookie? El método actual que estoy usando no funciona.

EDITAR:

Esta es una versión independiente del código de sesión:

s = requests.session() username = ''username'' password = ''password'' URL = ''logonURL.aspx'' r = s.get(URL, auth=(''username'', ''password'')) URL = r"URL.aspx" soup = Soup(s.get(URL).content)

leyendo un tugurio de la sopa, puedo ver en el html que me está diciendo que no tengo acceso; esta cadena solo aparece en el navegador cuando no estás conectado.


Tuve un problema similar y encontré ayuda en esta pregunta. El jar de sesión estaba vacío y para obtener realmente la cookie que necesitaba para usar una sesión.

session = requests.session() p = session.post("http://example.com", {''user'':user,''password'':password}) print ''headers'', p.headers print ''cookies'', requests.utils.dict_from_cookiejar(session.cookies) print ''html'', p.text