Cómo iniciar sesión en un sitio web sin usar un navegador en Python

Puedes hacerlo de varias maneras:

  • Usando el módulo Mechanize en python
  • Usando selenium en python y ejecuta el navegador en modo sin cabeza o usa phantomJS () con selenium.

Para el módulo Mecanizar , a continuación se muestra un ejemplo.

mecanizado de importación
sistema de importación
desde bs4 import BeautifulSoup
recargar (sys)
sys.setdefaultencoding (‘utf8’)
browser = mechanize.Browser ()
browser.set_handle_robots (Falso)
cookies = mecanizar.CookieJar ()
browser.set_cookiejar (cookies)
browser.addheaders = [(‘User-agent’, ‘Mozilla / 5.0 (X11; U; Linux i686; en-US) AppleWebKit / 534.7 (KHTML, like Gecko) Chrome / 7.0.517.41 Safari / 534.7’)]

browser.set_handle_refresh (Falso)
url = ‘https://www.facebook.com/login’
browser.open (url)
browser.select_form (nr = 0) # Este es el formulario de inicio de sesión-contraseña -> nr = número = 0

browser.form [’email’] = “”
browser.form [‘pass’] = “”
respuesta = browser.submit ()
sopa = BeautifulSoup (respuesta, ‘html.parser’)
imprima la salida #redirect de soup en un archivo html y ábrala en el navegador para confirmar que Facebook ha iniciado sesión o no.

Para el módulo de selenio :

desde selenium import webdriver
desde selenium.webdriver.common.keys importar claves
usr = “”
pwd = “”

# Descomenta debajo de las líneas para cargar en modo sin cabeza
” ‘
desde pyvirtualdisplay import Display
importar selenium.webdriver.support.ui como ui
display = Display (visible = 0, size = (1024, 768))
display.start ()
” ‘

driver = webdriver.Firefox () # o puede usar Chrome (ejecutable_path = “/ usr / bin / chromedriver”)

driver.get (“http://www.facebook.com”)

afirmar “Facebook” en driver.title
elem = driver.find_element_by_id (“correo electrónico”)
elem.send_keys (usr)
elem = driver.find_element_by_id (“pasar”)
elem.send_keys (pwd)
elem.send_keys (Keys.RETURN)
driver.close ()
# display.stop () # Uncomment para cargar en modo sin cabeza

Mediante el uso de phantomjs y luego interactuar con dom del sitio web. PhantomJs.org