def get_info(username: str, password: str, session: Optional[Session] = None): if session is None: session = Session() session.headers['User-Agent'] = CONFIG['USER_AGENT'] r = session.get("https://secure.etecsa.net:8443/") form = get_inputs(r) action = "https://secure.etecsa.net:8443/EtecsaQueryServlet" form['username'] = username form['password'] = password r = session.post(action, form) sel = Selector(r.text) exp_node = sel.re_first(verif_pattern) if exp_node is None: return "**invalid credentials**" res = {} table = sel.css('table')[0] table = table.css('td') for i, j in zip(table.css('td')[::2], table.css('td')[1::2]): if verif_pattern.search(i.css("::text").get().strip()): res['expiration'] = j.css("::text").get().strip() if credit.search(i.css("::text").get().strip()): res['credit'] = j.css("::text").get().strip() cr = float(res['credit'].split(' ')[0]) res['time_left'] = cr / CONFIG['TIME_CONVERSION_CONSTANT'] return res
def verify(username: str, password: str, session: Optional[Session] = None): if session is None: session = Session() session.headers['User-Agent'] = CONFIG['USER_AGENT'] r = session.get("https://secure.etecsa.net:8443/") form = get_inputs(r) action = "https://secure.etecsa.net:8443/EtecsaQueryServlet" form['username'] = username form['password'] = password r = session.post(action, form) sel = Selector(r.text) exp_node = sel.re_first(verif_pattern) if exp_node is None: return False return True
def user_data(self): response = requests.get('https://wikium.ru/statistic/today', headers=self.headers) sel = Selector(text=response.text) return json.loads(sel.re_first(r'carrotquest\.identify\((.*?)\);'))