handling useless captcha page

This commit is contained in:
Vincent Paredes 2015-04-21 14:53:27 +02:00 committed by Romain Bignon
commit 1ae22f84a2
2 changed files with 29 additions and 0 deletions

View file

@ -88,6 +88,7 @@ class Paypal(Browser):
self.location('https://' + self.DOMAIN + '/en/cgi-bin/webscr?cmd=_login-run') self.location('https://' + self.DOMAIN + '/en/cgi-bin/webscr?cmd=_login-run')
self.page.login(self.username, self.password) self.page.login(self.username, self.password)
self.page.validate_useless_captacha()
if self.is_on_page(LoginPage): if self.is_on_page(LoginPage):
raise BrowserIncorrectPassword() raise BrowserIncorrectPassword()

View file

@ -20,20 +20,48 @@
from decimal import Decimal from decimal import Decimal
import re import re
from mechanize import Cookie
from weboob.capabilities.bank import Account from weboob.capabilities.bank import Account
from weboob.capabilities.base import NotAvailable from weboob.capabilities.base import NotAvailable
from weboob.deprecated.browser import Page from weboob.deprecated.browser import Page
from weboob.deprecated.mech import ClientForm
from weboob.tools.capabilities.bank.transactions import FrenchTransaction from weboob.tools.capabilities.bank.transactions import FrenchTransaction
from weboob.tools.date import parse_french_date from weboob.tools.date import parse_french_date
class LoginPage(Page): class LoginPage(Page):
def login(self, login, password): def login(self, login, password):
#Paypal use this to check if we accept cookie
c = Cookie(0, 'cookie_check', 'yes',
None, False,
'.' + self.browser.DOMAIN, True, True,
'/', False,
False,
None,
False,
None,
None,
{})
cookiejar = self.browser._ua_handlers["_cookies"].cookiejar
cookiejar.set_cookie(c)
self.browser.select_form(name='login_form') self.browser.select_form(name='login_form')
self.browser['login_email'] = login.encode(self.browser.ENCODING) self.browser['login_email'] = login.encode(self.browser.ENCODING)
self.browser['login_password'] = password.encode(self.browser.ENCODING) self.browser['login_password'] = password.encode(self.browser.ENCODING)
self.browser.submit(nologin=True) self.browser.submit(nologin=True)
def validate_useless_captacha(self):
#paypal use a captcha page after login, but don't use the captcha
self.browser.select_form(name='challenge')
self.browser.form.set_all_readonly(False)
#paypal add this on the captcha page when the validate should be automatique
self.browser.controls.append(ClientForm.TextControl('text', 'ads_token_js', {'value': ''}))
self.browser['ads_token_js'] = self.browser['ads_token']
self.browser.submit(nologin=True)
class UselessPage(Page): class UselessPage(Page):
pass pass