Механизация: заполнение и отправка формы интернет-банкинга выдает одну и ту же ошибку независимо от того, правильно ли я использую данные для входа - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь создать скрипт для входа в свой банк.Я успешно сделал это, но вдруг он перестал работать, и я не могу понять, почему.Я связался с моим банком - они сказали мне, что они ничего не изменили, что объясняет, почему это не работает (то есть, предотвращает вход ботов).Кроме того, у меня есть PHP-скрипт, который отлично работает.Мне не нравится php, и я хочу, чтобы он работал в python с использованием mechanize.Это мой код:

import mechanize

def scrapeBank(): 

url = 'https://online.lloydsbank.co.uk/personal/logon/login.jsp'
userName = 'XXXX'
firstPassword = 'XXXX'
secondPassword = 'XXXX'

br = mechanize.Browser()
br.set_handle_equiv(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]

br.open(url)

f = open("output1.html","w+")
f.write(br.response().read())
f.close()  

br.select_form(nr=0)
br.form['frmLogin:strCustomerLogin_userID'] = userName
br.form['frmLogin:strCustomerLogin_pwd'] = firstPassword
br.submit()

f = open("output2.html","w+")
f.write(br.response().read())
f.close()  

scrapeBank()

Теперь то, что я ожидал увидеть в output2.html (и то, что я видел до того, как оно перестало работать), - это второй этап входа в систему, когда вам нужновведите второй пароль.Вместо этого я получаю сообщение об ошибке «Извините, мы вышли из системы ...».Теперь я получаю ОДНУ ЖЕ ошибку, если я использую неправильное имя пользователя и пароль, или я вообще не заполняю эти поля.Это НЕ ожидаемое поведение.Ожидаемое поведение, если я использую неправильные детали, является ошибкой, говорящей так же много (это то, что происходит, если я ввожу неправильные детали вручную в браузере).Ожидаемое поведение, если я не введу какие-либо данные, заключается в том, что он вообще не должен отправлять форму, так как имя пользователя и пароль являются обязательными полями.Это подразумевает, что br.submit () делает что-то странное.

В итоге Если вы перейдете по ссылке выше в вашем браузере и введете случайное имя пользователя или пароль, вам сообщат, что ваш логин неверный.Тем не менее, если вы запустите приведенный выше код (вы должны быть в состоянии скопировать, вставить и легко запустить его, если у вас установлена ​​механизация), вы НЕ получите это - вы получите «вы вышли из системы…» (вы можете просмотреть output2.html, чтобы увидеть это) ошибка - или, по крайней мере, это то, что я получаю.Итак, почему функциональность отличается от входа в систему с помощью браузера и использования механизации?

...