Python autentica y lanza una página privada usando el navegador web, urllib y CookieJar

Quiero iniciar sesión con cookiejar y no iniciar la página de inicio de sesión, sino una página que solo se puede ver después de la autenticación. Sé que mecanizar hace eso, pero además de no trabajar para mí ahora, prefiero hacer esto sin él. Ahora tengo,

import urllib, urllib2, cookielib, webbrowser from cookielib import CookieJar username = 'my_username' password = 'my_password' url = 'my_login_page' cj = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) login_data = urllib.urlencode({'my_username' : username, 'my_password' : password}) opener.open(url, login_data) page_to_launch = 'my_authenticated_url' webbrowser.open(page_to_launch, new=1, autoraise=1) 

Puedo iniciar sesión y volcar la página autenticada en la salida estándar o iniciar la página de inicio de sesión sin reconocer la cookie, pero no puedo iniciar la página que deseo después de iniciar sesión. Se agradece la ayuda.

Podrías usar el módulo de selenium para hacer esto. Inicia un navegador (chrome, Firefox, IE, etc.) con una extensión cargada que le permite controlar el navegador.

Aquí está cómo cargar cookies en él:

 from selenium import webdriver driver = webdriver.Firefox() # open the browser # Go to the correct domain driver.get("http://www.example.com") # Now set the cookie. Here's one for the entire domain # the cookie name here is 'key' and it's value is 'value' driver.add_cookie({'name':'key', 'value':'value', 'path':'/'}) # additional keys that can be passed in are: # 'domain' -> String, # 'secure' -> Boolean, # 'expiry' -> Milliseconds since the Epoch it should expire. # finally we visit the hidden page driver.get('http://www.example.com/secret_page.html') 

Sus cookies no llegan al navegador.

webbrowser CookieJar no tiene instalaciones para aceptar las cookies almacenadas en su instancia de CookieJar . Es simplemente una interfaz genérica para lanzar un navegador con una URL. Tendrá que implementar un CookieJar que pueda almacenar cookies en su navegador (que es casi seguro que no es tarea fácil) o usar una biblioteca alternativa que resuelva este problema por usted.