Commit 0b6ca83c authored by wangmingming's avatar wangmingming

Merge remote-tracking branch 'origin/f9' into f9

# Conflicts:
#	ast/decode2.js
#	ast/decodeResult.js
#	ast/decodeResult22.js
#	ast/main.js
#	ast/main_ok.js
#	ast/px3_V1.8.7_OK.js
#	ast/yuchuli.js
#	captcha.py
#	index.html
#	js/encodepayload.js
#	main.py
#	pc.js
#	step2.js
#	test.py
#	test_url.py
parents aaf44abc c8cfb704
......@@ -272,7 +272,7 @@ function i(n) {
u = o[n];
} else {
for (var c = a(n), u = "", f = 0; f < c["length"]; ++f) {
var s = "bhDTSyS"["charCodeAt"](f % 7);
var s = "UX7j1xE"["charCodeAt"](f % 7);
u += String["fromCharCode"](s ^ c["charCodeAt"](f));
}
o[n] = u;
......
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.
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.
......@@ -3549,7 +3549,6 @@ try {
}) : r[u] = v, r;
}
function pf(r) {
// debugger;
var u = r.index,
v = r.puzzleHelperVars,
n = r.targetHash,
......@@ -3570,15 +3569,7 @@ try {
index: z,
puzzleHelperVars: v,
targetHash: n
}))
if (t){
debugger;
console.log(JSON.stringify({
index: z,
puzzleHelperVars: v,
targetHash: n
}), t),'hash==', postMessage(t)
};
})) && postMessage(t);
}
postMessage(false);
}
......@@ -3635,7 +3626,6 @@ try {
}(r, "application/javascript"),
w = new Worker(e);
return w["onmessage"] = function (r) {
console.log('onmessage', r)
return u(r);
}, w["onerror"] = function (r) {
var u = v;
......@@ -3822,14 +3812,10 @@ try {
}
return f < r && (z[z["length"] - 1]["end"] = r), z;
})(D, se = 1 === c ? 1 : c / 2)["forEach"](function (u) {
var t = ue(
function (r, u) {
var t = ue(function (r, u) {
var n = v;
return u = u || [], "(" + r["toString"]() + ").apply(null, " + JSON["stringify"](u) + ")";
}(Sf, [u["start"], u["end"], i, r])
["replace"](pf["name"], pf["toString"]())["replace"](kf["name"], function (r) {
}(Sf, [u["start"], u["end"], i, r])["replace"](pf["name"], pf["toString"]())["replace"](kf["name"], function (r) {
var u = "0123456789abcdef".split(""),
v = [-2147483648, 8388608, 32768, 128],
n = [24, 16, 8, 0],
......
const fs = require('fs');
const fs = require('fs');
const types = require("@babel/types");
const parser = require("@babel/parser");
const template = require("@babel/template").default;
......@@ -8,6 +8,7 @@ const generator = require("@babel/generator").default;
//js混淆代码读取
process.argv.length > 2 ? encodeFile = process.argv[2] : encodeFile = "./main.js"; //默认的js文件
process.argv.length > 2 ? encodeFile = process.argv[2] : encodeFile = "./decodeResult22.js"; //默认的js文件
process.argv.length > 3 ? decodeFile = process.argv[3] : decodeFile = encodeFile.replace(".js", "") + "_ok.js";
//将源代码解析为AST
......
......@@ -6,6 +6,7 @@ import re
import time
import execjs
import requests
import tls_client
from loguru import logger
......@@ -35,6 +36,7 @@ class PxBypass():
}
code1 = ''
code2 = ''
tag = ''
vid = ''
uuid = ''
token = ''
......@@ -49,28 +51,18 @@ class PxBypass():
# 'https': "http://user-unifflcc-region-us:q39CEBTs5A5YQXor@pr.roxlabs.cn:4600",
# }
tag = "v8.7.2"
ft = "317"
def __init__(self, target_url):
self.target_url = target_url
self.log = logger.bind(module_name='px')
def run(self):
self._init()
self.seq = 0
self.rsc = 1
self._step_1()
self.inc()
self._step_1_1()
self.inc()
self._step_2()
self.inc()
self._step_3()
self.inc()
c = self.__token()
self.log.info(f'c: {c}')
# if c == 403:
# self._step_1()
# self._step_2()
......@@ -79,24 +71,35 @@ class PxBypass():
self.log.info(self.session.cookies.get_dict())
def _init(self):
res = self.session.get(
'https://booking.flyfrontier.com/Flight/InternalSelect?o1=DEN&d1=LAS&dd1=2023-08-30&ADT=1&umnr=false&mon=true',
headers={
"authority": "www.flyfrontier.com",
"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",
cks = requests.post('http://127.0.0.1:59001/akamai/gen', json={"type": "NK", "proxy": "http://127.0.0.1:7890"})
print(cks.json())
cks = cks.json()['cookies']
self.session.cookies.update(cks)
url = "https://www.spirit.com/api/prod-token/api/v1/token"
data = {
"applicationName": "dotRezWeb"
}
data = json.dumps(data, separators=(',', ':'))
res = self.session.post(url, headers={
"authority": "www.spirit.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",
"cache-control": "no-cache",
"content-type": "application/json",
"ocp-apim-subscription-key": "dc6844776fe84b1c8b68affe7deb7916",
"origin": "https://www.spirit.com",
"pragma": "no-cache",
"sec-ch-ua": "\"Not/A)Brand\";v=\"99\", \"Google Chrome\";v=\"115\", \"Chromium\";v=\"115\"",
"referer": "https://www.spirit.com/",
"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": "document",
"sec-fetch-mode": "navigate",
"sec-fetch-site": "none",
"sec-fetch-user": "?1",
"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"
}, allow_redirects=True)
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin",
"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-dtpc": "2$217478397_28h17vUSRHUHMPCLARSKPAAKSGJSNTPCPCCFBR-0e0"
}, data=data)
self.log.info(f"初始化请求 res {res.status_code}")
self.params = {}
for k, v in self.session.cookies.items():
......@@ -169,37 +172,35 @@ class PxBypass():
def process_ob(self, resp):
m = {}
if 'ob' in resp:
cookies = self.encrypt(base64.b64decode(resp['ob'].encode()), self._decode_resp()).decode()
cks = cookies.split('~~~~')
self.log.info(json.dumps(cks, indent=True))
for i in cks:
cookies = self.encrypt(base64.b64decode(resp['ob'].encode()), 866 % 128).decode()
print(cookies.split('~~~~'))
for i in cookies.split('~~~~'):
tmp = i.split('|')
m[tmp[0]] = tmp[1]
key = tmp[0]
data = tmp[1:]
if key == '11oo1o':
if key == 'I00II0':
t = data[3].split('_')
self.token = t[0]
self.ci = t[1]
self.ci = ''.join([chr(ord(i) ^ 10) for i in self.ci])
if key == 'o111ooo1':
if key == '0III0III':
self.sts = data[0]
if key == 'o1oo11':
if key == 'I0I0I0':
self.hash = data[1]
self.hash2 = data[2]
self.hashv = data[3]
if key == 'o11o11':
if key == 'I0I0II':
self.sid = data[0]
if key == 'o1oo1o':
if key == 'I000I0':
self.vid = data[0]
if key == 'o111oooo':
self.num1 = data[0]
if key == '111o1o':
self.num2 = data[0]
if key == 'o11o11oo':
if key == 'I00III':
self.code2 = data[0]
if key == 'IIII00':
self.tag = data[0]
if key == '0III00I0':
self.cts = data[0]
if key == '1oooo1':
self.str1 = data[0]
if key == '0III0II0':
self.code1 = data[0]
if 'pxde' in i:
self.session.cookies.update({
'_pxde': tmp[3]
......@@ -234,15 +235,13 @@ class PxBypass():
t1 = int(time.time() * 1000)
self.init_time = t1
t2 = t1 + random.randint(3, 12)
self.startTs = t1
self.startTs2 = t2
if self.uuid == '':
self.uuid = self.__uuid()
data = [
{
"t": "PX12095",
"d": {
"PX11645": "https://www.flyfrontier.com/",
"PX11645": "https://www.spirit.com/",
"PX12207": 0,
"PX12458": "MacIntel",
"PX11902": 0,
......@@ -266,81 +265,17 @@ class PxBypass():
payload = ctx.call('encodePayload', data_str, self.uuid, '')
self.log.info(f'payload {payload}')
pc = self.__gen_pc(data_str, f'{self.uuid}:{self.tag}:{self.ft}')
print(pc)
body = {
"payload": payload,
"appId": "PXVb73hTEg",
"tag": self.tag,
"uuid": self.uuid,
"ft": self.ft,
"seq": self.seq,
"en": "NTA",
"pc": pc,
}
if self.vid != "":
body.update({
'vid': self.vid
})
print(body)
url = "https://collector-pxvb73hteg.px-cloud.net/assets/js/bundle"
headers = {
"authority": "collector-PXVb73hTEg.px-cloud.net",
"accept": "*/*",
"accept-language": "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7",
"cache-control": "no-cache",
"content-type": "application/x-www-form-urlencoded",
"origin": "https://www.flyfrontier.com",
"pragma": "no-cache",
"referer": "https://www.flyfrontier.com/",
"sec-ch-ua": "\"Not/A)Brand\";v=\"99\", \"Google Chrome\";v=\"115\", \"Chromium\";v=\"115\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"Windows\"",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "cross-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"
}
response = self.session.post(url, headers=headers, data=body)
self.log.info(f'collector1 {response.text}')
resp = response.json()
self.process_ob(resp)
def _step_1_1(self):
t1 = int(time.time() * 1000)
self.init_time = t1
t2 = t1 + random.randint(3, 12)
self.startTs = t1
self.startTs2 = t2
if self.uuid == '':
self.uuid = self.__uuid()
data = [{
"t": "PX11940",
"d": {
"PX11379": False,
"PX12307": "PX11745",
"PX11668": "pxhc",
"PX12348": False,
"PX11645": "https://booking.flyfrontier.com/Flight/Select"
}
}]
data_str = json.dumps(data, separators=(',', ':'))
self.log.info(f'data_str {data_str}')
payload = ctx.call('encodePayload', data_str, self.uuid, '')
self.log.info(f'payload {payload}')
pc = self.__gen_pc(data_str, f'{self.uuid}:{self.tag}:{self.ft}')
tag = "v8.6.6"
ft = "316"
pc = self.__gen_pc(data_str, f'{self.uuid}:{tag}:{ft}')
print(pc)
body = {
"payload": payload,
"appId": "PXVb73hTEg",
"tag": self.tag,
"appId": "PXkp4CLSb5",
"tag": tag,
"uuid": self.uuid,
"ft": self.ft,
"seq": self.seq,
"ft": ft,
"seq": "0",
"en": "NTA",
"pc": pc,
}
......@@ -350,16 +285,16 @@ class PxBypass():
})
print(body)
url = "https://collector-pxvb73hteg.px-cloud.net/assets/js/bundle"
url = "https://collector-PXkp4CLSb5.px-cloud.net/assets/js/bundle"
headers = {
"authority": "collector-PXVb73hTEg.px-cloud.net",
"authority": "collector-PXkp4CLSb5.px-cloud.net",
"accept": "*/*",
"accept-language": "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7",
"cache-control": "no-cache",
"content-type": "application/x-www-form-urlencoded",
"origin": "https://www.flyfrontier.com",
"origin": "https://www.spirit.com",
"pragma": "no-cache",
"referer": "https://www.flyfrontier.com/",
"referer": "https://www.spirit.com/",
"sec-ch-ua": "\"Not/A)Brand\";v=\"99\", \"Google Chrome\";v=\"115\", \"Chromium\";v=\"115\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"Windows\"",
......@@ -386,77 +321,78 @@ class PxBypass():
def __gen_pc(self, data_str, param):
# self.log.info(f'genpc {data_str} {param}')
# ctx = execjs.compile(jsCode)
return ctxPC.call('genPc', data_str, param)
return ctxPC.call('genPc', param, data_str)
def __token(self):
response = self.session.get(
'https://booking.flyfrontier.com/Flight/InternalSelect?o1=DEN&d1=LAS&dd1=2023-08-30&ADT=1&umnr=false&mon=true',
headers={
"authority": "www.flyfrontier.com",
"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",
url = "https://www.spirit.com/api/prod-token/api/v1/token"
data = {
"applicationName": "dotRezWeb"
}
data = json.dumps(data, separators=(',', ':'))
res = self.session.post(url, headers={
"authority": "www.spirit.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",
"cache-control": "no-cache",
"content-type": "application/json",
"ocp-apim-subscription-key": "dc6844776fe84b1c8b68affe7deb7916",
"origin": "https://www.spirit.com",
"pragma": "no-cache",
"sec-ch-ua": "\"Not/A)Brand\";v=\"99\", \"Google Chrome\";v=\"115\", \"Chromium\";v=\"115\"",
"referer": "https://www.spirit.com/",
"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": "document",
"sec-fetch-mode": "navigate",
"sec-fetch-site": "none",
"sec-fetch-user": "?1",
"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"
}, allow_redirects=True)
print(response.status_code)
with open('index.html', 'w') as f:
f.write(response.text)
vids = re.findall("_pxVid = '(.+?)'", response.text)
if len(vids) != 0:
self.vid = vids[0]
self.log.info(f'获取到vid {self.vid}')
uuids = re.findall("_pxUuid = '(.+?)'", response.text)
if len(uuids) != 0:
self.uuid = uuids[0]
self.log.info(f'获取到uuid {self.uuid}')
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin",
"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-dtpc": "2$217478397_28h17vUSRHUHMPCLARSKPAAKSGJSNTPCPCCFBR-0e0"
}, data=data)
return response.status_code
self.log.info(f"c res {res.status_code}")
self.log.info(f"c text {res.text}")
return res.status_code
def _step_2(self):
self.log.info(self.m)
# genPayload2(vid, sid, uuid, sts, code1, code2, tag)
self.log.info(f'{[ self.vid, self.sid, self.uuid, self.sts, self.num1, self.num2,self.str1, self.startTs, self.startTs2]}')
data_str = ctxStep2.call('genPayload2', self.vid, self.sid, self.uuid, self.sts, self.num1, self.num2,
self.str1, self.startTs, self.startTs2)
data_str = ctxStep2.call('genPayload2', self.vid, self.sid, self.uuid, self.sts, self.code1, self.code2,
self.tag)
self.log.info(f'data_str2 {data_str}')
payload = ctx.call('encodePayload', data_str, self.uuid, self.sts)
self.log.info(f'payload {payload}')
pc = self.__gen_pc(data_str, f'{self.uuid}:{self.tag}:{self.ft}')
tag = "v8.6.6"
ft = "316"
pc = self.__gen_pc(data_str, f'{self.uuid}:{tag}:{ft}')
body = {
"payload": payload,
"appId": "PXVb73hTEg",
"tag": self.tag,
"appId": "PXkp4CLSb5",
"tag": tag,
"uuid": self.uuid,
"ft": self.ft,
"seq": self.seq,
"ft": ft,
"seq": "1",
"en": "NTA",
"cs": self.cs,
"pc": pc,
"rsc": self.rsc
"sid": self.sid,
"vid": self.vid,
"cts": self.cts,
"rsc": "1"
}
body = self.update_sid_vid(body)
url = "https://collector-pxvb73hteg.px-cloud.net/assets/js/bundle"
url = "https://collector-PXkp4CLSb5.px-cloud.net/assets/js/bundle"
headers = {
"authority": "collector-PXVb73hTEg.px-cloud.net",
"authority": "collector-PXkp4CLSb5.px-cloud.net",
"accept": "*/*",
"accept-language": "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7",
"cache-control": "no-cache",
"content-type": "application/x-www-form-urlencoded",
"origin": "https://www.flyfrontier.com",
"origin": "https://www.spirit.com",
"pragma": "no-cache",
"referer": "https://www.flyfrontier.com/",
"referer": "https://www.spirit.com/",
"sec-ch-ua": "\"Not/A)Brand\";v=\"99\", \"Google Chrome\";v=\"115\", \"Chromium\";v=\"115\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"Windows\"",
......@@ -468,10 +404,41 @@ class PxBypass():
response = self.session.post(url, headers=headers, data=body)
self.log.info(f'collector2 {response.text}')
resp = response.json()
self.process_ob(resp)
m = {}
if 'ob' in resp:
cookies = self.encrypt(base64.b64decode(resp['ob'].encode()), 866 % 128).decode()
print(cookies.split('~~~~'))
for i in cookies.split('~~~~'):
tmp = i.split('|')
m[tmp[0]] = tmp[1]
if 'pxde' in i:
self.session.cookies.update({
'_pxde': tmp[3]
})
elif '_px2' in i:
self.session.cookies.update({
'_px2': tmp[3]
})
elif '31536000' in i:
self.session.cookies.update({
'_pxvid': tmp[1]
})
else:
for i in resp['do']:
tmp = i.split('|')
# print(len(tmp), tmp)
if len(tmp) == 6 and tmp[1] in ['_px', '_px3', '_pxde']:
self.session.cookies.update({
tmp[1]: tmp[3]
})
elif len(tmp) in [3, 4] and tmp[1] in ['cts', 'vid']:
self.session.cookies.update({
tmp[0]: tmp[1]
})
self.log.info(f'cookies2 {self.session.cookies.keys()}')
# self.m = m
# self.log.info(self.m)
self.m = m
self.log.info(self.m)
def _step_3(self):
# self.log.info(self.m)
......@@ -482,20 +449,19 @@ class PxBypass():
self.ci, self.init_time)
self.log.info(f'data_str2 {data_str}')
data_str = json.dumps(data_str, separators=(',', ':'))
self.log.info(f'captchaBody {data_str}')
data_str = json.dumps(data_str)
payload = ctx.call('encodePayload', data_str, self.uuid, self.sts)
self.log.info(f'payload {payload}')
pc = self.__gen_pc(data_str, f'{self.uuid}:{self.tag}:{self.ft}')
tag = "v8.6.6"
ft = "316"
pc = self.__gen_pc(data_str, f'{self.uuid}:{tag}:{ft}')
body = {
"payload": payload,
"appId": "PXVb73hTEg",
"tag": self.tag,
"appId": "PXkp4CLSb5",
"tag": tag,
"uuid": self.uuid,
"ft": self.ft,
"seq": self.seq,
"ft": ft,
"seq": "4",
"en": "NTA",
"cs": self.cs,
"pc": pc,
......@@ -505,16 +471,16 @@ class PxBypass():
"cts": self.cts,
"rsc": "3"
}
url = "https://collector-pxvb73hteg.px-cloud.net/assets/js/bundle"
url = "https://collector-PXkp4CLSb5.px-cloud.net/assets/js/bundle"
headers = {
"authority": "collector-PXVb73hTEg.px-cloud.net",
"authority": "collector-PXkp4CLSb5.px-cloud.net",
"accept": "*/*",
"accept-language": "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7",
"cache-control": "no-cache",
"content-type": "application/x-www-form-urlencoded",
"origin": "https://www.flyfrontier.com",
"origin": "https://www.spirit.com",
"pragma": "no-cache",
"referer": "https://www.flyfrontier.com/",
"referer": "https://www.spirit.com/",
"sec-ch-ua": "\"Not/A)Brand\";v=\"99\", \"Google Chrome\";v=\"115\", \"Chromium\";v=\"115\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"Windows\"",
......@@ -526,36 +492,45 @@ class PxBypass():
response = self.session.post(url, headers=headers, data=body)
self.log.info(f'collector3 {response.text}')
resp = response.json()
self.process_ob(resp)
self.log.info(f'cookies2 {self.session.cookies.keys()}')
def _decode_resp(self):
a = int(self.tag.replace('v', '').replace('.', ''))
return a % 128
def update_sid_vid(self, data: dict):
if self.vid != "":
data.update({
'vid': self.vid
m = {}
if 'ob' in resp:
cookies = self.encrypt(base64.b64decode(resp['ob'].encode()), 866 % 128).decode()
print(cookies.split('~~~~'))
for i in cookies.split('~~~~'):
tmp = i.split('|')
m[tmp[0]] = tmp[1]
if 'pxde' in i:
self.session.cookies.update({
'_pxde': tmp[3]
})
if self.cts != "":
data.update({
'cts': self.cts
elif '_px2' in i:
self.session.cookies.update({
'_px2': tmp[3]
})
if self.sid != "":
data.update({
'sid': self.sid
elif '31536000' in i:
self.session.cookies.update({
'_pxvid': tmp[1]
})
return data
def inc(self):
self.seq += 1
self.rsc += 1
self.log.info(f'seq: {self.seq} rsc:{self.rsc}')
else:
for i in resp['do']:
tmp = i.split('|')
# print(len(tmp), tmp)
if len(tmp) == 6 and tmp[1] in ['_px', '_px3', '_pxde']:
self.session.cookies.update({
tmp[1]: tmp[3]
})
elif len(tmp) in [3, 4] and tmp[1] in ['cts', 'vid']:
self.session.cookies.update({
tmp[0]: tmp[1]
})
self.log.info(f'cookies2 {self.session.cookies.keys()}')
self.m = m
self.log.info(self.m)
if __name__ == '__main__':
url = "https://booking.flyfrontier.com/Flight/InternalSelect?o1=DEN&d1=LAS&dd1=2023-08-30&ADT=1&umnr=false&mon=true"
url = "https://booking.spirit.com/Flight/InternalSelect?o1=DEN&d1=LAS&dd1=2023-08-30&ADT=1&umnr=false&mon=true"
px = PxBypass(url)
px.run()
print(unsinged_right_shift(275404960, 24) & 255)
r = '''[{
"t": "PX11590",
"d": {
"PX11431": 1692951652694,
"PX12069": ["PDF Viewer", "Chrome PDF Viewer", "Chromium PDF Viewer", "Microsoft Edge PDF Viewer", "WebKit built-in PDF"],
"PX12286": 5,
"PX11576": true,
"PX12318": true,
"PX11384": true,
"PX11886": true,
"PX11583": "en-US",
"PX12458": "MacIntel",
"PX11681": ["en-US", "en", "zh-CN", "ru"],
"PX11754": "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",
"PX12037": true,
"PX11390": -480,
"PX11621": 8,
"PX11657": 4,
"PX12081": "Gecko",
"PX11908": "20030107",
"PX12314": "5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36",
"PX11829": true,
"PX11464": true,
"PX12054": 2,
"PX11821": "Netscape",
"PX11479": "Mozilla",
"PX11674": true,
"PX12241": 650,
"PX11372": false,
"PX11683": 1.4,
"PX11561": "3g",
"PX11877": true,
"PX12100": true,
"PX12506": "arm",
"PX12507": "64",
"PX12508": [{
"brand": "Not/A)Brand",
"version": "99"
}, {
"brand": "Google Chrome",
"version": "115"
}, {
"brand": "Chromium",
"version": "115"
}],
"PX12509": false,
"PX12510": "",
"PX12511": "macOS",
"PX12512": "13.5.0",
"PX12513": "115.0.5790.170",
"PX12548": true,
"PX12549": true,
"PX12278": true,
"PX11694": false,
"PX12294": false,
"PX12514": true,
"PX12515": "TypeError: Cannot read properties of undefined (reading 'width')",
"PX12516": "webkit",
"PX12517": 33,
"PX12518": false,
"PX12545": false,
"PX12593": false,
"PX12595": "AudioData.SVGAnimatedAngle.SVGMetadataElement",
"PX11804": "71f526db5d6f3ab719473db7791e4821",
"PX12118": "cjk68p4ck8puaoo8tgc0",
"PX11746": "4cd10383c35e63adbb6c4982d8fc63ff",
"PX11371": "4fb78e5750f59dd35423b2da8ae2f77b",
"PX12501": "e5e8bc8df2602d2d3877dd2f83c1c044",
"PX11303": false,
"PX11515": false,
"PX12133": false,
"PX12340": false,
"PX11738": false,
"PX11723": false,
"PX11389": false,
"PX11839": false,
"PX11460": false,
"PX12102": false,
"PX11378": false,
"PX12317": false,
"PX12588": "webkit",
"PX12551": "https:",
"PX12553": "Asia/Shanghai",
"PX12567": "w3c",
"PX12576": "screen",
"PX12555": {
"plugext": {
"0": {
"f": "internal-pdf-viewer",
"n": "PDF Viewer"
},
"1": {
"f": "internal-pdf-viewer",
"n": "Chrome PDF Viewer"
},
"2": {
"f": "internal-pdf-viewer",
"n": "Chromium PDF Viewer"
},
"3": {
"f": "internal-pdf-viewer",
"n": "Microsoft Edge PDF Viewer"
},
"4": {
"f": "internal-pdf-viewer",
"n": "WebKit built-in PDF"
}
},
"plugins_len": 5
},
"PX12583": {
"smd": {
"ok": true,
"ex": false
}
},
"PX12578": {},
"PX12594": false,
"PX12566": false,
"PX12571": "46ef8eb2",
"PX12579": {
"support": true,
"status": {
"effectiveType": "3g",
"rtt": 650,
"downlink": 1.4,
"saveData": false
}
},
"PX12581": "default",
"PX12582": 3,
"PX12587": false,
"PX11843": 1920,
"PX11781": 1080,
"PX12121": 1920,
"PX12128": 1055,
"PX12387": "1920X1080",
"PX12003": 24,
"PX11380": 24,
"PX11494": 658,
"PX12411": 853,
"PX12443": 0,
"PX12447": 0,
"PX11533": true,
"PX12079": false,
"PX11701": "17530309285577018446",
"7135656?4>331167>220": "4206565<7=002254=113",
"PX12454": 2858,
"PX11508": "49e5084e",
"PX11452": "7c5f9724",
"PX12218": "65d826e0",
"PX12481": "a9269e00",
"PX11780": "50a5ec55",
"PX11539": "3257c57a",
"PX11528": "",
"PX12271": "10207b2f",
"PX11849": "10207b2f",
"PX12464": "90e65465",
"PX11356": true,
"PX12426": true,
"PX11791": true,
"PX11517": true,
"PX12520": true,
"PX12524": "4YC14YCd4YCd4YCV4YCe4YCX4YGS5J256aus7r266YaI5oCR7r27",
"PX12527": "3207084bd110f1ac964863e23aa78e04",
"PX12260": "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",
"PX12249": false,
"PX11897": "90e65465",
"PX12207": 0,
"PX11538": 2,
"PX11984": "TypeError: Cannot read properties of null (reading '0')\n at xe (https://client.px-cloud.net/PXVb73hTEg/main.min.js:909:13)\n at Ea (https://client.px-cloud.net/PXVb73hTEg/main.min.js:2195:30)\n at Ba (https://client.px-cloud.net/PXVb73hTEg/main.min.js:2174:23)\n at https://client.px-cloud.net/PXVb73hTEg/main.min.js:2398:9",
"PX11645": "https://www.flyfrontier.com/",
"PX11597": [],
"PX12023": "",
"PX11337": false,
"PX12330": "109|66|66|70|80",
"PX11705": 1128,
"PX11938": true,
"PX11602": true,
"PX12021": "false",
"PX12421": "false",
"PX12124": 1,
"PX11609": 1,
"PX12291": "",
"PX11881": ["loadTimes", "csi", "app"],
"PX11529": 70523678,
"PX11555": 4294705152,
"PX11833": 83141658,
"PX11840": "Fri Aug 25 2023 16:20:55 GMT+0800 (中国标准时间)",
"PX11526": false,
"PX11684": false,
"PX11812": false,
"PX12335": true,
"PX12080": 0,
"PX11678": false,
"PX11349": "visible",
"PX12397": false,
"PX11387": 0,
"PX12150": 1920,
"PX12304": true,
"PX11651": 970,
"PX11867": "missing",
"PX12254": true,
"PX11540": true,
"PX11548": false,
"PX11446": true,
"PX12550": 1,
"PX12431": 0,
"PX11991": 10,
"PX11837": 41,
"PX11632": 0,
"PX11409": 9,
"PX12573": "e2a83675",
"PX12597": 1,
"PX12544": true,
"PX12589": "succeeded",
"PX11524": true,
"PX12169": 2,
"PX11902": 1,
"PX11560": 14719,
"PX11332": 1692951655754,
"PX12248": 3600,
"PX11385": 1692951645931,
"PX12280": 1692951656463,
"PX11496": "4a47ad90-4320-11ee-bda7-e188a22af0a3",
"PX12564": null,
"PX12565": -1
}
}, {
"t": "PX11547",
"d": {
"PX12492": "c505c10e26a1b7a7741437db9f82916b",
"PX12570": "78f763eab3a2082c63c66cf47f9e05a0",
"PX11352": "e089aa3d700a35da7244dd4da7a68f9c",
"PX12292": "WebKit",
"PX11811": [],
"PX11567": "WebKit WebGL",
"PX12032": "WebGL 1.0 (OpenGL ES 2.0 Chromium)",
"PX11536": ["ANGLE_instanced_arrays", "EXT_blend_minmax", "EXT_color_buffer_half_float", "EXT_disjoint_timer_query", "EXT_float_blend", "EXT_frag_depth", "EXT_shader_texture_lod", "EXT_texture_compression_rgtc", "EXT_texture_filter_anisotropic", "EXT_sRGB", "KHR_parallel_shader_compile", "OES_element_index_uint", "OES_fbo_render_mipmap", "OES_standard_derivatives", "OES_texture_float", "OES_texture_float_linear", "OES_texture_half_float", "OES_texture_half_float_linear", "OES_vertex_array_object", "WEBGL_color_buffer_float", "WEBGL_compressed_texture_s3tc", "WEBGL_compressed_texture_s3tc_srgb", "WEBGL_debug_renderer_info", "WEBGL_debug_shaders", "WEBGL_depth_texture", "WEBGL_draw_buffers", "WEBGL_lose_context", "WEBGL_multi_draw"],
"PX12149": ["[1, 1]", "[1, 64]", 8, "yes", 8, 24, 8, 16, 32, 16384, 1024, 16384, 16, 16384, 31, 16, 16, 1024, "[16384, 16384]", "no_fp", 23, 127, 127, 23, 127, 127, 23, 127, 127, 23, 127, 127, 23, 127, 127, 23, 127, 127, 23, 127, 127, 23, 127, 127, 23, 127, 127, 23, 127, 127, 23, 127, 127, 23, 127, 127],
"PX12352": "Google Inc. (Apple)",
"PX11455": "ANGLE (Apple, Apple M1 Max, OpenGL 4.1)",
"PX11534": "WebGL GLSL ES 1.0 (OpenGL ES GLSL ES 1.0 Chromium)",
"PX12503": "d9153fa5509ac1e988e36776dd8d598a",
"PX12502": "32fe0262ba56767dfd83466855e47bec",
"PX11927": "a02e9e2368744e62770d4a78862f75fa",
"PX12572": "7ec700f02277463745cc71774c12c8aa",
"PX11477": "126.8696939282454",
"PX12109": "b908567e93d9ed24c036da7986349e97",
"PX12362": "b12f6f6ef824e6fa2e4e686a6b3919f1",
"PX12491": "be9996f96141c689cda7a1e4e1c28787",
"PX12130": ["$", "Sha256", "_init", "_open", "_close", "F9Storage", "F9Qubit", "F9Social", "html5", "$A", "_fbq", "_uxa", "_", "__f9publicCache", "_upliftFlag", "Native2JSBridge", "_jelly_sdks"],
"PX12351": ["jQuery351063056308674859191", "_html5shiv", "AccDC1692862342308"],
"PX11386": ["webdriver"],
"PX12525": "c18d06246c690fb8ad9b48da91f15244",
"PX12526": "dce55f9ff67647ad6cebc7ee410e4b00",
"PX11948": 1,
"PX11685": 10,
"PX11986": true,
"PX12299": true,
"PX12331": true,
"PX11316": false,
"PX11448": true,
"PX12196": "missing",
"PX12427": ["$", "_init", "_open", "_close", "$A", "_fbq", "_uxa", "_pxAppId", "_Vb73hTEghandler", "__core-js_shared__", "_", "__f9publicCache", "_upliftFlag", "_jelly_sdks"],
"PX11842": ["_html5shiv"],
"PX12439": ["PDF Viewer::Portable Document Format::application/pdf~pdf::text/pdf~pdf", "Chrome PDF Viewer::Portable Document Format::application/pdf~pdf::text/pdf~pdf", "Chromium PDF Viewer::Portable Document Format::application/pdf~pdf::text/pdf~pdf", "Microsoft Edge PDF Viewer::Portable Document Format::application/pdf~pdf::text/pdf~pdf", "WebKit built-in PDF::Portable Document Format::application/pdf~pdf::text/pdf~pdf"],
"PX11993": "1692862344762",
"PX12228": "TypeError: Cannot read properties of null (reading '0') at Re (https://client.px-cloud.net/PXVb73hTEg/main.min.js:2:22648) at func (https://client.px-cloud.net/PXVb73hTEg/main.min.js:2:145142) at Qe (https://client.px-cloud.net/PXVb73hTEg/main.min.js:2:23444) at https://client.px-cloud.net/PXVb73hTEg/main.min.js:2:147972",
"PX12288": true,
"PX12446": 33,
"PX12236": "fd7149bbfb316699ef918fa7bb7510a8",
"PX11309": "d41d8cd98f00b204e9800998ecf8427e",
"PX11551": "fd7149bbfb316699ef918fa7bb7510a8",
"PX12586": 1,
"PX11843": 1920,
"PX11781": 1080,
"PX12121": 1920,
"PX12387": "1920X1080",
"PX11380": 24,
"PX12003": 24,
"PX12128": 1055,
"PX11849": "10207b2f",
"PX11583": "en-US",
"PX12458": "MacIntel",
"PX11754": "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",
"PX11681": ["en-US", "en", "zh-CN", "ru"],
"PX12037": true,
"PX11621": 8,
"PX11390": -480,
"PX11678": false,
"PX11840": "Thu Aug 24 2023 15:32:24 GMT+0800 (中国标准时间)",
"PX11540": true,
"PX11539": "3257c57a",
"PX11555": 4294705152,
"PX11452": "7c5f9724",
"PX12527": "3207084bd110f1ac964863e23aa78e04",
"PX12501": "e5e8bc8df2602d2d3877dd2f83c1c044",
"PX11902": 2,
"PX11560": 14744,
"PX12280": 1692951656463,
"PX11496": "4a47ad90-4320-11ee-bda7-e188a22af0a3",
"PX12564": null,
"PX12565": -1
}
}]'''
from urllib.parse import unquote
s = '_gcl_au=1.1.445187308.1700209039; wisepops_visits=%5B%222023-11-17T08%3A17%3A18.798Z%22%5D; _ga=GA1.1.2063388161.1700209039; _tt_enable_cookie=1; _ttp=Pv9QENT__FyGS1Ts7DbdEC-RIAu; _pin_unauth=dWlkPU9EQmpNek5rWlRBdFlXTmhPQzAwWkdVM0xXSmpaRE10WlRBd05ESTROekF3TkdNMA; _uetsid=ba9eda60852111eeae68f52712123c92; _uetvid=ba9f0390852111ee8c6e3519130b1606; _up=1.2.1244431337.1700209041; ORA_FPC=id=4e8b3edd-7726-4e12-99ad-47fe08c689b3; WTPERSIST=; wisepops=%7B%22csd%22%3A1%2C%22popups%22%3A%7B%22429858%22%3A%7B%22dc%22%3A1%2C%22d%22%3A1700209042210%7D%7D%2C%22sub%22%3A0%2C%22ucrn%22%3A12%2C%22cid%22%3A%2278471%22%2C%22v%22%3A4%2C%22bandit%22%3A%7B%22recos%22%3A%7B%7D%7D%7D; wisepops_session=%7B%22arrivalOnSite%22%3A%222023-11-17T08%3A17%3A18.798Z%22%2C%22mtime%22%3A1700209042211%2C%22pageviews%22%3A1%2C%22popups%22%3A%7B%22429858%22%3A0%7D%2C%22bars%22%3A%7B%7D%2C%22sticky%22%3A%7B%7D%2C%22countdowns%22%3A%7B%7D%2C%22src%22%3Anull%2C%22utm%22%3A%7B%7D%2C%22testIp%22%3Anull%7D; _pxvid=bbe72e99-8521-11ee-8fad-4f296b040204; pxcts=bbe74019-8521-11ee-8fad-a9382483b5e7; _ga_P2WLKWBNNW=GS1.1.1700209039.1.0.1700209048.51.0.0; _px2=eyJ1IjoiODRlNDUxNjAtODUxZi0xMWVlLWFkMzgtMjVlNDliMmM1MTM4IiwidiI6ImJiZTcyZTk5LTg1MjEtMTFlZS04ZmFkLTRmMjk2YjA0MDIwNCIsInQiOjYyMDIzMzg4MDAwNywiaCI6IjEzYjY0NzJkOTFiODE0ZGU2YWIyNGU4OTlmNTRmZWVkMGVhMjY4NjExMjg3NDFlMWJlYTFjN2U5OGQ0YWJiMTEifQ=='
t = ''' "PX11431": 1692944411084,
"PX12330": "109|66|66|70|80", // ["webstore", 'runtime', 'app', "csi", "loadTimes"];构造函数 长度
"PX11705": 517, //fetch+''
"PX11938": true, //caches
"PX11602": true, //caches
"PX12021": "false", // webdriver
"PX12421": "false",//webdriver
"PX12124": 1,// 'webdriver' in navigator?1:0
"PX11609": 1, //'webdriver' in navigator?1:0
"PX12291": "",
"PX11881": ["loadTimes", "csi", "app"],// chrome 属性
"PX12207": 0, //v["self"] === v["top"] ? 0 : 1
"PX11538": 4,// history.length
# "PX11984": "TypeError: Cannot read properties of null (reading '0')\n at xe (https://client.px-cloud.net/PXVb73hTEg/main.min.js:910:13)\n at Ea (https://client.px-cloud.net/PXVb73hTEg/main.min.js:2196:30)\n at Ba (https://client.px-cloud.net/PXVb73hTEg/main.min.js:2175:22)\n at https://client.px-cloud.net/PXVb73hTEg/main.min.js:2399:9",
"PX11645": "https:/www.flyfrontier.com/", // href
"PX11597": [],// location.ancestorOrigins
"PX12023": "",// document.referrer
"PX11337": false,// window.hasOwnProperty('onorientationchange')
"PX12544": true, // !(!window["WebAssembly"] || !window["WebAssembly"]["instantiate"])
"PX12589": "succeeded", // 执行 wasm 结果?
"PX11524": true, // wasm 计算结果
"PX11843": 1920, //screen["width"]
"PX11781": 1080,// screen["height"]
"PX12121": 1920,// screen["availWidth"
"PX12128": 1055,// screen["availHeight"]
"PX12387": "1920X1080",// F + "X" + N
"PX12003": 24, // screen["pixelDepth"]
"PX11380": 24, // screen["colorDepth"]
"PX11494": 658, // v["innerWidth"]
"PX12411": 853, // v["innerHeight"]
"PX12443": 0, // v["scrollX"]
"PX12447": 0, // v["scrollY"]
"PX11533": true, // !(0 === v["outerWidth"] && 0 === v["outerHeight"])
"PX12079": false,// v["hasOwnProperty"]("_cordovaNative") || v["hasOwnProperty"]("Ti") || v["hasOwnProperty"]("webView") || v["hasOwnProperty"]("Android") || p["hasOwnProperty"]("ondeviceready") || m["hasOwnProperty"]("standalone") || v["external"] && "notify" in v["external"] || m["userAgent"]["indexOf"](" Mobile/") > 0 && -1 === m["userAgent"]["indexOf"](" Safari/");
"PX12278": true,
"PX11694": false,
"PX12294": false,
"PX12514": true,
"PX12515": "TypeError: Cannot read properties of undefined (reading 'width')",
"PX12516": "webkit",
"PX12517": 33,
"PX12518": false,
"PX12545": false,
"PX12593": false,
"PX12595": "AudioData.SVGAnimatedAngle.SVGMetadataElement",
"PX12069": ["PDF Viewer", "Chrome PDF Viewer", "Chromium PDF Viewer", "Microsoft Edge PDF Viewer", "WebKit built-in PDF"],
"PX12286": 5,
"PX11576": true,
"PX12318": true,
"PX11384": true,
"PX11886": true,
"PX11583": "en-US",
"PX12458": "MacIntel",
"PX11681": ["en-US", "en", "zh-CN", "ru"],
"PX11754": "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",
"PX12037": true,
"PX11390": -480,
"PX11621": 8,
"PX11657": 4,
"PX12081": "Gecko",
"PX11908": "20030107",
"PX12314": "5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36",
"PX11829": true,
"PX11464": true,
"PX12054": 2,
"PX11821": "Netscape",
"PX11479": "Mozilla",
"PX11674": true,
"PX12241": 500,
"PX11372": false,
"PX11683": 1.5,
"PX11561": "3g",
"PX11877": true,
"PX12100": true,
"PX12506": "arm",
"PX12507": "64",
"PX12509": false,
"PX12510": "",
"PX12511": "macOS",
"PX12512": "13.5.0",// platformVersion
"PX12513": "115.0.5790.170", //Mu["uaFullVersion"]
"PX12548": true,
"PX12549": true,
"PX11539": "64556c77", //Me(console.log)
"PX11528": "", // Object["getOwnPropertyDescriptor"](HTMLDocument["prototype"], "cookie")["get"]
"PX12271": "10207b2f",// Va(Object["prototype"]["toString"])
"PX11849": "10207b2f",// return Va(m["toString"]);
"PX12464": "90e65465",// Me("" + (e["get"] || "") + (e["value"] || ""))
"PX11356": true,
"PX12426": true,
"PX11791": true,
"PX11517": true,
"PX12520": true,
"PX12524": "4YC14YCd4YCd4YCV4YCe4YCX4YGS5J256aus7r266YaI5oCR7r27", // Pu = speechSynthesis.getVoices() is(Pu[161].voiceURI)
"PX12527": "3207084bd110f1ac964863e23aa78e04", // '1970/1/1'
"PX12260": "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",
"PX12249": false,
"PX11897": "90e65465", // 固定
"PX11701": "13064822615894407713",
"75602>44073>?2261175": "46531=77340=<1152246",
"PX12454": 4441,
"PX12597": 1,
"PX11529": 102721973,// usedJSHeapSize
"PX11555": 4294705152,// jsHeapSizeLimit
"PX11833": 122502277,// totalJSHeapSize
"PX11840": "Fri Aug 25 2023 14:20:11 GMT+0800 (中国标准时间)",
"PX11526": false,
"PX11684": false,
"PX11812": false,
"PX12335": true,
"PX12080": 0,
"PX11678": false,
"PX11349": "visible",
"PX12397": false,
"PX11387": 0,
"PX12150": 1920,
"PX12304": true,
"PX11651": 970,
"PX11867": "missing",
"PX12254": true,
"PX11540": true,
"PX11548": false,
"PX11446": true,
"PX12550": 1,
"PX12431": 0,
"PX11991": 10,
"PX11837": 32,
"PX11632": 0,
"PX11409": 9,
"PX12573": "e29b74b1",
"PX11508": "49e5084e",
"PX11452": "7c5f9724",
"PX12218": "65d826e0",
"PX12481": "a9269e00",
"PX11780": "50a5ec55",
"PX12588": "webkit",
"PX12551": "https:",
"PX12553": "Asia/Shanghai",
"PX12567": "w3c",
"PX12576": "screen",
"PX12594": false,
"PX12566": false,
"PX12571": "46ef8eb2", // allowedFeatures();
"PX12581": "default",
"PX12582": 3,
"PX12587": false,
"PX11303": false,
"PX11515": false,
"PX12133": false,
"PX12340": false,
"PX11738": false,
"PX11723": false,
"PX11389": false,
"PX11839": false,
"PX11460": false,
"PX12102": false,
"PX11378": false,
"PX12317": false,
"PX11804": "36f924a304c56d1ae9971c767ca7f510", //uuid 转换
"PX12118": "cjk4g6p0l92uaoruv300",// 第一步返回 0ll0ll
"PX11746": "4cd10383c35e63adbb6c4982d8fc63ff", //_pxvid
"PX11371": "dabf24bc8ba86bef39c3a20698ae7e02", // pxsid sessionStorage
"PX12501": "e5e8bc8df2602d2d3877dd2f83c1c044", // px_hvd localStorage
"PX12169": 2,
"PX11902": 1,
"PX11560": 19398,
"PX11332": 1692944411272,
"PX12248": 3600,
"PX11385": 1692944398418,
"PX12280": 1692944411981,
"PX11496": "6a6d1c10-430f-11ee-a838-3d4272821365",
"PX12564": null,
"PX12565": -1,
"PX11379": false'''.split('\n')
s = 'pxcts=04351a9f-8522-11ee-bcad-f57dbafdfa26; _pxvid=04350d92-8522-11ee-bcac-a339932dedb7; _px2=eyJ1IjoiMjc2NDRjMzMtZWU0Yy00Y2IyLTgzNzgtNGYwZDgwNzUwZTA1IiwidiI6IjA0MzUwZDkyLTg1MjItMTFlZS1iY2FjLWEzMzk5MzJkZWRiNyIsInQiOjYyMDIzMzg4MDAwNCwiaCI6ImY1N2E5ZjZjYThlZDE3NjRjZGE4NzQ0ZDBjN2NjYTNmYmYyYTA1MGJkOWUyMWJhOTA2YmRhYTcxYWIxNGM3NDQifQ%3D%3D'
m = {}
for i in t:
i = i.lstrip()
a = i.split('//')
if len(a) == 2:
for i in s.split('; '):
t = i.index('=')
print(i[:t], unquote(i[t+1:]))
key = a[0].split('": ')[0]
# print(key, a[-1])
m[key] = a[-1]
print(m)
end = []
for i in r.split('\n'):
if '": ' in i:
a = i.split('": ')
key = a[0].lstrip()
if key in m:
# print(key)
end.append(i+'// ' + m[key])
else:
end.append(i)
pass
else:
end.append(i)
print('\n'.join(end))
'''_gcl_au 1.1.445187308.1700209039
wisepops_visits ["2023-11-17T08:17:18.798Z"]
_ga GA1.1.2063388161.1700209039
_tt_enable_cookie 1
_ttp Pv9QENT__FyGS1Ts7DbdEC-RIAu
_pin_unauth dWlkPU9EQmpNek5rWlRBdFlXTmhPQzAwWkdVM0xXSmpaRE10WlRBd05ESTROekF3TkdNMA
_uetsid ba9eda60852111eeae68f52712123c92
_uetvid ba9f0390852111ee8c6e3519130b1606
_up 1.2.1244431337.1700209041
ORA_FPC id=4e8b3edd-7726-4e12-99ad-47fe08c689b3
WTPERSIST
wisepops {"csd":1,"popups":{"429858":{"dc":1,"d":1700209042210}},"sub":0,"ucrn":12,"cid":"78471","v":4,"bandit":{"recos":{}}}
wisepops_session {"arrivalOnSite":"2023-11-17T08:17:18.798Z","mtime":1700209042211,"pageviews":1,"popups":{"429858":0},"bars":{},"sticky":{},"countdowns":{},"src":null,"utm":{},"testIp":null}
_pxvid bbe72e99-8521-11ee-8fad-4f296b040204
pxcts bbe74019-8521-11ee-8fad-a9382483b5e7
_ga_P2WLKWBNNW GS1.1.1700209039.1.0.1700209048.51.0.0
_px2 eyJ1IjoiODRlNDUxNjAtODUxZi0xMWVlLWFkMzgtMjVlNDliMmM1MTM4IiwidiI6ImJiZTcyZTk5LTg1MjEtMTFlZS04ZmFkLTRmMjk2YjA0MDIwNCIsInQiOjYyMDIzMzg4MDAwNywiaCI6IjEzYjY0NzJkOTFiODE0ZGU2YWIyNGU4OTlmNTRmZWVkMGVhMjY4NjExMjg3NDFlMWJlYTFjN2U5OGQ0YWJiMTEifQ==
'''
\ No newline at end of file
<htmllang="en"> <head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="px-captcha">
<title>Access to this page has been denied</title>
</head>
<body>
<script>
window._pxAppId='PXkp4CLSb5';
window._pxJsClientSrc='/kp4CLSb5/init.js';
window._pxFirstPartyEnabled=true;
window._pxCustomLogo='https://content.spirit.com/a/1679';
window._pxVid='';
window._pxUuid='e60a6da5-82d9-11ee-b328-fb725799391b';
window._pxHostUrl='/kp4CLSb5/xhr';
window._pxBlockScript='/kp4CLSb5/captcha/kp4CLSb5/captcha.js?a=c&u=e60a6da5-82d9-11ee-b328-fb725799391b&v=&m=0';
window._pxAltBlockScript='https://captcha.px-cloud.net/PXkp4CLSb5/captcha.js?a=c&u=e60a6da5-82d9-11ee-b328-fb725799391b&v=&m=0';
</script>
<script src="https://www.spirit.com/pxns/c.js"></script>
</body>
</html>
No preview for this file type
import base64
import ctypes
import hashlib
import hmac
import json
import random
import time
import traceback
import uuid
from urllib.parse import quote
import execjs
import requests
import tls_client
from loguru import logger
......@@ -34,6 +39,9 @@ class PxBypass():
num2: str = ''
# PX11701 111o1o
str1: str = ''
vid: str = ''
sid: str = ''
cts: str = ''
session = tls_client.Session(client_identifier='chrome_117')
# print(session.get('https://tls.peet.ws/api/all').json())
......@@ -55,17 +63,35 @@ class PxBypass():
prox = 'http://user-uni001-region-us-sessid-1111-sesstime-5-keep-true:q39CEBTs5A5YQXor@pr.roxlabs.cn:4600'
prox = 'http://unfflcc:76cc14-47b8dd-1f8ace-827836-0c740e@usa.rotating.proxyrack.net:9000'
# prox = f'http://unfflcc:76cc14-47b8dd-1f8ace-827836-0c740e@usa.rotating.proxyrack.net:{random.randint(10000, 13500)}'
# prox = 'http://127.0.0.1:7890'
prox = f'http://unfflcc:76cc14-47b8dd-1f8ace-827836-0c740e@usa.rotating.proxyrack.net:{random.randint(10000, 13500)}'
# prox = 'http://127.0.0.1:8890'
session.proxies = {
'http': prox,
'https': prox,
}
tag = "v8.7.2"
ft = "317"
appId = "PXVb73hTEg"
def __init__(self, target_url):
self.pxHeaders = {
"authority": "collector-pxvb73hteg.px-cloud.net",
"accept": "*/*",
"accept-language": "en-US,en;q=0.9",
"cache-control": "no-cache",
"content-type": "application/x-www-form-urlencoded",
"origin": "https://www.flyfrontier.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": "cross-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"
}
self.pxUrl = f"https://collector-{self.appId}.px-cloud.net/api/v2/collector"
self.target_url = target_url
self.log = logger.bind(module_name='px')
......@@ -74,40 +100,67 @@ class PxBypass():
self.rsc += 1
self.log.info(f'seq: {self.seq} rsc:{self.rsc}')
def do_collector(self, data):
if isinstance(data, list):
data_str = json.dumps(data, separators=(',', ':'))
else:
data_str = data
self.log.info(f'data_str {data_str}')
payload = ctx.call('encodePayload', data_str, self.uuid, self.ts)
self.log.info(f'payload {payload}')
pc = self._gen_pc(data_str, f'{self.uuid}:{self.tag}:{self.ft}')
body = {
"payload": payload,
"appId": self.appId,
"tag": self.tag,
"uuid": self.uuid,
"ft": self.ft,
"seq": self.seq,
"en": "NTA",
"pc": pc,
"rsc": self.rsc
}
body = self.update_sid_vid(body)
response = self.session.post(self.pxUrl, headers=self.pxHeaders, data=body)
self.log.info(f'collector1 {response.text}')
resp = response.json()
self.parse_resp(resp)
self.inc()
def run(self):
self._init()
self.seq = 0
self.rsc = 1
self._step_1()
self.inc()
self.seq += 1
self._step_11()
self.inc()
time.sleep(1.5)
# time.sleep(1.5)
self._step_2(True)
# time.sleep(2)
self._step_2(False)
time.sleep(2)
# if self.session.cookies.get_dict().get('_px2', None) == None:
self._step_3()
# self._step_2(False)
# time.sleep(2)
self.inc()
if self.session.cookies.get_dict().get('_px2', None) == None:
self._step_3()
# time.sleep(3)
self.inc()
time.sleep(2)
self.__token()
def _init(self):
res = self.session.get(
'https://booking.flyfrontier.com/Flight/InternalSelect?o1=DEN&d1=LAS&dd1=2023-08-30&ADT=1&umnr=false&mon=true',
self.target_url,
headers={
"authority": "www.flyfrontier.com",
"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",
"accept-language": "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7,ru;q=0.6",
"accept-language": "en-US,en;q=0.9",
"cache-control": "no-cache",
"pragma": "no-cache",
"sec-ch-ua": "\"Not/A)Brand\";v=\"99\", \"Google Chrome\";v=\"115\", \"Chromium\";v=\"115\"",
"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": "document",
......@@ -115,19 +168,20 @@ class PxBypass():
"sec-fetch-site": "none",
"sec-fetch-user": "?1",
"upgrade-insecure-requests": "1",
"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"
"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",
}, allow_redirects=True)
self.log.info(f"初始化请求 res {res.status_code}")
self.params = {}
for k, v in self.session.cookies.items():
self.params[k] = v
self.log.info(f"init cookie {self.params}")
with open('index.html', 'w') as f:
f.write(res.text)
# with open('index.html', 'w') as f:
# f.write(res.text)
def __uuid(self):
# return "b8a39670-7866-11ee-9655-63a4f05cd5d1"
return ctxStep2.call('genUuid')
return str(uuid.uuid4())
return "b8a39670-7866-11ee-9655-63a4f05cd5d1"
# return ctxStep2.call('genUuid')
# r = ["00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0a", "0b", "0c", "0d", "0e", "0f", "10", "11",
# "12", "13", "14", "15", "16", "17", "18", "19", "1a", "1b", "1c", "1d", "1e", "1f", "20", "21", "22", "23",
......@@ -189,116 +243,15 @@ class PxBypass():
self.startTs2 = t2
_uuid = self.__uuid()
self.uuid = _uuid
# "[{"t":"PX12095","d":{"PX11645":"https://www.flyfrontier.com/","PX12207":0,"PX12458":"MacIntel","PX11902":0,"PX11560":3781,"PX12248":3600,
# "[{"t":"PX12095","d":{"PX11645":self.target_url,"PX12207":0,"PX12458":"MacIntel","PX11902":0,"PX11560":3781,"PX12248":3600,
# "PX11385":1698649702900,"PX12280":1698649702913,"PX11496":"1ce53d20-76f3-11ee-8971-a3e00c89b2ff","PX12564":null,"PX12565":-1,"PX11379":false}}]"
data = [{"t": "PX12095",
"d": {"PX11645": "https://www.flyfrontier.com/", "PX12207": 0, "PX12458": "MacIntel", "PX11902": 0,
"d": {"PX11645": self.target_url, "PX12207": 0, "PX12458": "MacIntel", "PX11902": 0,
"PX11560": random.randint(24846, 24846 * 2), "PX12248": 3600, "PX11385": t1, "PX12280": t2,
"PX11496": _uuid, "PX12564": None, "PX12565": -1,
"PX11379": False}}]
data_str = json.dumps(data, separators=(',', ':'))
self.log.info(f'data_str {data_str}')
payload = ctx.call('encodePayload', data_str, _uuid, '')
self.log.info(f'payload {payload}')
pc = self.__gen_pc(data_str, f'{_uuid}:{self.tag}:{self.ft}')
print(pc)
body = {
"payload": payload,
"appId": "PXVb73hTEg",
"tag": self.tag,
"uuid": _uuid,
"ft": self.ft,
"seq": self.seq,
"en": "NTA",
"pc": pc,
# "pxhd": self.params['_pxhd'],
"rsc": self.rsc
}
print(body)
url = "https://collector-pxvb73hteg.px-cloud.net/b/s"
headers = {
"authority": "collector-PXVb73hTEg.px-cloud.net",
"accept": "*/*",
"accept-language": "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7",
"cache-control": "no-cache",
"content-type": "application/x-www-form-urlencoded",
"origin": "https://www.flyfrontier.com",
"pragma": "no-cache",
"referer": "https://www.flyfrontier.com/",
"sec-ch-ua": "\"Not/A)Brand\";v=\"99\", \"Google Chrome\";v=\"115\", \"Chromium\";v=\"115\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"Windows\"",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "cross-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"
}
response = self.session.post(url, headers=headers, data=body)
self.log.info(f'collector1 {response.text}')
resp = response.json()
m = {}
if 'ob' in resp:
cookies = self.encrypt(base64.b64decode(resp['ob'].encode()), self._decode_resp()).decode()
cks = cookies.split('~~~~')
self.log.info(len(cks))
self.log.info(json.dumps(cks, indent=True))
print()
for i in cks:
tmp = i.split('|')
m[tmp[0]] = tmp[1]
if tmp[0] == 'o111ooo1':
self.ts = tmp[1]
if tmp[0] == 'o111oooo':
self.num1 = int(tmp[1])
if tmp[0] == '111o1o':
self.num2 = tmp[1]
if tmp[0] == '1oooo1':
self.str1 = tmp[1]
if tmp[0] == 'o1oo1o':
self.vid = tmp[1]
self.session.cookies.update({
'_pxvid': self.vid
})
if tmp[0] == 'o11o11':
self.sid = tmp[1]
if tmp[0] == '11o111':
self.cs = tmp[1]
if tmp[0] == 'o11o11oo':
self.cts = tmp[1]
self.session.cookies.update({
'pxcts': self.cts
})
if 'pxde' in i:
self.session.cookies.update({
'_pxde': tmp[3]
})
elif '_px2' in i:
self.session.cookies.update({
'_px2': tmp[3]
})
elif '31536000' in i:
self.session.cookies.update({
'_pxvid': tmp[1]
})
else:
for i in resp['do']:
tmp = i.split('|')
print(len(tmp), tmp)
if len(tmp) == 6 and tmp[1] in ['_px', '_px3', '_pxde']:
self.session.cookies.update({
tmp[1]: tmp[3]
})
elif len(tmp) in [3, 4] and tmp[1] in ['cts', 'vid']:
self.session.cookies.update({
tmp[0]: tmp[1]
})
self.log.info(f'cookies1 {self.session.cookies.keys()}')
self.m = m
"PX11379": True
}}]
self.do_collector(data)
def encrypt(self, data, param):
n = bytearray()
......@@ -310,22 +263,47 @@ class PxBypass():
n.append(i ^ param)
return n
def __gen_pc(self, data_str, param):
# self.log.info(f'genpc {data_str} {param}')
def _gen_pc(self, t, e):
self.log.info(f'genpc t: {t}')
self.log.info(f'genpc e: {e}')
# ctx = execjs.compile(jsCode)
return ctxPC.call('genPc', data_str, param)
h = hmac.new(e.encode(), t.encode(), hashlib.md5)
t = h.hexdigest()
e = ""
b = ""
for i in t:
a = ord(i)
if a >= 48 and a <= 57:
e += i
else:
b += str(a % 10)
def __token(self):
r = e + b
a2 = ""
for i in range(0, len(r), 2):
a2 += r[i]
return a2
response = self.session.get(
'https://booking.flyfrontier.com/Flight/InternalSelect?o1=DEN&d1=LAS&dd1=2023-11-30&ADT=1&umnr=false&mon=true',
headers={
"authority": "www.flyfrontier.com",
def __token(self):
# cks = []
# for k, v in self.session.cookies.get_dict().items():
# cks.append(f'{k}={v}')
# # resp = requests.post('http://127.0.0.1:59001/akamai/gen', json={
# self.prox = f'http://user-uni001-region-us-sessid-{random.randint(1000, 5000)}-sesstime-5-keep-true:q39CEBTs5A5YQXor@pr.roxlabs.cn:4600'
# self.prox = f'http://unfflcc:76cc14-47b8dd-1f8ace-827836-0c740e@usa.rotating.proxyrack.net:{random.randint(10000, 13500)}'
cks = []
for k, v in self.session.cookies.get_dict().items():
cks.append(f'{k}={quote(v)}')
print('; '.join(cks))
url = 'https://booking.flyfrontier.com/Flight/InternalSelect?o1=DEN&d1=LAS&dd1=2023-11-30&ADT=1&umnr=false&mon=true'
response = requests.post('http://52.52.23.116/tls/forward',
json=dict(url=url, headers={
"authority": "booking.flyfrontier.com",
"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",
"accept-language": "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7,ru;q=0.6",
"accept-language": "en-US,en;q=0.9",
"cache-control": "no-cache",
"pragma": "no-cache",
"sec-ch-ua": "\"Not/A)Brand\";v=\"99\", \"Google Chrome\";v=\"115\", \"Chromium\";v=\"115\"",
"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": "document",
......@@ -333,162 +311,70 @@ class PxBypass():
"sec-fetch-site": "none",
"sec-fetch-user": "?1",
"upgrade-insecure-requests": "1",
"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"
}, allow_redirects=True
# , proxy = {
# 'http': 'http://user-uni001-region-us-sessid-1111-sesstime-5-keep-true:q39CEBTs5A5YQXor@pr.roxlabs.cn:4600',
# 'https': 'http://user-uni001-region-us-sessid-1111-sesstime-5-keep-true:q39CEBTs5A5YQXor@pr.roxlabs.cn:4600',
# }
)
print(response.status_code)
ckss = []
for k, v in self.session.cookies.get_dict().items():
ckss.append(f'{k}={quote(v)}')
cks = '; '.join(ckss)
self.log.info(f'{cks}')
with open('index.html', 'w') as f:
f.write(response.text)
"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",
"cookie": '; '.join(cks)
}, method="GET", proxy=self.prox,
debug=True
# ,allow_redirects=True
))
response = response.json()
print(response)
if response['status_code'] == 302:
print(response['text'])
print(response['status_code'])
def _step_2(self, nn):
self.log.info(self.uuid)
# sid, vid,ts, num1 ,num2,str1, uuid
data_str = ctxStep2.call('genPayload2', self.sid, self.vid, self.ts, self.num1, self.num2, self.str1, self.uuid,
data_str = ctxStep2.call('genPayload2', self.target_url, self.sid, self.vid, self.ts, self.num1, self.num2,
self.str1, self.uuid,
self.startTs, self.startTs2, nn)
self.log.info(f'data_str2 {data_str}')
self.do_collector(data_str)
payload = ctx.call('encodePayload', data_str, self.uuid, self.ts)
self.log.info(f'payload {payload}')
def _decode_resp(self):
a = int(self.tag.replace('v', '').replace('.', ''))
return a % 128
pc = self.__gen_pc(data_str, f'{self.uuid}:{self.tag}:{self.ft}')
body = {
"payload": payload,
"appId": "PXVb73hTEg",
"tag": self.tag,
"uuid": self.uuid,
"ft": self.ft,
"seq": self.seq,
"en": "NTA",
"cs": self.cs,
"pc": pc,
# "sid": self.sid,
# "vid": self.vid,
# "cts": self.cts,
"rsc": self.rsc
}
body = self.update_sid_vid(body)
url = "https://collector-pxvb73hteg.px-cloud.net/b/s"
headers = {
"authority": "collector-PXVb73hTEg.px-cloud.net",
"accept": "*/*",
"accept-language": "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7",
"cache-control": "no-cache",
"content-type": "application/x-www-form-urlencoded",
"origin": "https://www.flyfrontier.com",
"pragma": "no-cache",
"referer": "https://www.flyfrontier.com/",
"sec-ch-ua": "\"Not/A)Brand\";v=\"99\", \"Google Chrome\";v=\"115\", \"Chromium\";v=\"115\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"Windows\"",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "cross-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"
}
response = self.session.post(url, headers=headers, data=body)
self.log.info(f'collector2 {response.text}')
resp = response.json()
m = {}
if 'ob' in resp:
cookies = self.encrypt(base64.b64decode(resp['ob'].encode()), self._decode_resp()).decode()
cks = cookies.split('~~~~')
self.log.info(json.dumps(cks, indent=True))
for i in cks:
tmp = i.split('|')
m[tmp[0]] = tmp[1]
if 'pxde' in i:
self.session.cookies.update({
'_pxde': tmp[3]
})
elif '_px2' in i:
self.session.cookies.update({
'_px2': tmp[3]
def _step_11(self):
data = [{"t": "PX12167", "d": {"PX11648": True, "PX11379": True, "PX11645": self.target_url}}]
self.do_collector(data)
def update_sid_vid(self, data: dict):
if self.session.cookies.get_dict().get('_pxhd', None) != None:
data.update({
'pxhd': self.session.cookies.get_dict().get('_pxhd', None)
})
elif '31536000' in i:
self.session.cookies.update({
'_pxvid': tmp[1]
if self.vid != "":
data.update({
'vid': self.vid
})
else:
for i in resp['do']:
tmp = i.split('|')
# print(len(tmp), tmp)
if len(tmp) == 6 and tmp[1] in ['_px', '_px3', '_pxde']:
self.session.cookies.update({
tmp[1]: tmp[3]
if self.cts != "":
data.update({
'cts': self.cts
})
elif len(tmp) in [3, 4] and tmp[1] in ['cts', 'vid']:
self.session.cookies.update({
tmp[0]: tmp[1]
if self.sid != "":
data.update({
'sid': self.sid
})
self.log.info(f'cookies2 {self.session.cookies.get_dict()}')
# self.m = m
return data
def _decode_resp(self):
a = int(self.tag.replace('v', '').replace('.', ''))
return a % 128
def _step_3(self):
def _step_11(self):
data = [{"t": "PX12167", "d": {"PX11648": True, "PX11379": False, "PX11645": "https://www.flyfrontier.com/"}}]
data_str = json.dumps(data, separators=(',', ':'))
self.log.info(f'data_str {data_str}')
payload = ctx.call('encodePayload', data_str, self.uuid, self.ts)
self.log.info(f'payload {payload}')
pc = self.__gen_pc(data_str, f'{self.uuid}:{self.tag}:{self.ft}')
print(pc)
body = {
"payload": payload,
"appId": "PXVb73hTEg",
"tag": self.tag,
"uuid": self.uuid,
"ft": self.ft,
"seq": self.seq,
"en": "NTA",
"pc": pc,
# "pxhd": self.params['_pxhd'],
"rsc": self.rsc
}
body = self.update_sid_vid(body)
print(body)
url = "https://collector-pxvb73hteg.px-cloud.net/b/s"
headers = {
"authority": "collector-PXVb73hTEg.px-cloud.net",
"accept": "*/*",
"accept-language": "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7",
"cache-control": "no-cache",
"content-type": "application/x-www-form-urlencoded",
"origin": "https://www.flyfrontier.com",
"pragma": "no-cache",
"referer": "https://www.flyfrontier.com/",
"sec-ch-ua": "\"Not/A)Brand\";v=\"99\", \"Google Chrome\";v=\"115\", \"Chromium\";v=\"115\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"Windows\"",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "cross-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"
}
response = self.session.post(url, headers=headers, data=body)
self.log.info(f'collector1 {response.text}')
resp = response.json()
m = {}
# sid, vid,ts, num1 ,num2,str1, uuid
data_str = ctxStep2.call('genPayload3', self.target_url, self.sid, self.vid, self.ts, self.num1, self.num2,
self.str1, self.uuid)
self.log.info(f'data_str3 {data_str}')
self.do_collector(data_str)
def parse_resp(self, resp):
if 'ob' in resp:
cookies = self.encrypt(base64.b64decode(resp['ob'].encode()), self._decode_resp()).decode()
cks = cookies.split('~~~~')
self.log.info(json.dumps(cks, indent=True))
for i in cks:
tmp = i.split('|')
m[tmp[0]] = tmp[1]
if tmp[0] == 'o111ooo1':
self.ts = tmp[1]
if tmp[0] == 'o111oooo':
......@@ -538,113 +424,21 @@ class PxBypass():
self.session.cookies.update({
tmp[0]: tmp[1]
})
self.log.info(f'cookies1 {self.session.cookies.keys()}')
self.m = m
def update_sid_vid(self, data: dict):
if self.vid != "":
data.update({
'vid': self.vid
})
if self.cts != "":
data.update({
'cts': self.cts
})
if self.sid != "":
data.update({
'sid': self.sid
})
return data
def _step_3(self):
self.log.info(self.uuid)
# sid, vid,ts, num1 ,num2,str1, uuid
data_str = ctxStep2.call('genPayload3', self.sid, self.vid, self.ts, self.num1, self.num2, self.str1, self.uuid)
self.log.info(f'data_str3 {data_str}')
payload = ctx.call('encodePayload', data_str, self.uuid, self.ts)
self.log.info(f'payload3 {payload}')
pc = self.__gen_pc(data_str, f'{self.uuid}:{self.tag}:{self.ft}')
body = {
"payload": payload,
"appId": "PXVb73hTEg",
"tag": self.tag,
"uuid": self.uuid,
"ft": self.ft,
"seq": self.seq,
"en": "NTA",
"cs": self.cs,
"pc": pc,
# "sid": self.sid,
# "vid": self.vid,
# "cts": self.cts,
"rsc": self.rsc
}
body = self.update_sid_vid(body)
print(json.dumps(body, separators=(',', ':')))
url = "https://collector-pxvb73hteg.px-cloud.net/b/s"
headers = {
"authority": "collector-PXVb73hTEg.px-cloud.net",
"accept": "*/*",
"accept-language": "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7",
"cache-control": "no-cache",
"content-type": "application/x-www-form-urlencoded",
"origin": "https://www.flyfrontier.com",
"pragma": "no-cache",
"referer": "https://www.flyfrontier.com/",
"sec-ch-ua": "\"Not/A)Brand\";v=\"99\", \"Google Chrome\";v=\"115\", \"Chromium\";v=\"115\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"Windows\"",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "cross-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"
}
self.log.info(f'data3 {body}')
response = self.session.post(url, headers=headers, data=body)
self.log.info(f'collector3 {response.text}')
resp = response.json()
m = {}
if 'ob' in resp:
cookies = self.encrypt(base64.b64decode(resp['ob'].encode()), self._decode_resp()).decode()
cks = cookies.split('~~~~')
self.log.info(json.dumps(cks, indent=True))
for i in cks:
tmp = i.split('|')
m[tmp[0]] = tmp[1]
if 'pxde' in i:
self.session.cookies.update({
'_pxde': tmp[3]
})
elif '_px2' in i:
self.session.cookies.update({
'_px2': tmp[3]
})
elif '31536000' in i:
self.session.cookies.update({
'_pxvid': tmp[1]
})
else:
for i in resp['do']:
tmp = i.split('|')
# print(len(tmp), tmp)
if len(tmp) == 6 and tmp[1] in ['_px2', '_px3', '_pxde']:
self.session.cookies.update({
tmp[1]: tmp[3]
})
elif len(tmp) in [3, 4] and tmp[1] in ['cts', 'vid']:
self.session.cookies.update({
tmp[0]: tmp[1]
})
self.log.info(f'cookies2 {self.session.cookies.get_dict()}')
# self.m = m
if __name__ == '__main__':
url = "https://booking.flyfrontier.com/Flight/InternalSelect?o1=DEN&d1=LAS&dd1=2023-08-30&ADT=1&umnr=false&mon=true"
url = "https://booking.flyfrontier.com/Flight/InternalSelect?o1=DEN&d1=LAS&dd1=2023-11-30&ADT=1&umnr=false&mon=true"
url = "https://www.flyfrontier.com"
# while True:
try:
px = PxBypass(url)
t1 = '[{"t":"PX12095","d":{"PX11645":"https://www.flyfrontier.com/","PX12207":0,"PX12458":"MacIntel","PX11902":0,"PX11560":2839,"PX12248":3600,"PX11385":1700206931539,"PX12280":1700206931543,"PX11496":"d17e7c10-851c-11ee-8b6a-39050a20a12c","PX12564":null,"PX12565":-1,"PX11379":false}}]'
t2 = 'd17e7c10-851c-11ee-8b6a-39050a20a12c:v8.7.2:317'
# print(px._gen_pc(t1, t2))
px.run()
print(unsinged_right_shift(275404960, 24) & 255)
# except KeyError:
# pass
except:
traceback.print_exc()
# time.sleep(1)
function $C_vMN(t) {
var e;
var n = "";
for (e = 0; e < 32 * t.length; e += 8) n += String.fromCharCode(t[e >> 5] >>> e % 32 & 255);
return n;
}
function $C_qRT(t, e, n, r, i, a, o) {
return $C_sXR(n ^ (e | ~r), t, e, i, a, o);
function D(t, e) {
var n, r = H(t), a = [], o = [];
for (a[15] = o[15] = void 0,
r.length > 16 && (r = O(r, 8 * t.length)),
n = 0; n < 16; n += 1)
a[n] = 909522486 ^ r[n],
o[n] = 1549556828 ^ r[n];
var i = O(a.concat(H(e)), 512 + 8 * e.length);
return X(O(o.concat(i), 640))
}
function $C_gFK(t) {
var e;
var n;
var i = "";
for (n = 0; n < t.length; n += 1) e = t.charCodeAt(n), i += "0123456789abcdef".charAt(e >>> 4 & 15) + "0123456789abcdef".charAt(15 & e);
return i;
function X(t) {
var e, n = "";
for (e = 0; e < 32 * t.length; e += 8)
n += String.fromCharCode(t[e >> 5] >>> e % 32 & 255);
return n
}
function $C_vZD(t, e, n) {
return e ? n ? $C_jAI(e, t) : $C_gFK($C_jAI(e, t)) : n ? $C_tEZ(t) : function (t) {
return $C_gFK($C_tEZ(t));
}(t);
function H(t) {
var e, n = [];
for (n[(t.length >> 2) - 1] = void 0,
e = 0; e < n.length; e += 1)
n[e] = 0;
for (e = 0; e < 8 * t.length; e += 8)
n[e >> 5] |= (255 & t.charCodeAt(e / 8)) << e % 32;
return n
}
function $C_zUU(t, e, n, r, i, a, o) {
return $C_sXR(e & n | ~e & r, t, e, i, a, o);
function R(t, e) {
var n = (65535 & t) + (65535 & e);
return (t >> 16) + (e >> 16) + (n >> 16) << 16 | 65535 & n
}
function $C_qXI(t, e, n, r, i, a, o) {
return $C_sXR(e ^ n ^ r, t, e, i, a, o);
function x(t, e, n, r, a, o, i) {
return B(e & n | ~e & r, t, e, a, o, i)
}
function $C_wOY(t) {
var e;
var n = [];
for (n[(t.length >> 2) - 1] = void 0, e = 0; e < n.length; e += 1) n[e] = 0;
for (e = 0; e < 8 * t.length; e += 8) n[e >> 5] |= (255 & t.charCodeAt(e / 8)) << e % 32;
return n;
function B(t, e, n, r, a, o) {
return R((i = R(R(e, t), R(r, o))) << (c = a) | i >>> 32 - c, n);
var i, c
}
function $C_jYJ(t, e, n, r, i, a, o) {
return $C_sXR(e & r | n & ~r, t, e, i, a, o);
function _(t, e, n, r, a, o, i) {
return B(e & r | n & ~r, t, e, a, o, i)
}
function $C_tEZ(t) {
return function (t) {
return $C_vMN($C_jYB($C_wOY(t), 8 * t.length));
}($C_gOV(t));
function k(t, e, n, r, a, o, i) {
return B(e ^ n ^ r, t, e, a, o, i)
}
function $C_gOV(t) {
return unescape(encodeURIComponent(t));
function M(t, e, n, r, a, o, i) {
return B(n ^ (e | ~r), t, e, a, o, i)
}
function $C_gOL(t, e) {
return (t >> 16) + (e >> 16) + ((65535 & t) + (65535 & e) >> 16) << 16 | 65535 & (65535 & t) + (65535 & e);
function O(t, e) {
t[e >> 5] |= 128 << e % 32,
t[14 + (e + 64 >>> 9 << 4)] = e;
var n, r, a, o, i, c = 1732584193, u = -271733879, f = -1732584194, s = 271733878;
for (n = 0; n < t.length; n += 16)
r = c,
a = u,
o = f,
i = s,
c = x(c, u, f, s, t[n], 7, -680876936),
s = x(s, c, u, f, t[n + 1], 12, -389564586),
f = x(f, s, c, u, t[n + 2], 17, 606105819),
u = x(u, f, s, c, t[n + 3], 22, -1044525330),
c = x(c, u, f, s, t[n + 4], 7, -176418897),
s = x(s, c, u, f, t[n + 5], 12, 1200080426),
f = x(f, s, c, u, t[n + 6], 17, -1473231341),
u = x(u, f, s, c, t[n + 7], 22, -45705983),
c = x(c, u, f, s, t[n + 8], 7, 1770035416),
s = x(s, c, u, f, t[n + 9], 12, -1958414417),
f = x(f, s, c, u, t[n + 10], 17, -42063),
u = x(u, f, s, c, t[n + 11], 22, -1990404162),
c = x(c, u, f, s, t[n + 12], 7, 1804603682),
s = x(s, c, u, f, t[n + 13], 12, -40341101),
f = x(f, s, c, u, t[n + 14], 17, -1502002290),
c = _(c, u = x(u, f, s, c, t[n + 15], 22, 1236535329), f, s, t[n + 1], 5, -165796510),
s = _(s, c, u, f, t[n + 6], 9, -1069501632),
f = _(f, s, c, u, t[n + 11], 14, 643717713),
u = _(u, f, s, c, t[n], 20, -373897302),
c = _(c, u, f, s, t[n + 5], 5, -701558691),
s = _(s, c, u, f, t[n + 10], 9, 38016083),
f = _(f, s, c, u, t[n + 15], 14, -660478335),
u = _(u, f, s, c, t[n + 4], 20, -405537848),
c = _(c, u, f, s, t[n + 9], 5, 568446438),
s = _(s, c, u, f, t[n + 14], 9, -1019803690),
f = _(f, s, c, u, t[n + 3], 14, -187363961),
u = _(u, f, s, c, t[n + 8], 20, 1163531501),
c = _(c, u, f, s, t[n + 13], 5, -1444681467),
s = _(s, c, u, f, t[n + 2], 9, -51403784),
f = _(f, s, c, u, t[n + 7], 14, 1735328473),
c = k(c, u = _(u, f, s, c, t[n + 12], 20, -1926607734), f, s, t[n + 5], 4, -378558),
s = k(s, c, u, f, t[n + 8], 11, -2022574463),
f = k(f, s, c, u, t[n + 11], 16, 1839030562),
u = k(u, f, s, c, t[n + 14], 23, -35309556),
c = k(c, u, f, s, t[n + 1], 4, -1530992060),
s = k(s, c, u, f, t[n + 4], 11, 1272893353),
f = k(f, s, c, u, t[n + 7], 16, -155497632),
u = k(u, f, s, c, t[n + 10], 23, -1094730640),
c = k(c, u, f, s, t[n + 13], 4, 681279174),
s = k(s, c, u, f, t[n], 11, -358537222),
f = k(f, s, c, u, t[n + 3], 16, -722521979),
u = k(u, f, s, c, t[n + 6], 23, 76029189),
c = k(c, u, f, s, t[n + 9], 4, -640364487),
s = k(s, c, u, f, t[n + 12], 11, -421815835),
f = k(f, s, c, u, t[n + 15], 16, 530742520),
c = M(c, u = k(u, f, s, c, t[n + 2], 23, -995338651), f, s, t[n], 6, -198630844),
s = M(s, c, u, f, t[n + 7], 10, 1126891415),
f = M(f, s, c, u, t[n + 14], 15, -1416354905),
u = M(u, f, s, c, t[n + 5], 21, -57434055),
c = M(c, u, f, s, t[n + 12], 6, 1700485571),
s = M(s, c, u, f, t[n + 3], 10, -1894986606),
f = M(f, s, c, u, t[n + 10], 15, -1051523),
u = M(u, f, s, c, t[n + 1], 21, -2054922799),
c = M(c, u, f, s, t[n + 8], 6, 1873313359),
s = M(s, c, u, f, t[n + 15], 10, -30611744),
f = M(f, s, c, u, t[n + 6], 15, -1560198380),
u = M(u, f, s, c, t[n + 13], 21, 1309151649),
c = M(c, u, f, s, t[n + 4], 6, -145523070),
s = M(s, c, u, f, t[n + 11], 10, -1120210379),
f = M(f, s, c, u, t[n + 2], 15, 718787259),
u = M(u, f, s, c, t[n + 9], 21, -343485551),
c = R(c, r),
u = R(u, a),
f = R(f, o),
s = R(s, i);
return [c, u, f, s]
}
function $C_jAI(t, e) {
return function (t, e) {
// t = '123'
var n;
var r = $C_wOY(t);
// 转 字节
var i = [];
var a = [];
for (i[15] = a[15] = void 0, r.length > 16 && (r = $C_jYB(r, 8 * t.length)), n = 0; n < 16; n += 1) i[n] = 909522486 ^ r[n], a[n] = 1549556828 ^ r[n];
var o = $C_jYB(i.concat($C_wOY(e)), 512 + 8 * e.length);
return $C_vMN($C_jYB(a.concat(o), 640));
}($C_gOV(t), $C_gOV(e));
function N(t){
var e, n, r = "0123456789abcdef", a = "";
for (n = 0; n < t.length; n += 1)
e = t.charCodeAt(n),
a += r.charAt(e >>> 4 & 15) + r.charAt(15 & e);
return a
}
function $C_jYB(t, e) {
t[e >> 5] |= 128 << e % 32, t[14 + (e + 64 >>> 9 << 4)] = e;
var n;
var r;
var i;
var a;
var o;
var c = 1732584193;
var u = -271733879;
var l = -1732584194;
var s = 271733878;
for (n = 0; n < t.length; n += 16) r = c, i = u, a = l, o = s, c = $C_zUU(c, u, l, s, t[n], 7, -680876936), s = $C_zUU(s, c, u, l, t[n + 1], 12, -389564586), l = $C_zUU(l, s, c, u, t[n + 2], 17, 606105819), u = $C_zUU(u, l, s, c, t[n + 3], 22, -1044525330), c = $C_zUU(c, u, l, s, t[n + 4], 7, -176418897), s = $C_zUU(s, c, u, l, t[n + 5], 12, 1200080426), l = $C_zUU(l, s, c, u, t[n + 6], 17, -1473231341), u = $C_zUU(u, l, s, c, t[n + 7], 22, -45705983), c = $C_zUU(c, u, l, s, t[n + 8], 7, 1770035416), s = $C_zUU(s, c, u, l, t[n + 9], 12, -1958414417), l = $C_zUU(l, s, c, u, t[n + 10], 17, -42063), u = $C_zUU(u, l, s, c, t[n + 11], 22, -1990404162), c = $C_zUU(c, u, l, s, t[n + 12], 7, 1804603682), s = $C_zUU(s, c, u, l, t[n + 13], 12, -40341101), l = $C_zUU(l, s, c, u, t[n + 14], 17, -1502002290), c = $C_jYJ(c, u = $C_zUU(u, l, s, c, t[n + 15], 22, 1236535329), l, s, t[n + 1], 5, -165796510), s = $C_jYJ(s, c, u, l, t[n + 6], 9, -1069501632), l = $C_jYJ(l, s, c, u, t[n + 11], 14, 643717713), u = $C_jYJ(u, l, s, c, t[n], 20, -373897302), c = $C_jYJ(c, u, l, s, t[n + 5], 5, -701558691), s = $C_jYJ(s, c, u, l, t[n + 10], 9, 38016083), l = $C_jYJ(l, s, c, u, t[n + 15], 14, -660478335), u = $C_jYJ(u, l, s, c, t[n + 4], 20, -405537848), c = $C_jYJ(c, u, l, s, t[n + 9], 5, 568446438), s = $C_jYJ(s, c, u, l, t[n + 14], 9, -1019803690), l = $C_jYJ(l, s, c, u, t[n + 3], 14, -187363961), u = $C_jYJ(u, l, s, c, t[n + 8], 20, 1163531501), c = $C_jYJ(c, u, l, s, t[n + 13], 5, -1444681467), s = $C_jYJ(s, c, u, l, t[n + 2], 9, -51403784), l = $C_jYJ(l, s, c, u, t[n + 7], 14, 1735328473), c = $C_qXI(c, u = $C_jYJ(u, l, s, c, t[n + 12], 20, -1926607734), l, s, t[n + 5], 4, -378558), s = $C_qXI(s, c, u, l, t[n + 8], 11, -2022574463), l = $C_qXI(l, s, c, u, t[n + 11], 16, 1839030562), u = $C_qXI(u, l, s, c, t[n + 14], 23, -35309556), c = $C_qXI(c, u, l, s, t[n + 1], 4, -1530992060), s = $C_qXI(s, c, u, l, t[n + 4], 11, 1272893353), l = $C_qXI(l, s, c, u, t[n + 7], 16, -155497632), u = $C_qXI(u, l, s, c, t[n + 10], 23, -1094730640), c = $C_qXI(c, u, l, s, t[n + 13], 4, 681279174), s = $C_qXI(s, c, u, l, t[n], 11, -358537222), l = $C_qXI(l, s, c, u, t[n + 3], 16, -722521979), u = $C_qXI(u, l, s, c, t[n + 6], 23, 76029189), c = $C_qXI(c, u, l, s, t[n + 9], 4, -640364487), s = $C_qXI(s, c, u, l, t[n + 12], 11, -421815835), l = $C_qXI(l, s, c, u, t[n + 15], 16, 530742520), c = $C_qRT(c, u = $C_qXI(u, l, s, c, t[n + 2], 23, -995338651), l, s, t[n], 6, -198630844), s = $C_qRT(s, c, u, l, t[n + 7], 10, 1126891415), l = $C_qRT(l, s, c, u, t[n + 14], 15, -1416354905), u = $C_qRT(u, l, s, c, t[n + 5], 21, -57434055), c = $C_qRT(c, u, l, s, t[n + 12], 6, 1700485571), s = $C_qRT(s, c, u, l, t[n + 3], 10, -1894986606), l = $C_qRT(l, s, c, u, t[n + 10], 15, -1051523), u = $C_qRT(u, l, s, c, t[n + 1], 21, -2054922799), c = $C_qRT(c, u, l, s, t[n + 8], 6, 1873313359), s = $C_qRT(s, c, u, l, t[n + 15], 10, -30611744), l = $C_qRT(l, s, c, u, t[n + 6], 15, -1560198380), u = $C_qRT(u, l, s, c, t[n + 13], 21, 1309151649), c = $C_qRT(c, u, l, s, t[n + 4], 6, -145523070), s = $C_qRT(s, c, u, l, t[n + 11], 10, -1120210379), l = $C_qRT(l, s, c, u, t[n + 2], 15, 718787259), u = $C_qRT(u, l, s, c, t[n + 9], 21, -343485551), c = $C_gOL(c, r), u = $C_gOL(u, i), l = $C_gOL(l, a), s = $C_gOL(s, o);
return [c, u, l, s];
}
function $C_rYM(t, e, n) {
return $C_vZD(t, e, n);
}
function $C_dNB(t, e) {
return (t >> 16) + (e >> 16) + ((65535 & t) + (65535 & e) >> 16) << 16 | 65535 & (65535 & t) + (65535 & e);
}
function O(t, e, n, r, a, o, i) {
return B(e & n | ~e & r, t, e, a, o, i);
}
function B(t, e, n, r, a, o) {
return $C_dNB((i = $C_dNB($C_dNB(e, t), $C_dNB(r, o))) << (c = a) | i >>> 32 - c, n);
var i;
var c;
}
function _(t, e, n, r, a, o, i) {
return B(e & r | n & ~r, t, e, a, o, i);
}
function X(t, e, n, r, a, o, i) {
return B(e ^ n ^ r, t, e, a, o, i);
}
function I(t, e, n, r, a, o, i) {
return B(n ^ (e | ~r), t, e, a, o, i);
}
function k(t, e) {
t[e >> 5] |= 128 << e % 32, t[14 + (e + 64 >>> 9 << 4)] = e;
var n;
var r;
var a;
var o;
var i;
var c = 1732584193;
var u = -271733879;
var l = -1732584194;
var f = 271733878;
for (n = 0; n < t.length; n += 16) r = c, a = u, o = l, i = f, c = O(c, u, l, f, t[n], 7, -680876936), f = O(f, c, u, l, t[n + 1], 12, -389564586), l = O(l, f, c, u, t[n + 2], 17, 606105819), u = O(u, l, f, c, t[n + 3], 22, -1044525330), c = O(c, u, l, f, t[n + 4], 7, -176418897), f = O(f, c, u, l, t[n + 5], 12, 1200080426), l = O(l, f, c, u, t[n + 6], 17, -1473231341), u = O(u, l, f, c, t[n + 7], 22, -45705983), c = O(c, u, l, f, t[n + 8], 7, 1770035416), f = O(f, c, u, l, t[n + 9], 12, -1958414417), l = O(l, f, c, u, t[n + 10], 17, -42063), u = O(u, l, f, c, t[n + 11], 22, -1990404162), c = O(c, u, l, f, t[n + 12], 7, 1804603682), f = O(f, c, u, l, t[n + 13], 12, -40341101), l = O(l, f, c, u, t[n + 14], 17, -1502002290), c = _(c, u = O(u, l, f, c, t[n + 15], 22, 1236535329), l, f, t[n + 1], 5, -165796510), f = _(f, c, u, l, t[n + 6], 9, -1069501632), l = _(l, f, c, u, t[n + 11], 14, 643717713), u = _(u, l, f, c, t[n], 20, -373897302), c = _(c, u, l, f, t[n + 5], 5, -701558691), f = _(f, c, u, l, t[n + 10], 9, 38016083), l = _(l, f, c, u, t[n + 15], 14, -660478335), u = _(u, l, f, c, t[n + 4], 20, -405537848), c = _(c, u, l, f, t[n + 9], 5, 568446438), f = _(f, c, u, l, t[n + 14], 9, -1019803690), l = _(l, f, c, u, t[n + 3], 14, -187363961), u = _(u, l, f, c, t[n + 8], 20, 1163531501), c = _(c, u, l, f, t[n + 13], 5, -1444681467), f = _(f, c, u, l, t[n + 2], 9, -51403784), l = _(l, f, c, u, t[n + 7], 14, 1735328473), c = X(c, u = _(u, l, f, c, t[n + 12], 20, -1926607734), l, f, t[n + 5], 4, -378558), f = X(f, c, u, l, t[n + 8], 11, -2022574463), l = X(l, f, c, u, t[n + 11], 16, 1839030562), u = X(u, l, f, c, t[n + 14], 23, -35309556), c = X(c, u, l, f, t[n + 1], 4, -1530992060), f = X(f, c, u, l, t[n + 4], 11, 1272893353), l = X(l, f, c, u, t[n + 7], 16, -155497632), u = X(u, l, f, c, t[n + 10], 23, -1094730640), c = X(c, u, l, f, t[n + 13], 4, 681279174), f = X(f, c, u, l, t[n], 11, -358537222), l = X(l, f, c, u, t[n + 3], 16, -722521979), u = X(u, l, f, c, t[n + 6], 23, 76029189), c = X(c, u, l, f, t[n + 9], 4, -640364487), f = X(f, c, u, l, t[n + 12], 11, -421815835), l = X(l, f, c, u, t[n + 15], 16, 530742520), c = I(c, u = X(u, l, f, c, t[n + 2], 23, -995338651), l, f, t[n], 6, -198630844), f = I(f, c, u, l, t[n + 7], 10, 1126891415), l = I(l, f, c, u, t[n + 14], 15, -1416354905), u = I(u, l, f, c, t[n + 5], 21, -57434055), c = I(c, u, l, f, t[n + 12], 6, 1700485571), f = I(f, c, u, l, t[n + 3], 10, -1894986606), l = I(l, f, c, u, t[n + 10], 15, -1051523), u = I(u, l, f, c, t[n + 1], 21, -2054922799), c = I(c, u, l, f, t[n + 8], 6, 1873313359), f = I(f, c, u, l, t[n + 15], 10, -30611744), l = I(l, f, c, u, t[n + 6], 15, -1560198380), u = I(u, l, f, c, t[n + 13], 21, 1309151649), c = I(c, u, l, f, t[n + 4], 6, -145523070), f = I(f, c, u, l, t[n + 11], 10, -1120210379), l = I(l, f, c, u, t[n + 2], 15, 718787259), u = I(u, l, f, c, t[n + 9], 21, -343485551), c = $C_dNB(c, r), u = $C_dNB(u, a), l = $C_dNB(l, o), f = $C_dNB(f, i);
return [c, u, l, f];
}
function D(t) {
return unescape(encodeURIComponent(t));
}
function M(t) {
var e;
var n = [];
for (n[(t.length >> 2) - 1] = void 0, e = 0; e < n.length; e += 1) n[e] = 0;
for (e = 0; e < 8 * t.length; e += 8) n[e >> 5] |= (255 & t.charCodeAt(e / 8)) << e % 32;
return n;
}
function F(t) {
var e;
var n = "";
for (e = 0; e < 32 * t.length; e += 8) n += String.fromCharCode(t[e >> 5] >>> e % 32 & 255);
return n;
}
function P(t, e) {
return function (t, e) {
var n;
var r = M(t);
var a = [];
var o = [];
for (a[15] = o[15] = void 0, r.length > 16 && (r = k(r, 8 * t.length)), n = 0; n < 16; n += 1) a[n] = 909522486 ^ r[n], o[n] = 1549556828 ^ r[n];
var i = k(a.concat(M(e)), 512 + 8 * e.length);
return F(k(o.concat(i), 640));
}(D(t), D(e));
}
function Y(t) {
var e;
var n;
var a = "";
for (n = 0; n < t.length; n += 1) e = t.charCodeAt(n), a += "0123456789abcdef".charAt(e >>> 4 & 15) + "0123456789abcdef".charAt(15 & e);
return a;
}
function x(t, e, n) {
var r = function (t, e, n) {
if (!e) return n ? L(t) : Y(L(t));
if (!n) return function (t, e) {
return Y(P(t, e));
}(e, t);
return P(e, t);
}(t, e, n);
return r;
}
function genPc(t, e) {
var n = x(t, e);
try {
for (var r = function (t) {
function genPC1(t){
for (var e = "", n = "", r = 0; r < t.length; r++) {
var a = t.charCodeAt(r);
a >= 48 && a <= 57 ? e += t[r] : n += a % 10;
}
return e + n;
}(n), a = "", o = 0; o < r.length; o += 2) a += r[o];
return a;
} catch (t) {}
}
let t = '[{"t":"PX12095","d":{"PX11645":"https://www.flyfrontier.com/","PX12207":0,"PX12458":"MacIntel","PX11902":0,"PX11560":2415,"PX12248":3600,"PX11385":1693058324224,"PX12280":1693058324227,"PX11496":"ab7f61e0-4418-11ee-87a1-e51213af1917","PX12564":null,"PX12565":-1,"PX11379":false}}]'
t = `[{"t":"PX12095","d":{"PX11645":"https://www.flyfrontier.com/","PX12207":0,"PX12458":"MacIntel","PX11902":0,"PX11560":8604,"PX12248":3600,"PX11385":1698938177247,"PX12280":1698938177287,"PX11496":"b8a39670-7866-11ee-9655-63a4f05cd5d1","PX12564":null,"PX12565":-1,"PX11379":false}}]`
let e = 'b8a39670-7866-11ee-9655-63a4f05cd5d1:v8.7.2:317'
console.log(genPc(t, e))
function pe(t, e) {
for (var n = "", r = 0; r < t.length; r++) {
console.log(e, t.charCodeAt(r),e ^ t.charCodeAt(r))
n += String.fromCharCode(e ^ t.charCodeAt(r));
}
return n;
}
console.log(pe('>9>?', 10))
\ No newline at end of file
return e + n
}
function genPC2(r) {
var a = "";
var o = 0;
for(o = 0; o < r.length; o += 2)
a += r[o];
return a
}
/**
* tempuuid = uuid+":v{VERSIONNUMBER}-HF:{SITEID}"
* payload = normal payload, not encoded
* you can use pccreator like this: var pc = genPC2(genPC1(N(D(tempuuid, payload))))
*/
module.exports = {
genPC1: genPC1,
genPC2: genPC2,
N: N,
D: D
}
let t = '[{"t":"PX12095","d":{"PX11645":"https://www.flyfrontier.com/","PX12207":0,"PX12458":"MacIntel","PX11902":0,"PX11560":31629,"PX12248":3600,"PX11385":1698822700332,"PX12280":1698822700336,"PX11496":"b8a39670-7866-11ee-9655-63a4f05cd5d1","PX12564":null,"PX12565":-1,"PX11379":false}}]'
t = `[{"t":"PX12095","d":{"PX11645":"https://www.flyfrontier.com/","PX12207":0,"PX12458":"MacIntel","PX11902":0,"PX11560":36377,"PX12248":0,"PX11385":1698919311053,"PX12280":1698919311054,"PX11496":"b34a66a6-bfb5-40bb-9437-21ef917b8d0e","PX12564":null,"PX12565":-1,"PX11379":false}}]`
t = '[{"t":"PX12095","d":{"PX11645":"https://www.spirit.com/","PX12207":0,"PX12458":"MacIntel","PX11902":0,"PX11560":2352,"PX12248":3600,"PX11385":1700019122060,"PX12280":1700019122064,"PX11496":"8a5265b0-8367-11ee-9a58-bd42f5c10ff9","PX12564":null,"PX12565":-1,"PX11379":true}}]'
t = `{"t":"PX12095","d":{"PX11645":"https://www.spirit.com/","PX12207":0,"PX12458":"MacIntel","PX11902":0,"PX11560":3357,"PX12248":3600,"PX11385":1700033523406,"PX12280":1700033523413,"PX11496":"123140c0-8389-11ee-8cbe-01c648c2e436","PX12564":null,"PX12565":-1}}`
let e = 'b34a66a6-bfb5-40bb-9437-21ef917b8d0e:v8.7.2:317'
e = '123140c0-8389-11ee-8cbe-01c648c2e436:v8.7.2:317'
function genPc(t,e){
return genPC2(genPC1(N(D(e, t))))
}
console.log(genPc(e,t))
\ No newline at end of file
......@@ -4865,7 +4865,7 @@ function createPx1(t) {
function getPX12573(a, b, c) {
let t = function (j, x, o) {
return j + 47458 + o.charCodeAt(14);
return j - 22790 + x.charCodeAt(31);
// }["apply"](null, ['0III0III', 'I000I0', 'uuid'])
}["apply"](null, [a, b, c])
// console.log(t)
......@@ -4908,10 +4908,10 @@ function createPX12508() {
return ENV.useragentdata.highvalue.brands
}
function genPayload2(sid, vid, ts, num1, num2, str1, uuid,startTs,startTs2, n) {
function genPayload2(url, sid, vid, ts, num1, num2, str1, uuid, startTs, startTs2, n) {
// let vid = m['I000I0']
// let sid = m['I0I0II']
startTs2 += randomInt(21000,26000)
startTs2 += randomInt(21000, 26000)
console.log(vid, sid)
let data = {
// "PX11431": 1692944411084, // 0III0III
......@@ -4919,9 +4919,11 @@ function genPayload2(sid, vid, ts, num1, num2, str1, uuid,startTs,startTs2, n) {
// "75602>44073>?2261175": "46531=77340=<1152246",
"PX12454": num1, // 0III0II0
"PX11701": num2, // I00III
"PX11529": parseInt(Math.random() * 46033724 + 46033724),// usedJSHeapSize
// "PX11529": parseInt(Math.random() * 46033724 + 46033724),// usedJSHeapSize
"PX11529": 74208842,// usedJSHeapSize
"PX11555": 4294705152,// jsHeapSizeLimit
"PX11833": parseInt(Math.random() * 60757720 + 60757720),// totalJSHeapSize
// "PX11833": parseInt(Math.random() * 60757720 + 60757720),// totalJSHeapSize
"PX11833": 80878510,// totalJSHeapSize
// "PX11840": "Fri Aug 25 2023 14:20:11 GMT+0800 (中国标准时间)",
"PX11840": new Date() + '',
// "PX12573": "e29b74b1", // parseInt(0III0III/10)
......@@ -4936,7 +4938,7 @@ function genPayload2(sid, vid, ts, num1, num2, str1, uuid,startTs,startTs2, n) {
"PX11902": 1,
"PX11560": performanceNow(parseInt(Math.random() * 500 + 500)), // performance.now()
// "PX11332": 1692944411272,
"PX11332": startTs2 - randomInt(500,900),
"PX11332": startTs2 - randomInt(500, 900),
"PX12248": 3600,
"PX11385": startTs,
"PX12280": startTs2,
......@@ -4944,7 +4946,7 @@ function genPayload2(sid, vid, ts, num1, num2, str1, uuid,startTs,startTs2, n) {
"PX12330": "109|66|66|70|80", // ["webstore", 'runtime', 'app', "csi", "loadTimes"];构造函数 长度
"PX11705": 1182, //fetch+''
"PX11705": 571, //fetch+''
"PX11938": true, //caches
"PX11602": true, //caches
"PX12021": "false", // webdriver
......@@ -5021,7 +5023,7 @@ function genPayload2(sid, vid, ts, num1, num2, str1, uuid,startTs,startTs2, n) {
"PX12207": 0, //v["self"] === v["top"] ? 0 : 1
"PX11538": 2, // history.length
"PX11984": "TypeError: Cannot read properties of null (reading '0')\n at de (https://client.px-cloud.net/PXVb73hTEg/main.min.js:796:13)\n at Eo (https://client.px-cloud.net/PXVb73hTEg/main.min.js:2294:31)\n at Co (https://client.px-cloud.net/PXVb73hTEg/main.min.js:2316:23)\n at https://client.px-cloud.net/PXVb73hTEg/main.min.js:2152:9",
"PX11645": "https://www.flyfrontier.com/", // href
"PX11645": url, // href
"PX11597": [],// location.ancestorOrigins
"PX12023": "",// document.referrer
"PX11337": false,// window.hasOwnProperty('onorientationchange')
......@@ -5144,7 +5146,7 @@ function genPayload2(sid, vid, ts, num1, num2, str1, uuid,startTs,startTs2, n) {
// }],
"PX12508": createPX12508(),
"PX12549": true,
"PX11539": "831efc5e", //Me(console.log)
"PX11539": "PX11539", //Me(console.log)
"PX11528": "", // Object["getOwnPropertyDescriptor"](HTMLDocument["prototype"], "cookie")["get"]
"PX12271": "10207b2f",// Va(Object["prototype"]["toString"])
"PX11849": "10207b2f",// return Va(m["toString"]);
......@@ -5210,8 +5212,8 @@ function genPayload2(sid, vid, ts, num1, num2, str1, uuid,startTs,startTs2, n) {
"PX12553": "Asia/Shanghai",
"PX12567": "w3c",
"PX12576": "screen",
"PX12554":"function getOwnPropertyDescriptors() { [native code] }",
"PX12577":"function query() { [native code] }",
"PX12554": "function getOwnPropertyDescriptors() { [native code] }",
"PX12577": "function query() { [native code] }",
"PX12594": false,
"PX12566": false,
"PX12571": "74d9c66", // allowedFeatures();
......@@ -5287,7 +5289,7 @@ function genPayload2(sid, vid, ts, num1, num2, str1, uuid,startTs,startTs2, n) {
"PX12572": "7ec700f02277463745cc71774c12c8aa",
"PX11477": "126.8696939282454",
"PX12109": "b908567e93d9ed24c036da7986349e97",
"PX12362": "f002a4208ac473ef3bd8237048ce6028",
"PX12362": "c401c016b1ed79a2c1e834d8de487dc0",
"PX12491": "be9996f96141c689cda7a1e4e1c28787",
"PX12130": ["Sha256", "_init", "_open", "_close", "F9Storage", "$", "F9Qubit", "F9Social", "html5", "$A", "_fbq", "_uxa", "__core-js_shared__", "_", "__f9publicCache", "ueto_1c8252a545"],
"PX12351": ["jQuery3510402196117429823861", "_html5shiv", "AccDC1698805894620"],
......@@ -5320,8 +5322,8 @@ function genPayload2(sid, vid, ts, num1, num2, str1, uuid,startTs,startTs2, n) {
"PX12387": `${screen.width}X${screen.height}`,// F + "X" + N
"PX12003": screen.pixeldepth, // screen["pixelDepth"]
"PX11380": screen.colordepth, // screen["colorDepth"]
"PX11494": window.innerwidth, // v["innerWidth"]
"PX12411": window.innerheight, // v["innerHeight"]
// "PX11494": window.innerwidth, // v["innerWidth"]
// "PX12411": window.innerheight, // v["innerHeight"]
"PX11849": "10207b2f",
"PX11583": "en-US",
"PX12458": navigator.platform,
......@@ -5346,8 +5348,8 @@ function genPayload2(sid, vid, ts, num1, num2, str1, uuid,startTs,startTs2, n) {
"PX11496": uuid,
"PX12564": null,
"PX12565": -1,
"PX11379": false,
"PX11645": "https://www.flyfrontier.com/"
// "PX11379": false,
// "PX11645": url
}
})
}
......@@ -5356,26 +5358,26 @@ function genPayload2(sid, vid, ts, num1, num2, str1, uuid,startTs,startTs2, n) {
}
function genPayload3(sid, vid, ts, num1, num2, str1, uuid) {
function genPayload3(url, sid, vid, ts, num1, num2, str1, uuid) {
let data = [{
"t": "PX12123",
"d": {
"PX12108": randomInt(539, 789),
"PX12414": randomInt(100, 300),
"PX11984":"TypeError: Cannot read properties of null (reading '0')\n at he (https://client.px-cloud.net/PXVb73hTEg/main.min.js:1141:11)\n at Fo (https://client.px-cloud.net/PXVb73hTEg/main.min.js:3316:20)\n at So (https://client.px-cloud.net/PXVb73hTEg/main.min.js:2940:21)\n at https://client.px-cloud.net/PXVb73hTEg/main.min.js:2937:13",
"PX12108": 501,
"PX12414": 26,
"PX11984": "TypeError: Cannot read properties of null (reading '0')\n at he (https://client.px-cloud.net/PXVb73hTEg/main.min.js:1136:13)\n at HTMLBodyElement.Hc (https://client.px-cloud.net/PXVb73hTEg/main.min.js:4106:25)\n at HTMLBodyElement.nbuWrapper (https://cdn.noibu.com/collect.js:1:128213)\n at ks (https://client.px-cloud.net/PXVb73hTEg/main.min.js:5227:20)\n at Object.2Lk4 (https://client.px-cloud.net/PXVb73hTEg/main.min.js:5082:22)\n at Rv (https://client.px-cloud.net/PXVb73hTEg/main.min.js:7533:51)",
"PX12303": "mouseover",
"PX11699": randomInt(1112964, 2221945),
"PX11699": 58848,
"PX11987": "true",
"PX12461": true,
"PX11652": "#header>DIV:nth-child(1)>DIV:nth-child(3)>DIV:nth-child(1)>DIV:nth-child(1)>DIV:nth-child(1)",
"PX11652": "#wisepops-instance-429858",
"PX11902": 3,
"PX11560": performanceNow(parseInt(Math.random() * 500 + 500)),
"PX12280": Date.now(),
"PX11496": uuid,
"PX12564": null,
"PX12565": -1,
"PX11379": false,
"PX11645": "https://www.flyfrontier.com/"
// "PX11379": false,
// "PX11645": url
}
},
{
......@@ -5399,7 +5401,8 @@ function genPayload3(sid, vid, ts, num1, num2, str1, uuid) {
"PX12565": -1,
"PX11379": false
}
}]
}
]
return JSON.stringify(data)
}
......@@ -5416,7 +5419,10 @@ let m = {
'I00III': '10697662696482325601',
'IIIII0': '_px2'
}
let a2 = "B1lZWQcHB1kUWV5RUVFdXFFRWVhYWBYWFhYHWVkHWVkUW1FbUFtYWApFUFoMWkVZWQ0NRQlYCwlFDVxYCg5YDQoJCw5eFhYWFllZWQcHWRQLCxReWBQ9Wi4cMj4mGAwvPVE8Ly5cJx9VVRYWFhYHWVlZBwcHBxReUV1cFhYWFlkHBwcHWRQLBFEDWgoBUB0EB15aXBtdWxgNWBYWFhZZWVkHWQcUWVpdUFBZWl1cUFleXFtfX1BaUFAWFhYWB1kHB1kHFFtRW1BaWw5fRVBaDFpFWVkNDUUJWAsJRVxZXgpbW1lcWVFcWRRbWV1bXlhYWBQcGh0NFhYWFgdZWQdZWQcHFFtRW1BbXVhRRVBaDFpFWVkNDUUJWAsJRQ1cWAoOWA0KCQsOXhQcGh0NFhYWFgdZB1lZWRQLHRYWFhZZWQdZWVkUClAOXAxYW1ENXl1RXlkMWVtfDV9fCl5YDF8NXl9ZW1ALC10MCQ4KXFAKCV9dXFlfW1FQXwxZC1xaDV0JXw1QCw=="
let a2 = "B1lZB1lZFFlaCVtdWgsKRVBcDl1FWVkNDUVQCQpbRQkJW1pbWgwKDFxdCRYWFhYHWVkHWVkHBxRZWglbXV4KUEVQXA5dRVlZDQ1FUAkKW0UJCVtaW1oMCgxcXQkUHBodDRYWFhZZWVkHWQcUWV1dXVFaWlleW11eX1BcWV9bX1oWFhYWWVkHWVlZFApQCQ5eXF4NDlxYDQldC1AMUF0JUFANWlpZWwoJXFBRDFBYClFeX1FaUFtRXg0LXQoOWA4OXFhYXQxdCVBcDVkWFhYWB1kHWVlZFAsdFhYWFgdZBwdZBxRZWglbXFtcWUVQXA5dRVlZDQ1FUAkKW0UJDgwKUQtbDV1aCV0UW1ldW15YWFgUHBodDRYWFhZZBwcHB1kUCwQKDAxRWhkCUAABWFlYHQQdGlgWFhYWWVlZBwdZFAsLFF5YFD1aLhwyPiYYDC89UTwvLlwnH1VVFhYWFgdZWVkHBwdZFFlfWFhZUFFQXlhRUFoWFhYWB1lZWQcHBwcUXFFRXQ=="
a2 = "B1lZB1lZFF8LXwsNWV1fRVBdWV1FWVkNDUVQCQxeRQ4KWwlYWlhQWlENDBYWFhZZBwcHB1kUCwQKDxlZBgwEWw5aWFlcBx1fAVgWFhYWB1lZWQcHBwcUXlFdWhYWFhYHWVkHWVkHBxRfC18LDVwLXkVQXVldRVlZDQ1FUAkMXkUOClsJWFpYUFpRDQwUHBodDRYWFhYHWVlZBwcHWRRZX1hYWlhbX1BaXF5dFhYWFllZWQdZBxRZX1FaUF9YWFFRX1teXV9cWFtQWxYWFhYHWQdZWVkUCx0WFhYWB1kHB1kHFF8LXwsMUApfRVBdWV1FWVkNDUVQCQxeRQpeXVtZCl0KWQ4LWRRbWV1bXlhYWBQcGh0NFhYWFllZB1lZWRRcWQxRDQkKCQpeC1oMDVhQXQkJWV9eUV8JWFxbUQ5fWw5ZXgxZCVpYWg4MWwkJCgpaWltQWQlQWAkLWAxbX1FZFhYWFllZWQcHWRQLCxReWBQ9Wi4cMj4mGAwvPVE8Ly5cJx9VVQ=="
let res = $C_kKK(atob(a2), 872 % 128).split('~~~~')
let vid, sid, uuid, ts, num1, num2,
......@@ -5433,7 +5439,7 @@ res.forEach(e => {
break;
case"o1oo11":
hash = data[1]
hash2 =data[2];
hash2 = data[2];
hashv = data[3]
break;
case"o11o11":
......@@ -5469,16 +5475,16 @@ res.forEach(e => {
}
})
uuid = '35e35ce0-82d2-11ee-aaff-1722edcfad08'
uuid = '7a9756d0-8515-11ee-a2c6-5b29c1e479a6'
console.log(res)
// startTs PX11385
// startTs2 PX11280
console.log(genPayload3(
console.log(genPayload3('https://www.flyfrontier.com/',
sid, vid, ts, num1, num2, str1, uuid
,1699954985393,1699954593333
, true
, 1700203779263, 1700203786744
, false
)
)
......@@ -5497,7 +5503,11 @@ console.log(genPayload3(
//
//
// log}))
// console.log(getPX12573(1698746265,'f0e7047f-77d3-11ee-b235-351f775e4948', 'efd78db0-77d3-11ee-9223-6f639400456d'))
console.log(getPX12573(
1700202494,
"7cc4340e-8512-11ee-bb46-ed9f28b5fd16",
"716c90f0-8512-11ee-8c96-410f8e8f9c35"
))
console.log(genUuid())
\ No newline at end of file
import base64
import json
with open('test.js', 'r', encoding='utf-8') as f:
jsCode = f.read()
# ctx = py_mini_racer.MiniRacer()
# ctx.eval(jsCode)
def encrypt(data, param):
n = bytearray()
if isinstance(data, str):
......@@ -18,8 +17,6 @@ def encrypt(data, param):
for i in bytess:
n.append(i ^ param)
return n
# 第一步
a = 'aUkQRhAIEGJqAwACCwcQHhBWEAhJEGJqAwMEBgcQCBBaRkZCQQgdHUVFRRxBQltAW0YcUV1fHRAeEGJqAwAAAgUQCAIeEGJqAwAGBwoQCBBlW1wBABAeEGJqAwMLAgAQCAIeEGJqAwMHBAIQCAEKAwEeEGJqAwAABgoQCAG^EEAgIeEGJqAwMBCgcQCAMECwIHSAAYHBgsK}DBQYeNEGJqAKwAACgIQ8DCAMENaCwIHAAY>HBgsKCwUeEGJqAwMGCwQQCD`BAGBgZQVFQCAh8AVgJWHwMDV1cfU1MEBK}GR8KUFZXVwQHVAAACwoQHhBiagMABwKQGEAhcR15eHhBiagMABwQHEAgfAx4QY7mo7DAwEFCxAIRkBHV09Pbw=='
a = 'aUkQRhAIEGJqAwMHBgUQHhBWEAhJEGJqAwAGCwAQCBBRBwIHUQMCVwAEUwNQBVMFBQYDBgEFVlALVAoACwMEUBAeEGJqAwAHBQIQCBBXAgNWBgpRBVACCwEACwMHB1EDBFAHVApUUAdTVwsKAxAeEGJqAwMBBwAQCBAFAwEKBgoAAFMFV1EEVFMAV1MKAAEDAAAABFFXA1YGBxAeEGJqAwAACwAQCBBlV1B5W0YQHhBiagMDCgMDEAhpbx4QYmoDAwcEBRAIEGVXUHlbRhJlV1B1fhAeEGJqAwACAQAQCBBlV1B1fhIDHAISGn1CV1x1fhJ3YRIAHAIScVpAXV9bR18bEB4QYmoDAwcBBBAIaRBzfHV d21bXEFGU1xRV1ZtU0BAU0tBEB4Qd2pmbVBeV1xWbV9bXF9TShAeEHdqZm1RXV5dQG1QR1RUV0BtWlNeVG1UXl1TRhAeEHdqZm1WW0FYXVtcRm1GW19XQG1DR1dASxAeEHdqZm1UXl1TRm1QXldcVhAeEHdqZm1UQFNVbVZXQkZaEB4Qd2pmbUFaU1ZXQG1GV0pGR0BXbV5dVhAeEHdqZm1GV0pGR0BXbVFdX0JAV0FBW11cbVBCRlEQHhB3amZtRldKRkdAV21RXV9CQFdBQVtdXG1AVUZREB4Qd2pmbUZXSkZHQFdtVFteRldAbVNcW0FdRkBdQltREB4Qd2pmbUFgdXAQHhB5emBtQlNAU15eV15tQVpTVldAbVFdX0JbXlcQHhB9d2FtV15XX1dcRm1bXFZXSm1HW1xGEB4QfXdhbVRQXW1AV1xWV0BtX1tCX1NCEB4QfXdhbUFGU1xWU0BWbVZXQFtEU0ZbRFdBEB4QfXdhbUZXSkZHQFdtVF5dU0YQHhB9d2FtRldKRkdAV21UXl1TRm1eW1xXU0AQHhB9d2FtRldKRkdAV21aU15UbVReXVNGEB4QfXdhbUZXSkZHQFdtWlNeVG1UXl1TRm1eW1xXU0AQHhB9d2FtRFdARldKbVNAQFNLbV1QWFdRRhAeEGV3cHV bVFdXl1AbVBHVFRXQG1UXl1TRhAeEGV3cHV bVFdX0JAV0FBV1ZtRldKRkdAV21BAUZREB4QZXdwdX5tUV1fQkBXQUFXVm1GV0pGR0BXbUEBRlFtQUBVUBAeEGV3cHV bVZXUEdVbUBXXFZXQFdAbVtcVF0QHhBld3B1fm1WV1BHVW1BWlNWV0BBEB4QZXdwdX5tVldCRlptRldKRkdAVxAeEGV3cHV bVZAU0VtUEdUVFdAQRAeEGV3cHV bV5dQVdtUV1cRldKRhAeEGV3cHV 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^XbUFLX1BdXm1tXVxdXFdfQkZbV1ZCU0ZRWldWEB4QbW1IXVxXbUFLX1BdXm1tXVxdXFdcVldWQlNGUVpXVhAeEG1tSF1cV21BS19QXV5tbV1cXVxXQEBdQEJTRlFaV1YQHhBtbUhdXFdtQUtfUF1ebW1dXF1cVF1RR0FCU0ZRWldWEB4QbW1IXVxXbUFLX1BdXm1tXVxdXFRdQF9WU0ZTQlNGUVpXVhAeEG1tSF1cV21BS19QXV5tbV1cXVxbXEJHRkJTRlFaV1YQHhBtbUhdXFdtQUtfUF1ebW1dXF1cW1xEU15bVkJTRlFaV1YQHhBtbUhdXFdtQUtfUF1ebW1dXF1cWVdLVl1FXEJTRlFaV1YQHhBtbUhdXFdtQUtfUF1ebW1dXF1cWVdLQkBXQUFCU0ZRWldWEB4QbW1IXVxXbUFLX1BdXm1tXVxdXFlXS0dCQlNGUVpXVhAeEG1tSF1cV21BS19QXV5tbV1cXVxeXVNWQlNGUVpXVhAeEG1tSF1cV21BS19QXV5tbV1cXVxeXVNWV1ZWU0ZTQlNGUVpXVhAeEG1tSF1cV21BS19QXV5tbV1cXVxeXVNWV1ZfV0ZTVlNGU0JTRlFaV1YQHhBtbUhdXFdtQUtfUF1ebW1dXF1cXl1TVkFGU0BGQlNGUVpXVhAeEG1tSF1cV21BS19QXV5tbV1cXVxfXUdBV1ZdRVxCU0ZRWldWEB4QbW1IXVxXbUFLX1BdXm1tXVxdXF9dR0FXV1xGV0BCU0ZRWldWEB4QbW1IXVxXbSUFLX1BdXm1tXVxdXF9dR0FXXldTRFdCU0ZRWldWEB4QbW1IXVxXbUFLX1BdXm1tXVxdXF9dR0FXX11EV0JTRlFaV1YQHhBtbUhdXFdtQUtfUF1ebW1dXF1cX11HQVddR0ZCU0ZRWldWEB4QbW1IXVxXbUFLX1BdXm1tXVxdXF9dR0FXXURXQEJTRlFaV1YQHhBtbUhdXFdtQUtfUF1ebW1dXF1cX11HQVdHQkJTRl?GFaV1YQHhBtbUhdXFdtQUtfUF1ebW1dXF1cX11HQVdFWldXXkJTRlFaV1YQHhBtbUhdXFdtQUtfUF1ebW1dXF1cQlNHQVdCU0ZRWldWEB4QbW1IXVxXbUFLX1BdXm1tXVxdXEJeU0tCU0ZRWldWEB4QbW1INXVxXbUFLX1BdXm1tXVxdXEJeU0tbXFVCU0ZRWldWEB4QbW1IXVxXbUFLX1BdXm1tXVxdXEJAXVVAV0FBQlNGUVpXVhAeEG1tSF1cV21BS19QXV5tbV1cXVxAU0ZXUVpTXFVXQlNGUVpXVhAeEG1tSF1cV21_BS19QXV5tbV1cXVxAV0FXRkJTRlFaV1YQHhBtbUhdXFdtQUtfUF1ebW1dXF1cQFdBW0hXQlNGUVpXVhAeEG1tSF1cV21BS19QXV5tbV1cXVxBUUBdXl5CU0ZRWldWEB4QbW1IXVxXbUFLX1BdXm1tXVxdXEFXUUdAW0ZLQl1eW1FLRFtdXlNGW11cQlNGUVpXVhAeEG1tSF1cV21BS19QXV5tbV1cXVxBV1dZV1ZCsDU0ZRWldWEB4QbW1IXVxXbUFLX1BdXm1tXVxdXEFXV1lbXFVCU0ZRWldWEB4QbW1IXVxXbUFLX1BdXm1tXVxdXEFXXldRRkJTRlFaV1YQHhBtbUhdXFdtQUtfUF1ebW1dXF1cQV5dRlFaU1xVV0JTRlFaV1N_YQHhBtbUhdXFdtQUtfUF1ebW1dXF1cQUZTXl5XVkJTRlFaV1YQHhBtbUhdXFdtQUtfUF1ebW1dXF1cQUdQX1tGQlNGUVpXVhAeEG1tSF1cV21BS19QXV5tbV1cXVxBR0FCV1xWQlNGUVpXVhAeEG1tSF1cV21BS19QXV5tbV1cXVxGW19XR0JWU0ZXQlNGUVpXVhAeEG1tSF1cV21BS19QXV5tbV1cXVxGXVVVXl;dCU0ZRWldWEB4QbW1IXVxXbUFLX1BdXm1tXVxdXERdXkdfV1FaU1xVV0JTRlFaV1YQHhBtbUhdXFdtQUtfUF1ebW1dXF1cRVNbRltcVUJTRlFaV1YQHhBtbUhdXFdtQUtfUF1ebW1dXF1cRVdQWVtGU1xbX1NGW11cV1xWQlNGUVpXVhAeEG1tSF1cV21BS19QXV5tbV1cXVxFV1BZW0ZTXFtfU0ZbXVxbRldAU0ZbXVxCU0ZRWldWEB4QbW1IXVxXbUFLX1BdXm1tXVxdXEVXUFlbRlNcW19TRltdXEFGU0BGQlNGUVpXVhAeEG1tSF1cV21BS19QXV5tbV1cXVxFV1BZW0ZGQFNcQVtGW11cV1xWQlNGUVpXVhAeEG1tSF1cV21BS19QXV5tbV1cXVxFWldXXkJTRlFaV1YQHhBtbUhdXFdtQUtfUF1ebW1dXF1cU0dKUV5bUVlCU0ZRWldWEB4QbW1IXVxXbUFLX1BdXm1tXVxdXFVdRkJdW1xGV0BRU0JGR0BXQlNGUVpXVhAeEG1tSF1cV21BS19QXV5tbV1cXVxeXUFGQl1bXEZXQFFTQkZHQFdCU0ZRWldWEB4QbW1IXVxXbUFLX1BdXm1tXVxdXG^EJdW1xGV0BWXUVcQlNGUVpXVhAeEG1tSF1cV21BS19QXV5tbV1cXVxCXVtcRldAX11EV0JTRlFaV1YQHhBtbUhdXFdtQUtfUF1ebW1dXF1cQl1bXEZXQEBTRUdCVlNGV0JTRlFaV1YQHhBtbUhdXFdtQUtfUF1ebW1dXF1cQl1bXEZXQEdCQlNGUVpXVhAeEG1tSF1cV21BS19QXV5tbV1cXVxCXVtcRldAUVNcUVdeQlNGUVpXVhAeEG1tSF1cV21BS19QXV5tbV1cXVxCXVtcRldAXURXQEJTRlFaV1YQHhBtbUhdXFdtQUtfUF1ebW1dXF1cQl1bXEZXQF1HRkJTRlFaV1YQHhBtbUhdXFdtQUtfUF1ebW1dXF1cQl1bXEZXQFdcRldAQlNGUVpXVhAeEG1tSF1cV21BS19QXV5tbV1cXVxCXVtcRldAXldTRFdCU0ZRWldWEB4QbW1IXVxXbUFLX1BdXm1tXVxdXEFXXldRRkFGU0BGQlNGUVpXVhAeEG1tSF1cV21BS19QXV5tbV1cXVxBV15XUUZbXVxRWlNcVVdCU0ZRWldWEB4QbW1IXVxXbUFLX1BdXm1tXVxdXFNcW19TRltdXFdcVkJTRlFaV1YQHhBtbUhdXFdtQUtfUF1ebW1dXF1cU1xbX1NGW11cW0ZXQFNGW11cQlNGUVpXVhAeEG1tSF1cV21BS19QXV5tbV1cXVxTXFtfU0ZbXVxBRlNARkJTRlFaV1YQHhBtbUhdXFdtQUtfUF1ebW1dXF1cRkBTXEFbRltdXEBHXEJTRlFaV1YQHhBtbUhdXFdtQUtfUF1ebW1dXF1cRkBTXEFbRltdXEFGU0BGQlNGUVpXVhAeEG1tSF1cV21BS19QXV5tbV1cXVxGQFNcQVtGW11cV1xWQlNGUVpXVhAeEG1tSF1cV21BS19[>GQXV5tbV1cXVxGQFNcQVtGW11cUVNcUVdeQlNGUVpXVhAeEG1tSF1cV21BS19QXV5tbV1cXVxTVEZXQEJAW1xGQlNGUVpXVhAeEG1tSF1cV21BS19QXV5tbV1cXVxQV1RdQFdCQFtcRkJTRlFaV1YQHhBtbUhdXFdtQUtfUF1ebW1dXF1cUFdUXUBXR1xeXVNWQlNGUVpXVhAeEG1tSF1cV21BS19QXV5tbV1cXVxaU0FaUVpTXFVXQlNGUVpXVhAeEG1tSF1cV21BS19QXV5tbV1cXVxeU1xVR1NVV1FaU1xVV0JTRlFaV1YQHhBtbUhdXFdtQUtfUF1ebW1dXF1cX1dBQVNVV0JTRlFaV1YQHhBtbUhdXFdtQUtfUF1ebW1dXF1cX1dBQVNVV1dAQF1AQlNGUVpXVhAeEG1tSF1cV21BS19QXV5tbV1cXVxdVFReW1xXQlNGUVpXVhAeEG1tSF1cV21BS19QXV5tbV1cXVxdXF5bXFdCU0ZRWldWEB4QbW1IXVxXbUFLX1BdXm1tXVxdXEJTVVdaW1ZXQlNGUVpXVhAeEG1tSF1cV21BS19QXV5tbV1cXVxCU1VXQVpdRUJTRlFaV1YQHhBtbUhdXFdtQUtfUF1ebW1dXF1cQl1CQUZTRldCU0ZRWldWEB4QbW1IXVxXbUFLX1BdXm1tXVxdXEBXWFdRRltdXFpTXFZeV1ZCU0ZRWldWEB4QbW1IXVxXbUFLX1BdXm1tXVxdXEFGXUBTVVdCU0ZRWldWEB4QbW1IXVxXbUFLX1BdXm1tXVxdXEdcWlNcVl5XVkBXWFdRRltdXEJTRlFaV1YQHhBtbUhdXFdtQUtfUF1ebW1dXF}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'
......@@ -51,53 +48,44 @@ a = 'aUkQRhAIEGJqAwMHBgUQHhBWEAhJEGJqAwAGCwAQCBBRBwIHUQMCVwAEUwNQBVMFBQYDBgEFVlA
# except Exception as e:
# print(e)
a2 ="WVkHBwdZFDcYEFoUW1tYFA0RIlkhAgcBMiw5XCUvPVglEikcJhILHyYBWBAlPz4EJDwPEjI8MRwlPzIAMjwtWyZaMR8lPA8SIQEfAQwBIV4hBSVaJSwtXSYvJgIkPAtaMgIDHCU8LgQyO1kAJQItWyQ/OREmWjFZJhImBCc8C1gnOyEbIQY5AScCMRElLCESJRIPXCUsKR8mER8BCSshXiECKgEyLCFbJgI5WiVaLgUmBT0QJhIyBDE8JgAyAgMfMQIyAiUSC10mLDkfMQIlWCU/OgEnLDkQJQI5ETECC1olPz1dJT8yAiUvJV0mPD4FMgI5XCUSAwEOOVVVFBwaHQ0UW1hYFhYWFgdZB1lZWRQLHQ=="
# {"u":"d480e430-7706-11ee-83e6-1fae177f0183","v":"c60194cc-76f9-11ee-a217-d27f573e9749","t":620233880007,"h":"0bd276463af6e176ea3af90b6c379440b341db841242b761e91fc0c955ff4839"}
# {"u":"79a58cb9-7040-1031-936e-b82734280cdd","v":"c0248383-7706-11ee-944a-012d3c57827c","t":1698658438539,"h":"a3099b233bfc0bbcce0a98bbfbcd5a5d14ea875858afb1b9f5c62478cdb29269"}
# a2 = "WVkHBwdZFDcYEFoUW1tYFA0RIlkhAgcBMT89EiUFIRExEikcJhIyBSYrWBAlPz4EJDwAAiUsLRwmPyIBJT8xHyUsLVgxAgwDIQEfAQwBIV4hBS4EMQI5XSYsDxIkPAtaMgI5HCU8LgQyO1hcMTwiBSQ8PVwxAg8SMgU6AyY8DxIyKyEbIQY5AScCMRElLCESJRIPXCUsKR8mER8BCSshXiECMVomPzIAJgI5ESUvOgIlWjFbMT8lWCU/JRInPyERJz8lECU8MgUxEiYAJzwpETE8IV0nPCkfJgI9Eic8KREmPzIFJS8mAyY8BAMmAioEJiw5XTI/LQEOOVVVFBwaHQ0UW1hYFhYWFgdZB1lZWRQLHQ=="
a2 = "UAxQUAwMHD8QGFIcU1NQHAUZKlEpCg8JOTQHVC0KIg0tNCEULiQpUi4zUBgtNzYMLDQLGS0KKRQvJylSLiQICjk0C1AtNAwJKQkXCQQJKVYpDTUXLzQDGi40NgwsNDEZLgo1FC00Jgw6M1EILQoxUyw3Lg0uCggJLRopGi83KVAtGSkTKQ4xCS8KJVIvNClULhopGS0aNVUuCiETKQ0HCS8JKVIvJCYKOjc1Fy4aCA06CiYNLSQhUi4KIVEuNAQLLQ0lGi8nKVUvJDlRLQ0lUy03Mgs5NzlQOg01GS4kLgouDToJOiQqCi40AxgtGjVQOQ0tVC83JRgpDlBdHBQSFQUcU1BQHh4eHlBQUFBQUBwDFQ=="
a2 = "UFBQUFBQHAMVHh4eHlAMUFAMDBw/EBhSHFNTUBwFGSpRKQoPCTkKOVMtNCVULTQlFC4NLVEvI1AYLSQtGCw3JRo6JCUULgoLGS4nJVQ6CjYKORotGikJFwkECSlWKQoECS8kOVIvJAMaLDQxGi0NKRQtNCYMOjNRCS8kOggsNzoJOg0tFy4NKVE5GjUaOgkpEykOMQkvCiVSLzQpVS40BxctJAcZLSQlEykNBwkvCSlULQopUjkaC1Q5NAgKOQoMDTo3MVIvJClTLRomCy0kNRguJzlULzQyCi43NRktJAQLOic1FzkKKVM5CggLLicqCzokMgo5NAMaOjcuCy0KOgwuDSlVKQ5QXRwUEhUFHFNQUA=="
a2 = "UisrKytSUlIePRIaBgceUVFSHlQDU1BVAVcGWgQEAABaUFABWgABVlJbWlNaBgdXW1BUBgMDA1VRUgBRV1BTUwZbUFFWUwRaV1YBBFsAWlUBVgFYBxsoUgM1Uw4BUTAKADojCy0IJ1AtNi8bLTYFFSwIOxovGDhbHhYQFwceUVJSHBwcHFJSK1IrUh4BFxwcHBwrKysrK1IePRIaUB5RUVIeBxsoUysIDQstNStSLCYsCi8mARYsJjtSLAtSGi81NA4uNStWLSYBFiwlO1IsGAFXLCYnUy82OxgrCxULBgsrVCsPKxU4CCNWLBgzUS42M1AsJjsWLzYkDjgxUwovCAoOLjYzGC8mN1YsJTAILzYnVywxKxErDDMLLQgnUC02LxstNgUYLAg7GiwmLxErDwULLQsrGi02NAssUCQIOwgoCSwIBRUsNiQOOwg3Ujs1JA84CCNSOw8sCi8lL1AvDycVLAg3UC8YLxgsUDsbLxgzFTgmOA8tJTgJOw8nVzsYIAksJTdQOCYFVisMUl8eFhAXBx5RUlIcHBwcUisrK1IrUlIeUhwcHBxSKytSK1IeEQENEAceUh4ACwwDEBs="
a2 = "UisrUitSHhEBDRAHHlIeAAsMAxAbHBwcHCsrKysrUh49EhpQHlFRUh4HGyhTKwgNCywYNxo4Ji8VLyU3FiwmO1IsG1IaLzU0Di41JxUsNTMWLDY7Ujg2NxosJjtQLTYzVisLFQsGCytUKwgFViwYKAsvNg4LLjYzUCwmARYvNiQOODFSVi0lO1YuNiMaOCYBUiw1MAssGCdWLzErESsMMwstCCdQLTYvGy02BVAsCAVSLyYnESsPBQstCytTL1AnGi8IJ1YsJS8bLzUwDywPK1YvGCtWLzYKCC0mO1AsNTQPOCYvUjsIIA8sUDdXOw8oDi9QMxg7NjtXLSU7FS81LAssJTALLDU3FSwPMA4sGDQOKwxSXx4WEBcHHlFSUhwcHBxSKysrK1JSUh49EhoGBx5RUVIeAwdQVlZVA1dTVVpWU1YHUVQHWwcDAFRVVVJRUFRQVVBRUQFbWgBWAVAAAVBRV1VWA1pWAwdXBgQHWlBSAVsBUlgHGyhSAzVTDgFRMAoAOiMLLQgnUC02LxstNgUYLAgFGC02MFseFhAXBx5RUlIcHBwcUlIrUitSHgEXHBwcHFIrKytSK1JSHlI="
a2 = "B1lZWQcHWQcUNxgQDA0UW1tYFFxZCQ5RWF8KCVtfCV5QCVlbUVkMWFlcUQ5aDl0JDQ5RCQpeDl4LWlhbW11ZXlpcXQkJW1oOXQkJUQsLWFtfXV9SDREiWAk/WQQLWzoACjApAScCLVonPANdJjw9XSUSIVglEgxRFBwaHQ0UW1hYFhYWFgdZB1kHWRQbCwcaDRRYFAoBBgkaERYWFhYHWQdZWVkUCx0WFhYWWVkHBwdZFDcYEFoUW1tYFA0RIlkhAgcBJgIDEDECIgEnPCkcJywiAyYrWBAlPz4EJDwAASYCCxwlPD0fJTwxWic8D1syAiVZIQEfAQwBIV4hBT4BJi8yBCZaJVskPAsSJSwDHCU8LgQyO1kBMjw9ECQ/MVsyLDkSMj85HyYsA1wlOyEbIQY5AScCLVonPANdJjwxESUSIVglEgsbIQUPAScBIREyBSVZMi8lWzESDxIlWjlZJVo5EjEFIVslEjlcJgIPXCVaOgQlLAMRMQIyBDI/IgUnPDlbJz8yAzI/PVsnPC0RMgU+AzIvIVgyAiIAMRIPWzIsIVohBlhVFBwaHQ0UW1hY"
a2 = "KysrKytSHj0SGlAeUVFSHgcbKFMrCA0LLBg3GjgmLxUvJTcWLCY7UiwbUhovNTQOLjUnFSw1MxYsNjtSODY3GiwmO1AtNjNWKwsVCwYLK1QrCAVWLBgoCy82DgsuNjNQLCYBFi82JA44MVJWLSU7Vi42Ixo4JgFSLDUwCywYJ1YvMSsRKwwzCy0IJ1AtNi8bLTYFUCwIO1AtJiMRKw8FCy0LKAs4JjALOzYjVy8IOxU7NjQPLCYzUTglOxg7UDtXLCYoDzgIMxg4NiNTLBgBUDs2N1AsNSsaLFAsCS01JA4sCCNQOwgFViwYBVIsJigOLA8vGjsYN1crDFJfHhYQFwceUVJSHBwcHFJSK1IrUh4BFxwcHBxSKysrK1JSUh49EhoGBx5RUVIeA1NQVgBaAFdXV1pXAFFWV1RRA1pTV1VQWwAAAFFWVAMDA1IHU1EHU1ZVBlQHU1oGWgBXA1VWAwZWBFFVBgZTAVgHGyhSAzVTDgFRMAoAOiMLLQgnUC02LxstNgUYLAg7UC0mIFseFhAXBx5RUlIcHBwcUisrUitSHhEBDRAHHlIeAAsMAxAb"
a2 = "UisrUitSHhEBDRAHHlIeAAsMAxAbHBwcHCsrKysrUh49EhpQHlFRUh4HGyhTKwgNCzsINA8sJjsYLA87FiwmO1IsG1IaLzU0Di41J1MsJSsWLBgjUiwYM1csJglSOwgBGysLFQsGCytUKw8zFS01M1ctNjNTLjYzUCwmARYvNiQOODFTCiw2MAsuNjMYLyYGCi9QJxg4NScaOCErESsMMwstCDcYLzYzUiwIMxUvIRULAyErVCsICg4tJiQPLwgnGi8lJxosJg4POxg3FTg2MA4tNTtTLAg3Vzg1Oxo7UDAJOCYzVzsYOA4vGCtRO1AnGDgIN1MsJicYLTUnGDsPM1IvGDgPO1A7Gi8YAQsEM19fHhYQFwceUVJSHBwcHFIrK1IrUh4RAQ0QBx5SHgALDAMQGxwcHBxSKysrK1JSUh49EhoGBx5RUVIeUVRRU1JRBlEAVFJUA1pQV1QEB1VXBgFXVAcHUQQHVVVUBFFRV1paV1VSAVYHVgRUAVdXAAFQAFoAWgdbUFEGBlgHGyhSAzVTDgFRMAoAOiMLLQgnUC02LxstNgVTLBg3ViwIMFseFhAXBx5RUlIcHBwcUisrK1IrUlIeUhwcHBxSUitSK1IeARc="
a2 = "B1kHWVlZFAsdFhYWFllZBwcHWRQ3GBBaFFtbWBQNESJZIQIHATECIgAmEiFbJywpHCcsPREmK1gQJT8+BCQ/IV0nPA8cMiw9WiUCJVkmBTkSMTwlWiEBHwEMASFeIQUuACYSKVgnPAQDJDwPWSUCORwlPC4EMjtYXCYCIREkPAtaJRIlHyYCAxAlAg9bJQEhGyEGOQEnAi1bJSwpESU8KVolPAtaJSwLGyEFDwEnASIFJyw6BSY8IVomAjlcJywyAzECPVkxEj4AJywxXTIvIVwlWiUQJzwPWiYsLV0yPyYAJVouAjIvPVsnLAwAJy8tXCZaLgAlEgQFJjw9WCYsKRIlPANYIQZYVRQcGh0NFFtYWA=="
# a2 = "B1lZWQcHWQcUNxgQDA0UW1tYFFkJWF9dC1teXVAJXV5ZWQtfCl9dWVoLCVEODVhYUQldXg4LDl5QUFBYX1xbDVpeDl5aC19aWlwNDlEKW14KWFBSDREiWAk/WQQLWzoACjApAScCLVonPANdJjwPWCYSOVslEgxRFBwaHQ0UW1hYFhYWFllZBwcHWRQ3GBBaFFtbWBQNESJZIQIHASY8OgAyLyVZMjwpHCcsIgMxO1gQJT8+BCQ8D1wmLyUcJgItWTIsLVglWjFcJiwEASEBHwEMASFeIQI9ESY8DAMnPyICJDwPETIvLRwlPC4EMjtYXTE8MVskPy4AJyw5WiYFMgUyBTFaJgEhGyEGOQEnAi1aJzwDXSY8D1smEjlbJRILGyEFDwEnASICJi8tXSUFPVglWiYCJz8iBCU/MRAmLD0QJgU5WzI8OVwmPANaJjwxETIsAxEmPD1bJjwlESYCJVkxPyFZJhI5ECYSDxIxAilYJzw9WzIsIVwmLC1ZIQZYVRQcGh0NFFtYWBYWFhYHWQdZB1kUGwsHGg0UWBQKAQYJGhEWFhYWB1kHWVlZFAsd"
# 0III0I00 判断是否通过
b2 = base64.b64decode(a2.encode())
print(b2)
for i in bytes(encrypt(b2, 872 % 128)).decode().split('~~~~'):
print('o11o111o' in i, i)
cookies = bytes(encrypt(b2, 872 % 128)).decode()
cks = cookies.split('~~~~')
m = {}
for i in cks:
tmp = i.split('|')
m[tmp[0]] = tmp[1]
if tmp[0] == 'o111ooo1':
ts = tmp[1]
if tmp[0] == 'o111oooo':
num1 = int(tmp[1])
if tmp[0] == '111o1o':
num2 = tmp[1]
if tmp[0] == '1oooo1':
str1 = tmp[1]
if tmp[0] == 'o1oo1o':
vid = tmp[1]
if tmp[0] == 'o11o11':
sid = tmp[1]
if tmp[0] == '11o111':
cs = tmp[1]
if tmp[0] == 'o11o11oo':
cts = tmp[1]
uuid = '2aa06a90-82bd-11ee-ae7a-078ea3dc1a7a'
print( json.dumps([sid, vid, ts, num1, num2, str1, uuid]))
for i in bytes(encrypt(b2, 872%128)).decode().split('~~~~'):
print('0III0I00'in i, i)
'''
cs 76873d4d057ac0dd8994181324b5ccae4e40db09ff250771ce27da0cded7c668
pc 6436453416678071
sid a6689d3e-76f1-11ee-86c3-f32ba2ba6487󠄱󠄶󠄹󠄸󠄶󠄴󠄹󠄰󠄷󠄴󠄶󠄳󠄳
vid a668952e-76f1-11ee-86c3-0367edfc9861
cts a668a00e-76f1-11ee-86c3-f32ba2ba6487
I00II0|1|14e8b370-46df-11ee-9636-9d314c873224|8721|1627b0d797dbd3f6b58b265bcbe1d06f1982137a1c5b07061977272fce900d5f87bbf14528372ba6de2e9a2adb2e6667be0a672b1cfd53ff0d1cbee2d0700f5e_<<=:|0|NA
IIIII0|_px2|330|eyJ1IjoiYjIyYWI2MTEtNmM1OC0xMDMxLTlhNDAtZjU0MDBjNjdkNjMwIiwidiI6ImY0NmNhZmE1LTQ2ZGUtMTFlZS05MWM0LTRiYWRkZmE1YjNlMyIsInQiOjE2OTMzNjM3NDM3NTEsImgiOiJjMmY1ZjQ5Y2JhNjRhODBjN2I5ZWRlYzU3YjVlZDJkY2IxZjMzMDc1MTJhZTQ3NzIyYzlhY2VjZTQ0YjgyYmVkIn0=|true|300
I0I0I0|1|3f843d1f8022e5c954c8356388d1264949df69eccba81acf1447ff2ac806|606ac27aab15093b4bc5a307f293804843fc22ccd81c128cdce88448b7bc42c7|17|false
I00III|15041159139452913395
00I0I0|cu
IIII0I|ccc:300
IIIIII|cc|60|U2FtZVNpdGU9TGF4Ow==
0III00I0|14e5e081-46df-11ee-be3b-6b4862687642|true
IIIIII|rf|60|1
0III0II0|7500
0III0III|1693363443751
IIII00|cjnapsvd4thn7uq9lgm0
I0I0II|14e5dd68-46df-11ee-be3b-6b4862687642
IIIIII|fp|60|1
00III0|86809e0cf02a54019055668b6cd60d5f437718e85c33cbadb17c156f134514b5
'''
\ No newline at end of file
import random
import requests
import tls_client
session = tls_client.Session(client_identifier='chrome_117')
import json
h = {"authority": "www.spirit.com", "x-dtpc": "8$216560782_634h19vKIAKIMFGTUTKRWPPLDKCSORJAIECKGLH-0e0", "accept": "application/json, text/plain, */*", "cache-control": "no-cache", "content-type": "application/json", "origin": "https://www.spirit.com", "sec-ch-ua-mobile": "?0", "sec-fetch-dest": "empty", "sec-fetch-site": "same-origin", "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkb3RSZXpXZWIiLCJqdGkiOiI1ZDVjMzMwYi0zY2Y5LTk2OGYtYzczMC00YWQzMjQxOGQwNWEiLCJpc3MiOiJkb3RSRVogQVBJIn0.HpPtd8CGO_q68CzE9ZWoWE90DBHijl-oNij-LyWlo4I", "cookie": "userCountryLocation=AR; userGeolocation=-60.05, -26.93; _pxhd=15b0ff658780101e092b98c6aceae11673b227ca11674ff492f70664c1ec63bf:d393e8ff-839b-11ee-a10d-8a5d926cbf1e; _abck=59FF424FECF1548CE4CA3273E2AC3F7F~-1~YAAQJGdNaLYSprOLAQAAUVZg0gq/wtHFjxoACRuTBoFMhvKmaDaRKxymtaN/B0mS6LPXzXzqK3iEzb+eyrCqEkr2JBjBbJptIBRuSN7x9OPpj0LSPlAKCSUuSZp0nYODhXImF5dBYkZfU865128iwvkS+AFD+FmiiXI256Kg4bJUhUcrwcbRqdNnhZHBZyTfnJ8eX/K10NuT2yVPcKudgCbqLXG+xR5RR6s7UIC5X7cy09KtGd7yjuRQIZBwqu1YgOmHNwoRLwtuMydvj1mOrTqZIHthyvf4O2jOSMyUBx+870DuPb5bRR/wW3WfqtXPuRU26CpuqXNuZD65RjBdIy42Yq6qbNFDKcrWJCdwa4rZnsC10A3Lfxg7IoE/QreMPJ1+D5426IaN13A1DJJRvXwChwDDDwiYJw==~0~-1~1700045170; ak_bmsc=16F872B284D7D742D9B440904D6EA8A4~000000000000000000000000000000~YAAQXv4ZuFAAG66LAQAAvtpf0hU2r0zOeWQG5RyW0r/pzvM4bnWCM8hssZ5GqvIio/0B7JLo1SP23y0gDrS+6pYwQx8jKwbMA85JsRz2+mDO3wbMDo0W5Efcy2HAhYyUrdgaVs9dfTJ3nknuc/3ncQ1J1gKKYCVPS+bIc/ycddble1Qaazt+W3gmQvoUP2doOdGvB2k96pk6ckz++AeCFdYksw8VifpCxZcKpqu4QH3Rr/8t6E+OCOJFHi5YniuAkTRQiywd/CUMRMfDRGrp3mAgPBNPR8GKEnmRkrC3D4w4fASAA/BwTBzVEcJ3WZQDTgtW3XvOUCjwj+9B+s//Kv0HwZaW6jphGkzLR3zobtkfaWuXBOWF3KdeqWYoJByhztwsn6qwtmqRJ7ZrB5uY8ElEUDmIGDEXJgWOd5A6N8+h; bm_sz=41D6A48AB3A675E3129F11F8629811A1~YAAQXv4ZuFIAG66LAQAAv9pf0hUt8DdIKXHR/qb2oB4CYFt3B7Cf5UygYX/z1yirMll3l8nyheKWMaQHSMZGtLN5mmkFPtCl16BB3WoQjaGmxkZxZ/VW9xZ4FPRL9BRu1IYCQoqFuaM1UpoDuuhOwpEVAu1MiWpypNEEVG9Dwn6OIlIs2rBGR6Nd4ky+QjB6gZG4Zy0xICm76xV/kdbGXAPJL3J19+/zwSkRX6vm2Qb9jS9edWNuo2TV3qn7WPNObNFrsKPamGfI9WsQ6CyY8faXjKiP3l/cyl3EDnQIa2RNbK4=~3551800~3617861; bm_mi=64A697FE32B0A492C0FB99C37CEF7C15~YAAQXv4ZuOEAG66LAQAAfCJg0hVmmg3DZLj/sgYb7PfTXLRMbqCBYyaNpcWuG+jiOnmUHcCGo7KuvcBHv0gspebyECw5g45XgA93Zbf3RqG1KM2duItD3BAxIt0uips+6TkKIKT5ocejTu8BwAHk596WrKDUfA8sWIUjBhdgdiK/7NhmPhhqHTfliDC9/3Iec0pxzDCBlpJqQxpyBGASJcVO2bDQvpUesHkfCBDo983wkvMDopzE9fYOPTG4GuiL2F7zg9hpeG5G1bb08bc/R9bdOHmKdaEBe4pGhyzmq4TeDQAc2IcYlFG9wWC7OFJBp1Z0+Nt3~1; bm_sv=7441A40BE0D728C8E6CF542453E15853~YAAQXv4ZuCIBG66LAQAA1EJg0hU+T+fSZWalU5WEg8eI7jsbaeHmkUuu+rBtUZ6Swo09x+IkRJD9fiTH6jkQAmWcZiwHIPu3UNWzXmdcAKRLnzHAUHaAB8/zGeRfG7eLeIN10VpaHSHMYQg30ycMV9vkC7oTjGnNfeBxk17d+Qw2vb0i6llEtuVUnKYOlsiznYyjfW2wYSWL2KyWiEsiS/ygNTiVnEuOXISwJDbO0OaZ0u4gM8WfxWrj7B/Tt87r~1; _pxde=565ab764e281018491e165254b15ec4fa4b0dfe3fe89b301a514b42fbcfbce0e:eyJ0aW1lc3RhbXAiOjE3MDAwNDE2MDc0MDB9; _pxvid=d393e8ff-839b-11ee-a10d-8a5d926cbf1e; pxcts=e3e68da1-839b-11ee-948d-0a2043fa075e; _px2=eyJ1IjoiZjFjZDM2MDctM2NkMi00ZGRkLTg1MTQtOGMwZjNjYWYxYzFmIiwidiI6ImQzOTNlOGZmLTgzOWItMTFlZS1hMTBkLThhNWQ5MjZjYmYxZSIsInQiOjE3MDAwNDE5MDczOTksImgiOiJjOWYzOGM4M2U4Nzk0NzI1ZTBkOTkwMzBmYmUxMDg0ODkyOGUwNTQ1MTdhOWRjM2FjOTNhMDcxMjJhNGNkZDIyIn0=", "sec-ch-ua": "\"Google Chrome\";v=\"117\", \"Not;A=Brand\";v=\"8\", \"Chromium\";v=\"117\"", "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-language": "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7,ru;q=0.6", "ocp-apim-subscription-key": "dc6844776fe84b1c8b68affe7deb7916", "pragma": "no-cache", "referer": "https://www.spirit.com/", "sec-ch-ua-platform": "\"macOS\"", "sec-fetch-mode": "cors"}
url = "https://www.spirit.com/api/prod-availability/api/availability/search"
data = {
"includeWifiAvailability": True,
"criteria": [
{
"stations": {
"originStationCodes": [
"SJC"
],
"destinationStationCodes": [
"BNA"
],
"searchDestinationMacs": False,
"searchOriginMacs": False
},
"dates": {
"beginDate": "2023-11-17",
"endDate": "2023-11-17"
},
"filters": {
"filter": "Default"
}
}
],
"passengers": {
"types": [
{
"type": "ADT",
"count": 1
}
]
},
"codes": {
"currency": "USD"
},
"fareFilters": {
"loyalty": "MonetaryOnly",
"types": [],
"classControl": 1
},
"taxesAndFees": "TaxesAndFees",
"originalJourneyKeys": [],
"originalBookingRecordLocator": None,
"infantCount": 0,
"birthDates": []
}
data = json.dumps(data, separators=(',', ':'))
prox = f'http://unfflcc:76cc14-47b8dd-1f8ace-827836-0c740e@usa.rotating.proxyrack.net:{random.randint(10000, 13500)}'
prox = 'http://unfflcc:76cc14-47b8dd-1f8ace-827836-0c740e@usa.rotating.proxyrack.net:10395'
prox = 'http://unfflcc:76cc14-47b8dd-1f8ace-827836-0c740e@usa.rotating.proxyrack.net:10855'
prox = 'http://user-uni001-region-us-sessid-1058-sesstime-5-keep-true:q39CEBTs5A5YQXor@pr.roxlabs.cn:4600'
response = requests.post('http://52.52.23.116/tls/forward',
json=dict(url=url,method="POST", data=data, proxy=prox, headers=h, debug=True)
)
# response = session.post(url, headers=h, data=data, proxy={
# # 'http':'http://127.0.0.1:7890',
# # 'https':'http://127.0.0.1:7890',
# 'http': prox,
# 'https':prox,
# })
print(response.text)
print(response)
import requests
import random
import tls_client
session = tls_client.Session(client_identifier='chrome_117')
session.proxies = {
'http': 'http://127.0.0.1:7890',
'https': 'http://127.0.0.1:7890',
}
session = tls_client.Session(client_identifier='chrome_112')
prox = f'http://unfflcc:76cc14-47b8dd-1f8ace-827836-0c740e@usa.rotating.proxyrack.net:{random.randint(10000, 13500)}'
cks = '_pxvid=8a03a16b-8521-11ee-a3bf-ecacdfb43743; pxcts=8a03b045-8521-11ee-a3bf-e922253e740e; _px2=eyJ1IjoiOTg0ZjIzYjItYmMyOC00MmZjLTgyODAtYzE2YTY3ODdkYWJlIiwidiI6IjhhMDNhMTZiLTg1MjEtMTFlZS1hM2JmLWVjYWNkZmI0Mzc0MyIsInQiOjYyMDIzMzg4MDAwNCwiaCI6IjVlZmNkMjRjMjA1NDNlZjMxMTEzODhiZWFjNjcwNDhjNTM4ZWVjYTQxMTg4YzNhYTFlNDhkNDRjYWUxZGYyNzkifQ=='
prox = 'http://user-uni001-region-us-sessid-1111-sesstime-5-keep-true:q39CEBTs5A5YQXor@pr.roxlabs.cn:4600'
prox = 'http://unfflcc:76cc14-47b8dd-1f8ace-827836-0c740e@usa.rotating.proxyrack.net:9000'
# prox = 'http://127.0.0.1:7890'
session.proxies = {
'http': prox,
'https': prox,
}
# session.proxies = {
# 'http': "http://unfflcc:76cc14-47b8dd-1f8ace-827836-0c740e@usa.rotating.proxyrack.net:11400",
# 'https': "http://unfflcc:76cc14-47b8dd-1f8ace-827836-0c740e@usa.rotating.proxyrack.net:11400",
# }
headers = {
url = 'https://booking.flyfrontier.com/Flight/InternalSelect?o1=DEN&d1=LAS&dd1=2023-11-30&ADT=1&umnr=false&mon=true'
response = session.post('http://52.52.23.116/tls/forward',
json=dict(url=url, headers={
"authority": "booking.flyfrontier.com",
"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",
"accept-language": "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7,ru;q=0.6",
"accept-language": "en-US,en;q=0.9",
"cache-control": "no-cache",
"pragma": "no-cache",
"sec-ch-ua": "\"Google Chrome\";v=\"117\", \"Not;A=Brand\";v=\"8\", \"Chromium\";v=\"117\"",
......@@ -29,49 +23,14 @@ headers = {
"sec-ch-ua-platform": "\"macOS\"",
"sec-fetch-dest": "document",
"sec-fetch-mode": "navigate",
"sec-fetch-site": "same-origin",
"sec-fetch-site": "none",
"sec-fetch-user": "?1",
"upgrade-insecure-requests": "1",
"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"
}
headers['cookie'] = '__RequestVerificationToken=Ojq1p9eTSWblC7ZnyRX6nlnf6e1lu5_7_5wqCdvIWuGfAzclsdRZjLxjG6zLhsr87tvksSGOVqrf8PAmVebX0iFOtMWHX3qkgLQHoD4lmP0SjMTz8mkgz0a9h5EGsVb4zVBZ8Q2; _pxhd=1973aceac036e1fbc45c49fbdb15b150db31b37e409c3f405c28f488a2374d02%3A8ca0ee3a-82d3-11ee-a6dd-c3ba265ec622; pxcts=8eae10ff-82d3-11ee-ac21-5e6cfda4af37; _pxvid=8ca0ee3a-82d3-11ee-a6dd-c3ba265ec622; _px2=eyJ1IjoiOGRmNGUwMTAtODJkMy0xMWVlLThiNTQtYjkxZjM2ODI5MzUwIiwidiI6IjhjYTBlZTNhLTgyZDMtMTFlZS1hNmRkLWMzYmEyNjVlYzYyMiIsInQiOjYyMDIzMzg4MDAwNCwiaCI6IjMwYzU4OTBlMDdmNjFkZmE5NTk3YWMzZmRkY2UzZjg1ZDg1NDQ0NTQzNzg3YTJkYzAyOTJjZDUwODYwOTc2N2UifQ%3D%3D'
# cks = {'_px2': 'eyJ1IjoiOTY0ODdjMzAtNzk4OC0xMWVlLTgxYTktMjUyZjY0MDdjMTYxIiwidiI6Ijk3NmYxYzBlLTc5ODgtMTFlZS1iODYwLTAyNTVmY2JmZTU2MCIsInQiOjYyMDIzMzg4MDAwNCwiaCI6ImViY2U4ZmQ2ZjA3ZGIxNTkxY2YzMmI0MTg3OTcwZWI5NGY5ZDZkN2I2YjY4NGUxZjJiMjE2MGZlZjQxYWI0MzQifQ==', '_pxvid': '976f1c0e-7988-11ee-b860-0255fcbfe560', 'pxcts': '976f338c-7988-11ee-b860-865043e6e7b4'}
# cks = {}
# cookies.update(
# # {'_pxhd': '728b2d129b5a075513034298f8e2d4ce004425c1f307bd2baa8e9525fa6bb510:4290832e-77db-11ee-bdfb-76e73743688f', '_pxvid': '4290832e-77db-11ee-bdfb-76e73743688f', '_px2': 'eyJ1IjoiYjllMjlkNjEtNzA0MC0xMDMxLTk3ZjUtMjVlOTU0YzUxNGU5IiwidiI6IjQyOTA4MzJlLTc3ZGItMTFlZS1iZGZiLTc2ZTczNzQzNjg4ZiIsInQiOjE2OTg3NDk3MTE3OTksImgiOiIwZmZiOTUwNjRhODJiNzg4Yjg5YzQ1NDMzZThhMWQ5ZjQwNTY3NzcxNjU5MGY5Mjc0ZGNmYWIxY2MwN2RhMzZhIn0=', 'pxcts': '43453788-77db-11ee-a37b-78e6fe245189'}
#
# )
url = "https://booking.flyfrontier.com/Flight/InternalSelect?o1=DEN&d1=LAS&dd1=2023-11-30&ADT=1&umnr=false&mon=true"
# , cookies=cks
response = requests.post('http://52.52.23.116/tls/forward', json=dict(url=url,headers=headers, method="GET", proxy=prox, debug=True
"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",
"cookie": cks
}, method="GET", proxy=prox, debug=True
# ,allow_redirects=True
))
# response = session.get(url, headers=headers, params=params
# # , cookies=
# # {
# # '_pxhd': 'e33ffa239c65b81580fac5ff09060127bd0d0473a764327efb3b6fe47e696b6b:7750d29f-81d0-11ee-bcac-2b37f29a1872',
# # 'pxcts': '78fa88a4-81d0-11ee-9190-18bd99a3852f',
# # '_pxvid': '7750d29f-81d0-11ee-bcac-2b37f29a1872',
# # '_px2': 'eyJ1IjoiNzc3OGYzMjAtODFkMC0xMWVlLTkyMGItOGZjZTQ5ZmUwMzRhIiwidiI6Ijc3NTBkMjlmLTgxZDAtMTFlZS1iY2FjLTJiMzdmMjlhMTg3MiIsInQiOjYyMDIzMzg4MDAwNCwiaCI6IjkwMWYwZDNiMzU0ZjA0ZDMwZjQxNTVmODgxNjcyMjBjOWNjZDY0MTg4YzNiNDhmZDZiZWU1OWJkMjBkODM1MzYifQ=='}
#
# , allow_redirects=False)
print(response.text)
print(response.url)
print(response.json()['status_code'])
print(response.json()['text'])
response = response.json()
print(response['status_code'])
print(response['text'])
\ No newline at end of file
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