macrosystem (koleje mazowieckie) fxcker

macrosystem-km
Laura Liberda 2021-05-25 13:20:51 +02:00
parent 9c7163416e
commit e154dc9113
2 changed files with 38 additions and 0 deletions

View File

@ -7,6 +7,7 @@ from .ledatel import LedatelFxcker
from .ipartners import IPartnersFxcker
from .kfchotspot import KFCHotspotFxcker
from .justwifi import JustWifiFxcker
from .macrosystem import MacrosystemFxcker
fxckers_map = [
([r"re:MZK Opole \d{3}(?: (?:2.4|5)GHz)?"], DummyFxcker),
@ -19,6 +20,7 @@ fxckers_map = [
"_PKP_WIFI",
"Poznan Airport by JustWiFi",
], JustWifiFxcker),
(["km-wifi"], MacrosystemFxcker),
]
__all__ = ['fxckers_map']

View File

@ -0,0 +1,36 @@
from __future__ import unicode_literals
from ._common import BaseFxcker
from ..utils import (
dump_qs,
hidden_inputs,
js_to_json,
regex_search_string,
TEST_URL,
)
import datetime
import json
import urllib.parse
# not tested, intended for Koleje Mazowieckie (https://www.mazowieckie.com.pl/) and possibly others
class MacrosystemFxcker(BaseFxcker):
def unfxck(self, location=None):
first_page = self.request("GET", location or TEST_URL)
qs = regex_search_string(r'(?s)function toDeviceLogin\(\)\s*{.+?queryParams\(({.+?})\);', first_page.text)
qs = qs.replace('new Date().getTime()', str(datetime.datetime.now().microsecond()))
first_url = urllib.parse.urlparse(first_page.url)
browser = urllib.parse.parse_qs(first_url.query)['browser'][0]
qs = qs.replace('getUrlParam("browser")', browser)
qs = js_to_json(qs)
qs = json.loads(qs)
qs = dump_qs(qs)
login_url = urllib.parse.urljoin(first_page.url, './login.html') + '?' + qs
login_page_req = self.request('GET', login_url)
login_page = login_page_req.text()
login_form = hidden_inputs(login_page)
login_req_url = regex_search_string(r"<form\b[^>]*?action='([^']+)'", login_page)
# redirects to KM's own webpage
login_req = self.request('POST', login_req_url, body=dump_qs(login_form), follow_redirects=False)
return login_req.status_code == 302