Commit e4df2f36 authored by wang's avatar wang

1

parent 07993b65
import requests
import json
headers = {
"authority": "ibe.api.flyscoot.com",
"accept": "application/json, text/plain, */*",
"accept-language": "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7,ru;q=0.6",
"authorization": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI1MGQzYjQ0Yi0yZmZjLTQ2ZTgtYmM2My04MjQzNjE2Nzc5MGEiLCJpYXQiOjE2OTk0MTE5ODgsInRrbiI6ImV5SmhiR2NpT2lKSVV6STFOaUlzSW5SNWNDSTZJa3BYVkNKOS5leUp6ZFdJaU9pSlZibXR1YjNkdUlpd2lhblJwSWpvaU5HUXlOMlU1TnpVdFkyVTRaaTB5TUdWa0xUTXlNMkl0TVRGa1pEVTJPVFpoWW1RMUlpd2lhWE56SWpvaVpHOTBVa1ZhSUVGUVNTSjkuM0ZvWFh1YnhxblhEN0FXeUZmcllWX0JFQUduZ2RLUlQtb0hOSkxfS0JqbyIsImlzcyI6InNjb290LWNtdyIsImF1ZCI6InNjb290LWFwcCJ9.RK9b5v73r9npPtkAgRrqwcXkGBP8t8aBQWJ97xY1N5Q",
"cache-control": "no-cache",
"content-type": "application/json",
"origin": "https://beta.makeabooking.flyscoot.com",
"pragma": "no-cache",
"sec-ch-ua": "\"Google Chrome\";v=\"117\", \"Not;A=Brand\";v=\"8\", \"Chromium\";v=\"117\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"macOS\"",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-site",
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36",
"x-scoot-appsource": "IBE-WEB",
"x-scoot-client-environment": "PROD",
"x-scoot-client-session": "3565deeb-092d-4ed6-b49f-3299c2f6af0f",
"x-scoot-client-version": "0.0.0"
}
cookies = {
"__clickidc": "169768083853897875",
"dtSa": "-",
"reese84": "3:4bTB/2ShtkF7kHIfdi68Dg==:15QOISUmu50tP0Sgh/ExxgGk5ug5nYzEozhslrv1CUs4yvjfOYA3zB6R0SLwwEe5dovB53+nExzkG8vWAT5uc0O0sbDab0VOUxZuapSbs+xRtEjMHiqFbV+4VWSI8oL6bANFrya6kgcggeywRCfUjgMwWfLH/WHaPbPTRZk6EFuyGP4NA7HHVMn+yhlSPTDyrVrwsXnCYvdRzpv5cr1GJupdV3K9tzZnB0EEXl2UVUoHWuui3CZsVTcA0hzSqOr2ufjWvfyYVDMbNKKOa1WjxiEXkC4aNkwaMRBLXAOroWhumtbfWLqLAkH8s0R7L03m0PGD71p3uOGTmIlcgV5lj6Tu4HP+lRarZNOSyeKcUfkh/yebBrOVf/+7YwFAv9e4zIGtE23bqG3FyOrT/C37trbRgrrT9FxfPeYSgjdQCYsBpAUYICYEBbD+yaB3j06VBNsAHS0z3i4bWyNdugbkTQ==:JdWUEAqBh1iGdKJkfaxmt5UAi/Eaa6WRU4ybcGTonXM=",
"visid_incap_2572958": "2+hQRvF6TGKlyxIJUX4/phP4SmUAAAAAQUIPAAAAAAB8Z1HbnrRbXGNSkrB3NNNZ",
"nlbi_2572958": "AKeRAhfKdiAh5bzj3Zs2agAAAADcm7M8zLWAiBFekAhDqZl/",
"incap_ses_165_2572958": "3Ep8QEVhXS2O0n1GpzJKAhP4SmUAAAAAnxC9qXmiX9qtvvKdXuGi1w==",
"_gcl_au": "1.1.743414164.1699411992",
"_ga": "GA1.1.874000338.1699411992",
"_ga_GFV545L5B3": "GS1.1.1699411992.1.0.1699411992.60.0.0",
"_cls_v": "27b18315-d757-4939-bfc7-eee17255bc0e",
"_cls_s": "c7aa186e-c2e4-4fd2-859e-1a34596d874d:0",
"dtCookie": "v_4_srv_-2D9_sn_GQNI51PUD26HTID04T6OENVHSHRK8FM3",
"rxVisitor": "16994119927814GIV5G7TK0V0SSCDUUROKSGJAEK1NN27",
"rxvt": "1699413792789|1699411992782",
"_yjsu_yjad": "1699411992.3f522514-33ac-4325-b48e-cb1d791c32f8",
"dtPC": "-9$211992778_193h-vMGKHKHGHUDKKVCTVPMMFAPKCATABSHMH-0e0",
"_fbp": "fb.1.1699411992892.1821739093",
"QSI_HistorySession": "https%3A%2F%2Fbeta.makeabooking.flyscoot.com%2FBook%2FFlight%3Fculture%3Den-SG%26type%3Doneway%26dst1%3DHKG%26ast1%3DSIN%26dst2%3DSIN%26ast2%3DHKG%26dd%3D2023-11-10%26rd%3Dnull%26adt%3D1%26chd%3D0%26inf%3D0~1699411993188",
"AMP_TOKEN": "%24NOT_FOUND",
"__qca": "P0-482885418-1699411992616",
"tmpcurr": "HKD",
"tfpsi": "9e716307-7342-4d74-9031-3b59b911414f",
"jumpseat_uid": "aY64E-wneDIxiqZh1IaJVA"
}
url = "https://ibe.api.flyscoot.com/v1/booking/flight/availability"
data = {
"flightCriteria": [
{
"origin": "HKG",
"destination": "SIN",
"departureDate": "2023-11-10"
}
],
"passengerCriteria": {
"adult": 1,
"child": 0,
"infant": 0
},
"currencyCode": "HKD",
"promoCode": None,
"salesCode": None,
"flightFare": {
"fareType": [],
"classOfService": []
},
"cultureCode": "en-SG",
"organizationCode": None
}
data = json.dumps(data, separators=(',', ':'))
response = requests.post(url, headers=headers, cookies=cookies, data=data)
print(response.text)
print(response)
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -162,7 +162,7 @@ exports.install = (globalObject, globalNames) => {
}
get appCodeName() {
return window.ENV.navigatorParams.appCodeName
return window.ENV.navigatorparams.appcodename
const esValue = this !== null && this !== undefined ? this : globalObject;
......@@ -174,7 +174,7 @@ exports.install = (globalObject, globalNames) => {
}
get appName() {
return window.ENV.navigatorParams.appName
return window.ENV.navigatorparams.appname
const esValue = this !== null && this !== undefined ? this : globalObject;
......@@ -186,7 +186,7 @@ exports.install = (globalObject, globalNames) => {
}
get appVersion() {
return window.ENV.navigatorParams.appVersion
return window.ENV.navigatorparams.appversion
const esValue = this !== null && this !== undefined ? this : globalObject;
......@@ -198,7 +198,7 @@ exports.install = (globalObject, globalNames) => {
}
get platform() {
return window.ENV.navigatorParams.platform
return window.ENV.navigatorparams.platform
const esValue = this !== null && this !== undefined ? this : globalObject;
if (!exports.is(esValue)) {
......@@ -209,7 +209,7 @@ exports.install = (globalObject, globalNames) => {
}
get product() {
return window.ENV.navigatorParams.product
return window.ENV.navigatorparams.product
const esValue = this !== null && this !== undefined ? this : globalObject;
......@@ -221,7 +221,7 @@ exports.install = (globalObject, globalNames) => {
}
get productSub() {
return window.ENV.navigatorParams.productSub
return window.ENV.navigatorparams.productsub
const esValue = this !== null && this !== undefined ? this : globalObject;
......@@ -372,8 +372,8 @@ exports.install = (globalObject, globalNames) => {
}
get userAgent() {
return 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36';
return window.ENV.navigatorParams.userAgent
// return 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36';
return window.ENV.navigatorparams.useragent
// return window.browser.ua;
const esValue = this !== null && this !== undefined ? this : globalObject;
......@@ -386,7 +386,7 @@ exports.install = (globalObject, globalNames) => {
}
get vendor() {
return window.ENV.navigatorParams.vendor
return window.ENV.navigatorparams.vendor
const esValue = this !== null && this !== undefined ? this : globalObject;
......@@ -398,7 +398,7 @@ exports.install = (globalObject, globalNames) => {
}
get vendorSub() {
return window.ENV.navigatorParams.vendorSub
return window.ENV.navigatorparams.vendorsub
const esValue = this !== null && this !== undefined ? this : globalObject;
......@@ -410,7 +410,7 @@ exports.install = (globalObject, globalNames) => {
}
get language() {
return window.ENV.navigatorParams.language ||
return window.ENV.navigatorparams.language ||
"en-US"
const esValue = this !== null && this !== undefined ? this : globalObject;
......@@ -423,7 +423,7 @@ exports.install = (globalObject, globalNames) => {
}
get languages() {
return window.ENV.navigatorParams.languages || [
return window.ENV.navigatorparams.languages || [
"en-US",
"en",
"zh-CN",
......@@ -439,7 +439,7 @@ exports.install = (globalObject, globalNames) => {
}
get onLine() {
// return window.ENV.navigatorParams.onLine
// return window.ENV.navigatorparams.onLine
const esValue = this !== null && this !== undefined ? this : globalObject;
......@@ -463,7 +463,7 @@ exports.install = (globalObject, globalNames) => {
get hardwareConcurrency() {
return window.ENV.navigatorParams.hardwareConcurrency
return window.ENV.navigatorparams.hardwareconcurrency
const esValue = this !== null && this !== undefined ? this : globalObject;
......
......@@ -102,9 +102,9 @@ exports.install = (globalObject, globalNames) => {
}
get availWidth() {
console.log('availWidth', window.ENV.screenParams.availWidth)
console.log('availWidth', window.ENV.screenparams.availwidth)
// return 1920;
return window.ENV.screenParams.availWidth;
return window.ENV.screenparams.availwidth;
const esValue = this !== null && this !== undefined ? this : globalObject;
......@@ -116,9 +116,9 @@ exports.install = (globalObject, globalNames) => {
}
get availHeight() {
console.log('availHeight', window.ENV.screenParams.availHeight)
console.log('availHeight', window.ENV.screenparams.availheight)
// return 1080;
return window.ENV.screenParams.availHeight;
return window.ENV.screenparams.availheight;
const esValue = this !== null && this !== undefined ? this : globalObject;
......@@ -130,9 +130,9 @@ exports.install = (globalObject, globalNames) => {
}
get width() {
console.log('width', window.ENV.screenParams.width)
console.log('width', window.ENV.screenparams.width)
return window.ENV.screenParams.width;
return window.ENV.screenparams.width;
const esValue = this !== null && this !== undefined ? this : globalObject;
......@@ -144,9 +144,9 @@ exports.install = (globalObject, globalNames) => {
}
get height() {
console.log('height', window.ENV.screenParams.height)
console.log('height', window.ENV.screenparams.height)
return window.ENV.screenParams.height;
return window.ENV.screenparams.height;
const esValue = this !== null && this !== undefined ? this : globalObject;
......@@ -158,7 +158,7 @@ exports.install = (globalObject, globalNames) => {
}
get colorDepth() {
return window.ENV.screenParams.colorDepth;
return window.ENV.screenparams.colordepth;
const esValue = this !== null && this !== undefined ? this : globalObject;
......@@ -170,7 +170,7 @@ exports.install = (globalObject, globalNames) => {
}
get pixelDepth() {
return window.ENV.screenParams.pixelDepth;
return window.ENV.screenparams.pixeldepth;
const esValue = this !== null && this !== undefined ? this : globalObject;
if (!exports.is(esValue)) {
......@@ -181,55 +181,55 @@ exports.install = (globalObject, globalNames) => {
}
get availTop() {
return window.ENV.screenParams.availTop
return window.ENV.screenparams.availtop
}
get availLeft() {
return window.ENV.screenParams.availLeft
return window.ENV.screenparams.availleft
}
get innerHeight() {
return window.ENV.screenParams.innerHeight
return window.ENV.screenparams.innerheight
}
get outerHeight() {
return window.ENV.screenParams.outerHeight
return window.ENV.screenparams.outerheight
}
get outerWidth() {
return window.ENV.screenParams.outerWidth
return window.ENV.screenparams.outerwidth
}
get innerWidth() {
return window.ENV.screenParams.innerWidth
return window.ENV.screenparams.innerwidth
}
get screenX() {
return window.ENV.screenParams.screenX
return window.ENV.screenparams.screenx
}
get pageXOffset() {
return window.ENV.screenParams.pageXOffset
return window.ENV.screenparams.pagexoffset
}
get pageYOffset() {
return window.ENV.screenParams.pageYOffset
return window.ENV.screenparams.pageyoffset
}
get devicePixelRatio() {
return window.ENV.screenParams.devicePixelRatio
return window.ENV.screenparams.devicepixelratio
}
get clientWidth() {
return window.ENV.screenParams.clientWidth
return window.ENV.screenparams.clientwidth
}
get clientHeight() {
return window.ENV.screenParams.clientHeight
return window.ENV.screenparams.clientheight
}
get hasHDR() {
return window.ENV.screenParams.hasHDR
return window.ENV.screenparams.hashdr
}
}
......
......@@ -2309,16 +2309,16 @@ class TextMetrics {
this._context = context
// this._TextMetrics = context.measureText(text)
try {
metrics = window.ENV.fontsRes
metrics = window.ENV.fontsres
this._TextMetrics = metrics[this._font][this._text]
} catch (e) {
console.log('_TextMetrics', this._text, this._font)
this._TextMetrics = {
width: 180.55,
"actualBoundingBoxAscent": 714,
"actualBoundingBoxDescent": 0,
"actualBoundingBoxLeft": -64,
"actualBoundingBoxRight": 537,
"actualboundingboxascent": 714,
"actualboundingboxdescent": 0,
"actualboundingboxleft": -64,
"actualboundingboxright": 537,
}
}
}
......@@ -2334,7 +2334,7 @@ class TextMetrics {
}
get actualBoundingBoxAscent() {
let res = this._TextMetrics.actualBoundingBoxAscent;
let res = this._TextMetrics.actualboundingboxascent;
if (res.toString().indexOf('.') !== -1) {
res = res * textRandom;
} else {
......@@ -2345,7 +2345,7 @@ class TextMetrics {
}
get actualBoundingBoxDescent() {
let res = this._TextMetrics.actualBoundingBoxDescent;
let res = this._TextMetrics.actualboundingboxdescent;
if (res.toString().indexOf('.') !== -1) {
res = res * textRandom;
} else {
......@@ -2357,7 +2357,7 @@ class TextMetrics {
}
get actualBoundingBoxLeft() {
let res = this._TextMetrics.actualBoundingBoxLeft;
let res = this._TextMetrics.actualboundingboxleft;
if (res.toString().indexOf('.') !== -1) {
res = res * textRandom;
} else {
......@@ -2368,7 +2368,7 @@ class TextMetrics {
}
get actualBoundingBoxRight() {
let res = this._TextMetrics.actualBoundingBoxRight;
let res = this._TextMetrics.actualboundingboxright;
if (res.toString().indexOf('.') !== -1) {
res = res * textRandom;
} else {
......@@ -2406,7 +2406,7 @@ class CanvasRenderingContext2D {
"37,17,1,1": [0, 0, 0, 255],
"62,28,1,1": [204, 131, 217, 255]
}
imageDatas = window.ENV.imgsRes['94px sans-serif']
imageDatas = window.ENV.imgsres['94px sans-serif']
constructor(w, h, context) {
console.log('OffscreenCanvasRenderingContext2D.new', w, h)
this.width = w;
......@@ -3211,7 +3211,7 @@ class HTMLCanvasElementImpl extends HTMLElementImpl {
37446: window.GRAPHIC_DRIVER,
34047: 16
}
_toggle = window.ENV.glRes;
_toggle = window.ENV.glres;
if (_toggle[key]) {
res = _toggle[key]
......
......@@ -25,7 +25,8 @@ class Reese84ByPass(object):
_session = tls_client.Session('chrome_112')
def __init__(self, target, proxy, thread_name='test'):
self._session = requests.Session()
# self._session = requests.Session()
# self._session.verify = False
self.__target = target
if proxy != '':
self._session.proxies = {
......@@ -48,7 +49,7 @@ class Reese84ByPass(object):
def _init(self):
t1 = time.time()
url = "https://beta.makeabooking.flyscoot.com/Book/Flight?culture=en-SG&type=oneway&dst1=HKG&ast1=SIN&dst2=SIN&ast2=HKG&dd=2023-10-28&rd=null&adt=1&chd=0&inf=0"
url = "https://beta.makeabooking.flyscoot.com/Book/Flight?culture=en-SG&type=oneway&dst1=HKG&ast1=SIN&dst2=SIN&ast2=HKG&dd=2023-11-10&rd=null&adt=1&chd=0&inf=0"
response = self._session.get(url, headers={
"Host": "www.flyscoot.com",
"pragma": "no-cache",
......@@ -56,7 +57,7 @@ class Reese84ByPass(object):
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"macOS\"",
"upgrade-insecure-requests": "1",
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36",
"user-agent": 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36',
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
"sec-fetch-site": "none",
"sec-fetch-mode": "navigate",
......@@ -96,7 +97,7 @@ class Reese84ByPass(object):
"accept": "application/json; charset=utf-8",
"content-type": "text/plain; charset=utf-8",
"sec-ch-ua-mobile": "?0",
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36",
"user-agent": 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36',
"sec-ch-ua-platform": "\"macOS\"",
"origin": "https://www.flyscoot.com",
"sec-fetch-site": "same-origin",
......@@ -106,7 +107,8 @@ class Reese84ByPass(object):
"accept-language": "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7,ru;q=0.6"
}, json=data)
self.log.log('REQU', f'JSURL: code:{response.status_code} cost:{(time.time() - t3):.3f}s')
self.log.info(f'{response.json().keys()}')
# self.log.info(f'{response.json().keys()}')
print(response.text)
assert response.json().get('return', False) != True, BaseException("js提交出错")
self._session.cookies.update({
......@@ -131,7 +133,7 @@ class Reese84ByPass(object):
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-site",
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36",
"user-agent": 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36',
}
url = "https://ibe.api.flyscoot.com/v1/account/anonymous"
response = self._session.get(url, headers=headers)
......@@ -150,7 +152,7 @@ class Reese84ByPass(object):
"cookies": f"Bearer {self._token}",
"Content-Type": "application/json",
"sec-ch-ua-mobile": "?0",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36",
"User-Agent": 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36',
"sec-ch-ua-platform": "\"macOS\"",
"Origin": "https://www.flyscoot.com",
"Sec-Fetch-Site": "same-site",
......@@ -180,7 +182,7 @@ class Reese84ByPass(object):
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-site",
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36",
"user-agent": 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36',
"x-scoot-appsource": "IBE-WEB",
"x-scoot-client-environment": "PROD",
"x-scoot-client-session": "4ddf4d27-d6a1-4b50-b533-04558f7ab4b8",
......@@ -206,7 +208,7 @@ class Reese84ByPass(object):
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-site",
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36",
"user-agent": 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36',
"x-scoot-appsource": "IBE-WEB",
"x-scoot-client-environment": "PROD",
"x-scoot-client-session": "4ddf4d27-d6a1-4b50-b533-04558f7ab4b8",
......@@ -242,5 +244,5 @@ class Reese84ByPass(object):
if __name__ == '__main__':
# r = Reese84ByPass('https://www.flyscoot.com/', 'http://user-uni002-region-de:q39CEBTs5A5YQXor@pr.roxlabs.cn:4600')
r = Reese84ByPass('https://www.flyscoot.com/', 'http://127.0.0.1:7890')
r = Reese84ByPass('https://www.flyscoot.com/', 'http://127.0.0.1:8890')
print(r.start())
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment