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 source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
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