macrosystem (koleje mazowieckie) fxcker
parent
9c7163416e
commit
e154dc9113
|
@ -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']
|
||||
|
|
|
@ -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
|
Loading…
Reference in New Issue