diff --git a/modules/banquepopulaire/browser.py b/modules/banquepopulaire/browser.py index b05a7612..b10bdbe7 100644 --- a/modules/banquepopulaire/browser.py +++ b/modules/banquepopulaire/browser.py @@ -63,6 +63,7 @@ class BanquePopulaire(Browser): def __init__(self, website, *args, **kwargs): self.DOMAIN = website + self.token = None Browser.__init__(self, *args, **kwargs) @@ -92,11 +93,11 @@ class BanquePopulaire(Browser): def go_on_accounts_list(self): for taskInfoOID in self.ACCOUNT_URLS: - self.location(self.buildurl('/cyber/internet/StartTask.do', taskInfoOID=taskInfoOID, token=self.page.get_token())) + self.location(self.buildurl('/cyber/internet/StartTask.do', taskInfoOID=taskInfoOID, token=self.token)) if not self.page.is_error(): if self.page.pop_up(): self.logger.debug('Popup displayed, retry') - self.location(self.buildurl('/cyber/internet/StartTask.do', taskInfoOID=taskInfoOID, token=self.page.get_token())) + self.location(self.buildurl('/cyber/internet/StartTask.do', taskInfoOID=taskInfoOID, token=self.token)) self.ACCOUNT_URLS = [taskInfoOID] break else: @@ -126,10 +127,10 @@ class BanquePopulaire(Browser): if 'prevAction' in next_page: params = self.page.get_params() params['dialogActionPerformed'] = next_page.pop('prevAction') - params['token'] = self.page.build_token(self.page.get_token()) + params['token'] = self.page.build_token(self.token) self.location('/cyber/internet/ContinueTask.do', urllib.urlencode(params)) - next_page['token'] = self.page.build_token(self.page.get_token()) + next_page['token'] = self.page.build_token(self.token) self.location('/cyber/internet/ContinueTask.do', urllib.urlencode(next_page)) for a in self.page.iter_accounts(next_pages): diff --git a/modules/banquepopulaire/pages.py b/modules/banquepopulaire/pages.py index 41323bd2..799c81c1 100644 --- a/modules/banquepopulaire/pages.py +++ b/modules/banquepopulaire/pages.py @@ -61,6 +61,13 @@ class BasePage(_BasePage): def get_token(self): return self.parser.select(self.document.getroot(), '//form//input[@name="token"]', 1, 'xpath').attrib['value'] + def on_loaded(self): + if not self.is_error(): + self.browser.token = self.get_token() + + def is_error(self): + return False + def build_token(self, token): """ These fucking faggots have introduced a new protection on the token.