2017-04-02 1 views
0

Ich habe Kabel-Internet, die mich erfordert, um sich über eine Webseite einzuloggen. Es ist nervig, wie es jeden Tag um 8 und 12 Uhr zurückgesetzt wird. Ich wollte ein Python-Skript schreiben, das den Login-Prozess automatisiert. Ich habe bisher viele StackOverflow-Lösungen gelesen, nichts hat funktioniert. Ich habe Requests versucht, Twill, RoboBrowser usw.Auto Anmeldung mit Python zu meiner lokalen Internet-Seite

Auf der Seite Quelle Inspektion ich auf eine doLogin() Ajax-Skript kam, die durch Login-Button ausgelöst wird. Hier ist die vollständige page source.

finden Sie eines meiner Implementierungen, die

import requests 

# Fill in your details here to be posted to the login form. 
payload = { 
    'action': 'http://10.10.0.1/login', 
    'actualusername': 'username', 
    'actualpassword': 'password' 
} 

# Use 'with' to ensure the session context is closed after use. 
with requests.Session() as s: 
    p = s.post("http://103.251.83.134/captiveportal/Default.aspx", data=payload) 
    # print the html returned or something more intelligent to see if it's a successful login page. 
    print p.text 

    # An authorised request. 
    #r = s.get('http://www.google.com') 
    #print r.text 

EDIT schlägt fehl: Lösung

Ich verwendete Selen WebDriver dies zu beheben. Prüfe die Antwort.

Antwort

1

Verwendung Selen :) Download chromedriver auf den Weg, eine zwei Zeitvariable machen und überprüfen Sie die Zeit jeden min, und wenn sie auf ‚Login-Zeit‘ Ihr Browser wird die autorizathion passiert

from selenium import webdriver 

def Authorization_for_broadband(): 
    driver = webdriver.Chrome("C:\YOURPATHTO\CHROMEDRIVER.EXE") 

    driver.get('http://10.10.0.1/login') 
    driver.find_element_by_xpath('//*[@id="username"]').send_keys('USERNAME') 
    driver.find_element_by_xpath('//*[@id="password"]').send_keys('PASSWORD') 
    driver.find_element_by_xpath('//*[@id="btnLogin"]').click() 
    driver.close 
while(1): 
    if time=='your-login-period1' or time == 'your-login-period2': 
     Authorization_for_broadband() 
+0

ich genau dies heute umgesetzt werden, bevor auch diese Antwort beim Lesen! Danke für das Posten. Ich habe jedoch webdriver.Firefox() verwendet. Was gut funktioniert. Ich wollte, dass der Prozess still ist, dafür werde ich PhantomJS ausprobieren, wie ich irgendwo gelesen habe. Ich werde diese akzeptierte Lösung machen, wenn jemand braucht! –

0

Ihre URL ist möglicherweise falsch. Mit Blick auf den Quellcode sieht es so aus, als ob das HTML-Formular Daten auf die http://10.10.0.1/login-Seite schreibt und dann sendet die doLogin()-Funktion Daten an Register.aspx?CheckCustomerStatus=1.

Auch Ihre Nutzlast enthält die Variable action und Sie verwenden ein Session Objekt, das ich glaube nicht, ist notwendig.

Ich kann es nicht testen, da es sich um eine lokale Login-Seite ist kann ich nicht den Zugang, aber ich würde versuchen, Ihren Code zu modifizieren die Login-Informationen zu beiden Seiten einreichen mit einem einfacheren POST request

Verwandte Themen