使用Robobrowser python库登录ASPX

时间:2017-06-24 15:18:35

标签: python robobrowser

尝试使用Robobrowser自动登录到asp网站。 robobrowser没有错误,但它只返回登录站点,而不是成功的站点。

</td><td class='LoginFormData' width='10px'><input class='LoginFormData' type='text' name='L1' id='L1' size='8' value='' onfocus='javascript:SetOrigInput("L1");' onkeydown='javascript:SubmitForm("2|1300,5|2,27|1,44|1,64|1,68|1,", "", event);' onkeyup='javascript:VerifyTextInput("L1", ",1,", "", 50, 0);'>
</td></tr><tr><td class='LoginFormDetail'>Password</td><td class='LoginFormData' width='10px'><input class='LoginFormData' type='password' name='P1' id='P1' size='8' value='' onfocus='javascript:SetOrigInput("P1");' onkeydown='javascript:SubmitForm("2|1300,5|2,27|1,44|1,64|1,68|1,", "", event);' onkeyup='javascript:VerifyTextInput("P1", ",1,", "", 50, 0);'>
</td></tr><tr><td class='LoginButtons' colspan='2'><input type='button' class=LoginFormButton name='login' id='login' value='Login' onclick='javascript:CheckLogin("2|1300,5|2,27|1,44|1,64|1,68|1,", "080402", "User name or password is missing", "Wrong CAPTCHA");'>

脚本:

from robobrowser import RoboBrowser

url = 'https://url.org'
login_url = url + '/Login.aspx'

username = "name"
password = "pass"

browser = RoboBrowser(history=True)
browser.open(login_url)

signin = browser.get_form(id='frm')
signin["L1"].value = username
signin["P1"].value = password
signin["login"].value = "Login"
browser.submit_form(signin)
print browser.url
print browser.parsed

1 个答案:

答案 0 :(得分:1)

我使用selenium来解决这个问题:

from pyvirtualdisplay import Display
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
display = Display(visible=0, size=(1024, 768))
display.start()
driver = webdriver.Firefox()
driver.get("https://aspxsite.org/")
username = driver.find_element_by_name("L1")
username.clear()
username.send_keys("$username")
password = driver.find_element_by_name("P1")
password.clear()
password.send_keys("$password")
driver.find_element_by_id("login").click()
driver.get("https://aspxsite.org/XOOverview.aspx")
driver.save_screenshot('screenie.png')
driver.close()
display.stop()