Compare commits

...

1 commit

Author SHA1 Message Date
Laura Liberda e154dc9113 macrosystem (koleje mazowieckie) fxcker 2021-05-25 13:20:51 +02:00
2 changed files with 38 additions and 0 deletions

View file

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