Commit 7ee4b71f authored by wang's avatar wang

开始按压验证码

parent 29b5bbba
......@@ -97,12 +97,12 @@ function createPX1132(hash, hash2, hashv) {
puzzleHelperVars: u,
targetHash: v
})
if (t){
if (t) {
console.log({
index: e,
puzzleHelperVars: u,
targetHash: v
})
index: e,
puzzleHelperVars: u,
targetHash: v
})
}
if (t) return t;
......@@ -250,7 +250,7 @@ function createPX11926() {
"PX11699": performanceNow(randomInt(100, 200)),
"PX12270": "true"
})
}else{
} else {
res.push({
"PX12343": "mouseover",
"PX11652": 1,
......@@ -280,107 +280,6 @@ function genPayload(uuid, vid, hash, hash2, hashv, token, ci, init_time) {
let startX = randomInt(820, 820 + 50);
let startY = randomInt(428, 428 + 30);
let startT = randomInt(40256, 40256 * 0.8);
let PX11547 = {
// canvas 相关
"PX12492": "78f763eab3a2082c63c66cf47f9e05a0",
"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": "155544ea72c7d7c945942b868512c4bf", // m.storage.estimate()
"PX12491": "7523bf6e5dcadcffdae6b3063827e345",
"PX11386": ["webdriver"],
"PX12525": "c18d06246c690fb8ad9b48da91f15244",
"PX12526": "dce55f9ff67647ad6cebc7ee410e4b00",
"PX11948": 1,
"PX11685": 10,
"PX11986": true,
"PX12299": true,
"PX12331": true,
"PX11316": false,
"PX11448": true,
"PX12196": "missing",
"PX12427": ["_pxVid", "_pxUuid", "_pxAppId", "_pxHostUrl", "_pxCustomLogo", "_pxJsClientSrc", "_pxFirstPartyEnabled", "_pxDisplayErrorMessage", "_pxToggleOpenForm", "_pxUuidCopyToClipboard", "_pxSubmitForm", "_pxItemSelected", "_pxAction", "_pxMobile", "_Vb73hTEghandler", "_pxInit"],
"PX11842": [],
"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": Date.now() + '',
"PX12228": "TypeError: Cannot read properties of null (reading '0') at Be (https://client.perimeterx.net/PXVb73hTEg/main.min.js:855:13) at func (https://client.perimeterx.net/PXVb73hTEg/main.min.js:4925:19) at Ee (https://client.perimeterx.net/PXVb73hTEg/main.min.js:903:13) at https://client.perimeterx.net/PXVb73hTEg/main.min.js:5097:13",
"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": "",
"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": new Date() + '',
"PX11540": true,
"PX11539": "",
"PX11555": 4294705152,
"PX12527": "3207084bd110f1ac964863e23aa78e04",
"PX11484": [],
"PX12501": md5(vid),
"PX11902": 3,
"PX11560": performanceNow(0),
"PX11719": true,
"PX12280": Date.now() - parseInt(Math.random() * 500 + 2000),
"PX11496": uuid,
"PX12564": null,
"PX12565": -1,
"PX11379": false,
"PX12307": "PX11745",
"PX11668": "pxhc",
"PX12348": false,
"PX11645": "https://booking.flyfrontier.com/Flight/Select"
};
let PX12123 = {
"PX12108": startX,
"PX12414": startY,
"PX11984": "TypeError: Cannot read properties of null (reading '0')\n at Be (https://client.perimeterx.net/PXVb73hTEg/main.min.js:855:13)\n at Dc (https://client.perimeterx.net/PXVb73hTEg/main.min.js:3100:101)\n at https://client.perimeterx.net/PXVb73hTEg/main.min.js:3110:13\n at HTMLBodyElement.$C_bSE (https://captcha.perimeterx.net/PXVb73hTEg/captcha.js?a=c&u=e3b0b7b4-461f-11ee-a066-62465543537a&v=&m=0:1854:29)",
"PX12303": "mouseover",
"PX11699": startT,
"PX11987": "true",
"PX12461": true,
"PX11652": "#px-captcha-wrapper>DIV:nth-child(1)>DIV:nth-child(2)",
"PX11902": 4,
"PX11560": performanceNow(randomInt(2000, 3000)),
"PX11719": true,
"PX12280": Date.now() - parseInt(Math.random() * 500 + 2000),
"PX11496": uuid,
"PX12564": null,
"PX12565": -1,
"PX11379": false,
"PX12307": "PX11745",
"PX11668": "pxhc",
"PX12348": false
}
;
let PX11945 = parseFloat((287.17 + Math.random() * 10).toFixed(2));
let PX12174 = parseFloat((21.32 + Math.random() * 3).toFixed(2));
......@@ -392,7 +291,7 @@ function genPayload(uuid, vid, hash, hash2, hashv, token, ci, init_time) {
"PX11933": true,
"PX11454": "visible",
"PX12099": "4YCJ4YGQ4YCa4YCG4YCf4YCe4YGQ4YGI4YGD4YGe4YGQ4YCa4YCX4YCT4YCW4YGQ4YGI4YGD4YGe4YGQ4YCf4YCX4YCG4YCT4YGQ4YGI4YGB4YGe4YGQ4YCG4YCb4YCG4YCe4YCX4YGQ4YGI4YGD4YGe4YGQ4YCB4YCR4YCA4YCb4YCC4YCG4YGQ4YGI4YGG4YGe4YGQ4YCB4YCG4YCL4YCe4YCX4YGQ4YGI4YGB4YGe4YGQ4YCQ4YCd4YCW4YCL4YGQ4YGI4YGD4YGe4YGQ4YCW4YCb4YCE4YGQ4YGI4YGA4YGG4YGe4YGQ4YCQ4YCA4YGQ4YGI4YGD4YGe4YGQ4YCB4YCC4YCT4YCc4YGQ4YGI4YGF4YGe4YGQ4YCQ4YCH4YCG4YCG4YCd4YCc4YGQ4YGI4YGB4YGe4YGQ4YCB4YCE4YCV4YGQ4YGI4YGD4YGe4YGQ4YCV4YGQ4YGI4YGB4YGe4YGQ4YCC4YCT4YCG4YCa4YGQ4YGI4YGG4YGe4YGQ4YCU4YCd4YCA4YCf4YGQ4YGI4YGD4YGe4YGQ4YCb4YCc4YCC4YCH4YCG4YGQ4YGI4YGG4YGe4YGQ4YCe4YCT4YCQ4YCX4YCe4YGQ4YGI4YGG4YGe4YGQ4YCa4YGG4YGQ4YGI4YGD4YGe4YGQ4YCG4YCX4YCK4YCG4YCT4YCA4YCX4YCT4YGQ4YGI4YGD4YCP",
"PX11699": performanceNow(randomInt(10,20)),
"PX11699": performanceNow(randomInt(10, 20)),
"PX1133": 479975.60000002384,
// "PX1132": "9070627c1aacaba969ef060613099afeba063d308a0f2cce94d09c4cb0e7c90d",
"PX1132": createPX1132(hash, hash2, hashv),
......@@ -485,7 +384,7 @@ function genPayload(uuid, vid, hash, hash2, hashv, token, ci, init_time) {
"PX11933": true,
"PX11454": "visible",
"PX12099": "4YCJ4YGQ4YCa4YCG4YCf4YCe4YGQ4YGI4YGD4YGe4YGQ4YCa4YCX4YCT4YCW4YGQ4YGI4YGD4YGe4YGQ4YCf4YCX4YCG4YCT4YGQ4YGI4YGB4YGe4YGQ4YCG4YCb4YCG4YCe4YCX4YGQ4YGI4YGD4YGe4YGQ4YCB4YCR4YCA4YCb4YCC4YCG4YGQ4YGI4YGG4YGe4YGQ4YCB4YCG4YCL4YCe4YCX4YGQ4YGI4YGB4YGe4YGQ4YCQ4YCd4YCW4YCL4YGQ4YGI4YGD4YGe4YGQ4YCW4YCb4YCE4YGQ4YGI4YGA4YGG4YGe4YGQ4YCQ4YCA4YGQ4YGI4YGD4YGe4YGQ4YCB4YCC4YCT4YCc4YGQ4YGI4YGF4YGe4YGQ4YCQ4YCH4YCG4YCG4YCd4YCc4YGQ4YGI4YGB4YGe4YGQ4YCB4YCE4YCV4YGQ4YGI4YGD4YGe4YGQ4YCV4YGQ4YGI4YGB4YGe4YGQ4YCC4YCT4YCG4YCa4YGQ4YGI4YGG4YGe4YGQ4YCU4YCd4YCA4YCf4YGQ4YGI4YGD4YGe4YGQ4YCb4YCc4YCC4YCH4YCG4YGQ4YGI4YGG4YGe4YGQ4YCe4YCT4YCQ4YCX4YCe4YGQ4YGI4YGG4YGe4YGQ4YCa4YGG4YGQ4YGI4YGD4YGe4YGQ4YCG4YCX4YCK4YCG4YCT4YCA4YCX4YCT4YGQ4YGI4YGD4YCP",
"PX11699": performanceNow(randomInt(10,20)),
"PX11699": performanceNow(randomInt(10, 20)),
"PX755": ci,
"PX12057": "pxCaptcha",
"PX11490": "www.flyfrontier.com",
......@@ -506,37 +405,37 @@ function genPayload(uuid, vid, hash, hash2, hashv, token, ci, init_time) {
;
let PX12419 = {
"PX12040": [
// {
// "PX12343": "mousemove",
// "PX12270": "true",
// "PX12301": `${startX},${startY},${startT}`
// },
// {
// "PX12343": "mouseout",
// "PX12270": "true",
// "PX11427": 380.5625, // top
// "PX12208": 291.5,// left
// "PX11652": 2,
// "PX11824": 530, // width
// "PX11631": 48, // height
// "PX12165": "div",
// "PX12108": randomInt(818, 818 + 30), //
// "PX12414": randomInt(429, 429 + 30),
// "PX11699": 490257
// },
// {
// "PX12343": "mouseout",
// "PX12270": "true",
// "PX11427": 256.5,
// "PX12208": 291.5,
// "PX11652": 3,
// "PX11824": 530,
// "PX11631": 340,
// "PX12165": "div",
// "PX12108": randomInt(1111, 1111 + 100),
// "PX12414": randomInt(324, 324 + 30),
// "PX11699": 498929
// }
// {
// "PX12343": "mousemove",
// "PX12270": "true",
// "PX12301": `${startX},${startY},${startT}`
// },
// {
// "PX12343": "mouseout",
// "PX12270": "true",
// "PX11427": 380.5625, // top
// "PX12208": 291.5,// left
// "PX11652": 2,
// "PX11824": 530, // width
// "PX11631": 48, // height
// "PX12165": "div",
// "PX12108": randomInt(818, 818 + 30), //
// "PX12414": randomInt(429, 429 + 30),
// "PX11699": 490257
// },
// {
// "PX12343": "mouseout",
// "PX12270": "true",
// "PX11427": 256.5,
// "PX12208": 291.5,
// "PX11652": 3,
// "PX11824": 530,
// "PX11631": 340,
// "PX12165": "div",
// "PX12108": randomInt(1111, 1111 + 100),
// "PX12414": randomInt(324, 324 + 30),
// "PX11699": 498929
// }
],
"PX12170": "PX11994",
"PX11934": "https://www.flyfrontier.com/",
......@@ -565,23 +464,17 @@ function genPayload(uuid, vid, hash, hash2, hashv, token, ci, init_time) {
"PX11668": "pxhc",
"PX12348": false
};
let data = [{
"t": "PX11547",
"d": PX11547
}, {
"t": "PX12123",
"d": PX12123
}, {
"t": "PX561",
"d": PX561
}, {
"t": "PX11782",
"d": PX11782
}, {
"t": "PX12419",
"d": PX12419
}]
let data = [
{
"t": "PX561",
"d": PX561
}, {
"t": "PX11782",
"d": PX11782
}, {
"t": "PX12419",
"d": PX12419
}]
return data;
}
......
......@@ -9,19 +9,19 @@
</head>
<body>
<script>
window._pxVid = 'dda98c53-88fe-11ee-b1d0-462e4e6aaa17';
window._pxUuid = '304283c8-4d90-49cd-84b3-39b091404f5c';
window._pxVid = '';
window._pxUuid = '6d650541-8ab1-11ee-bff9-5ba7b1e8c527';
window._pxAppId = 'PXVb73hTEg';
window._pxHostUrl = 'https://collector-PXVb73hTEg.perimeterx.net';
window._pxCustomLogo = '';
window._pxJsClientSrc = '//client.perimeterx.net/PXVb73hTEg/main.min.js';
window._pxFirstPartyEnabled = 'false';
var script = document.createElement('script');
script.src = '//captcha.perimeterx.net/PXVb73hTEg/captcha.js?a=c&u=304283c8-4d90-49cd-84b3-39b091404f5c&v=dda98c53-88fe-11ee-b1d0-462e4e6aaa17&m=0';
script.src = '//captcha.perimeterx.net/PXVb73hTEg/captcha.js?a=c&u=6d650541-8ab1-11ee-bff9-5ba7b1e8c527&v=&m=0';
document.head.appendChild(script);
script.onerror = function () {
script = document.createElement('script');
script.src = 'https://captcha.px-cloud.net/PXVb73hTEg/captcha.js?a=c&u=304283c8-4d90-49cd-84b3-39b091404f5c&v=dda98c53-88fe-11ee-b1d0-462e4e6aaa17&m=0';
script.src = 'https://captcha.px-cloud.net/PXVb73hTEg/captcha.js?a=c&u=6d650541-8ab1-11ee-bff9-5ba7b1e8c527&v=&m=0';
script.onerror = window._pxDisplayErrorMessage;
document.head.appendChild(script);
};
......
import base64
import ctypes
import hashlib
import hmac
import json
import random
import re
import time
import traceback
import requests
import tls_client
from loguru import logger
from env import PxEnv
from utils import PxUtils
# with open('js/encodepayload.js', 'r', encoding='utf-8') as f:
# jsCode = f.read()
# # ctx = execjs.compile(jsCode)
# # ctxPC = execjs.compile(open('pc.js').read())
# ctxStep2 = execjs.compile(open('step2.js').read())
def get_timestamp():
return int(time.time() * 1000)
def unsinged_right_shift(x, y):
x, y = ctypes.c_uint32(x).value, y % 32
return ctypes.c_uint32(x >> y).value
class PxCaptchaBypass():
# PX11431 o111ooo1
ts: str = ''
cs: str = ''
# PX15454 o111oooo
num1: int = ''
# PX11701 111o1o
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())
# session = requests.Session()
session.proxies = {
'http': 'http://127.0.0.1:7890',
'https': 'http://127.0.0.1:7890',
}
session.proxies = {
'http': "http://unfflcc:76cc14-47b8dd-1f8ace-827836-0c740e@usa.rotating.proxyrack.net:9000",
'https': "http://unfflcc:76cc14-47b8dd-1f8ace-827836-0c740e@usa.rotating.proxyrack.net:9000",
}
# session.proxies = {
# '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',
# }
prox = 'http://b6b6b6b6-zone-custom-region-us-session-130oj36t4-sessTime-5:bpoMDFG5oD@na.ipidea.io:2333'
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'
session.proxies = {
'http': prox,
'https': prox,
}
tag = "v8.7.2"
ft = "317"
appId = "PXVb73hTEg"
cookies = {}
def __init__(self, target_url):
self.pxHeaders = {
"Host": "collector-pxvb73hteg.px-cloud.net",
"pragma": "no-cache",
"cache-control": "no-cache",
"sec-ch-ua": "\"Google Chrome\";v=\"117\", \"Not;A=Brand\";v=\"8\", \"Chromium\";v=\"117\"",
"sec-ch-ua-platform": "\"macOS\"",
"sec-ch-ua-mobile": "?0",
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36",
"content-type": "application/x-www-form-urlencoded",
"accept": "*/*",
"origin": "https://booking.flyfrontier.com",
"sec-fetch-site": "cross-site",
"sec-fetch-mode": "cors",
"sec-fetch-dest": "empty",
"referer": "https://booking.flyfrontier.com/",
"accept-language": "en-US,en;q=0.9"
}
self.pxUrl = f"https://collector-{self.appId}.px-cloud.net/api/v2/collector"
self.pxUrl = f"https://collector-{self.appId}.px-cloud.net/assets/js/bundle"
self.target_url = target_url
self.log = logger.bind(module_name='px')
self.log.info(f'proxy: {self.prox}')
def inc(self):
self.seq += 1
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}')
self.log.info(f"gen Payload {self.uuid}, {self.ts}")
# payload = ctx.call('encodePayload', data_str, self.uuid, self.ts)
payload = PxUtils().encode_payload(payload=data_str, uuid=self.uuid, ts=self.ts)
self.log.info(f'payload {payload}')
pc = self._gen_pc(data_str, f'{self.uuid}:{self.tag}:{self.ft}')
body = {
"appId": self.appId,
"tag": self.tag,
"uuid": self.uuid,
"ft": self.ft,
"seq": self.seq,
"en": "NTA",
"pc": pc,
"rsc": self.rsc,
"payload": payload,
}
body = self.update_sid_vid(body)
self.log.info(f'postBody {json.dumps(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)
cks = []
for k, v in self.cookies.items():
cks.append(f'{k}={v}')
for k, v in self.session.cookies.get_dict().items():
cks.append(f'{k}={v}')
self.log.info('; '.join(cks))
self.inc()
self.performanceNow += int(time.time() * 1000 - self.startTs)
self.px12280 = self.startTs2 + self.performanceNow
def run(self):
self._init()
self.seq = 0
self.rsc = 1
self._step_1()
self.seq += 1
# self._step_11()
# time.sleep(1.5)
self._step_2(True)
# time.sleep(2)
# self._step_2(False)
#
# # # if self.session.cookies.get_dict().get('_px2', None) == None:
# # time.sleep(2)
self._step_3()
time.sleep(2)
self._token()
def _init(self):
cks = '_px2=eyJ1IjoiOGRjYjQ3NjAtODl2jYi0xMWVlLTkwMmUtODE4MTcxMjRjOTBlIiwidiI6IjhlOGIyMGMzLTg5Y2ItMTFlZS05YWI1LTAwMjc4Njk4ZmY1ZiIsInQiOjYyMDIzMzg4MDAwNCwiaCI6Ijk4NjYzMWNkZDBmNTBjMWE5NjZjYjgwOGNlNzFjYTJkMWNkYzc2MjdjYTc4MTBlZDVhODdmN2FiMzYzOGU1OTgifQ==; pxcts=8e8b30eb-89cb-11ee-9ab5-ccabb13183c7; _px2=eyJ1IjoiOGRjYjQ3NjAtODljYi0xMWVlLTkwMmUtODE4MTcxMjRjOTBlIiwidiI6IjhlOGIyMGMzLTg5Y2ItMTFlZS05YWI1LTAwMjc4Njk4ZmY1ZiIsInQiOjYyMDIzMzg4MDAwNCwiaCI6Ijk4NjYzMWNkZDBmNTBjMWE5NjZjYjgwOGNlNzFjYTJkMWNkYzc2MjdjYTc4MTBlZDVhODdmN2FiMzYzOGU1OTgifQ=='
res = self.session.get(
# self.target_url,
'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",
"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",
"cache-control": "no-cache",
"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": "document",
"sec-fetch-mode": "navigate",
"sec-fetch-site": "none",
"sec-fetch-user": "?1",
"upgrade-insecure-requests": "1",
'cookie': cks,
"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=False)
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}")
if '_pxVid' in res.text:
# window._pxVid = '8e8b20c3-89cb-11ee-9ab5-00278698ff5f';
# window._pxUuid = '8dcb4760-89cb-11ee-902e-81817124c90e';
vid_list = re.findall("window\._pxVid = '([0-9a-z\-]+)';", res.text)
if len(vid_list) != 0:
self.vid = vid_list[0]
self.uuid = re.findall("window\._pxUuid = '([0-9a-z\-]+)';", res.text)[0]
with open('../index.html', 'w') as f:
f.write(res.text)
def _uuid(self):
# 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",
"24", "25", "26", "27", "28", "29", "2a", "2b", "2c", "2d", "2e", "2f", "30", "31", "32", "33", "34",
"35",
"36", "37", "38", "39", "3a", "3b", "3c", "3d", "3e", "3f", "40", "41", "42", "43", "44", "45", "46",
"47",
"48", "49", "4a", "4b", "4c", "4d", "4e", "4f", "50", "51", "52", "53", "54", "55", "56", "57", "58",
"59",
"5a", "5b", "5c", "5d", "5e", "5f", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "6a",
"6b",
"6c", "6d", "6e", "6f", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "7a", "7b", "7c",
"7d",
"7e", "7f", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "8a", "8b", "8c", "8d", "8e",
"8f",
"90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "9a", "9b", "9c", "9d", "9e", "9f", "a0",
"a1",
"a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "aa", "ab", "ac", "ad", "ae", "af", "b0", "b1", "b2",
"b3",
"b4", "b5", "b6", "b7", "b8", "b9", "ba", "bb", "bc", "bd", "be", "bf", "c0", "c1", "c2", "c3", "c4",
"c5",
"c6", "c7", "c8", "c9", "ca", "cb", "cc", "cd", "ce", "cf", "d0", "d1", "d2", "d3", "d4", "d5", "d6",
"d7",
"d8", "d9", "da", "db", "dc", "dd", "de", "df", "e0", "e1", "e2", "e3", "e4", "e5", "e6", "e7", "e8",
"e9",
"ea", "eb", "ec", "ed", "ee", "ef", "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9", "fa",
"fb",
"fc", "fd", "fe", "ff"]
bs = 0
ys = [random.randint(10, 255) for _ in range(6)]
# random.shuffle(ys)
Gs = random.randint(1100, 9999)
Ws = 0
s = Gs
h = get_timestamp()
d = bs + 1
m = int(h - Ws + (d - bs) / 1e4)
Ws = h
bs = d
Gs = s
f = []
u = 0
# (1e4 * (268435455 & (f + 122192928e5)) + s) % 4294967296
h += 122192928e5
h = int(h)
p = (1e4 * (268435455 & h) + 0) % 4294967296
# p = 4180087664
f[:3] = int(p).to_bytes(4, byteorder='big')
Q = int(h / 4294967296 * 1e4) & 268435455
# Q = 32386116
f.append(unsinged_right_shift(Q, 8) & 255)
f.append(255 & Q)
f.append(unsinged_right_shift(Q, 24) & 15 | 16)
f.append(unsinged_right_shift(Q, 16) & 255)
# s = 6488
f.append(unsinged_right_shift(s, 8) | 128)
f.append(255 & s)
for i in ys:
f.append(i)
# print(f)
# 18992390-8912-11ee-a2e1-b3b33c4f608f
# 70e50290-8911-11ee-bc61-f92af0d8127e
# f = [112,229,2,144,137,17,17,238,188,97,249,42,240,216,18,126]
res = [r[f[0]], r[f[1]], r[f[2]], r[f[3]], '-', r[f[4]], r[f[5]], '-', r[f[6]], r[f[7]], '-', r[f[8]],
r[f[9]],
'-',
r[f[10]], r[f[11]], r[f[12]], r[f[13]], r[f[14]], r[f[15]]]
return ''.join(res)
def _step_1(self):
t1 = int(time.time() * 1000)
t2 = t1 + random.randint(3, 12)
self.startTs = t1
self.startTs2 = t2
self.performanceNow = random.randint(2000, 3000)
self.px12280 = self.startTs2 + self.performanceNow
if self.uuid == "":
self.uuid = self._uuid()
# "[{"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": self.target_url, "PX12207": 0, "PX12458": "MacIntel", "PX11902": 0,
"PX11560": self.performanceNow, "PX12248": 3600, "PX11385": t1, "PX12280": t2,
"PX11496": self.uuid, "PX12564": None, "PX12565": -1,
# "PX11379": True
}}]
self.do_collector(data)
def encrypt(self, data, param):
n = bytearray()
if isinstance(data, str):
bytess = data.encode()
else:
bytess = data
for i in bytess:
n.append(i ^ param)
return n
def _gen_pc(self, t, e):
self.log.info(f'genpc t: {t}')
self.log.info(f'genpc e: {e}')
# ctx = execjs.compile(jsCode)
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)
r = e + b
a2 = ""
for i in range(0, len(r), 2):
a2 += r[i]
return a2
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.cookies.items():
cks.append(f'{k}={v}')
for k, v in self.session.cookies.get_dict().items():
cks.append(f'{k}={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',
# response = requests.post('http://127.0.0.1:58000/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",
"cache-control": "no-cache",
"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": "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/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'])
else:
with open('index.html', 'w') as f:
f.write(response['text'])
print(response['status_code'])
def _step_2(self, nn):
self.log.info(self.uuid)
self.log.info(f'performanceNow {self.performanceNow}')
# sid, vid,ts, num1 ,num2,str1, 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, self.performanceNow, self.px12280, nn)
# data_str =
# data = json.loads(data_str)
p = PxEnv(self.target_url, self.sid, self.vid, self.ts, self.num1, self.num2,
self.str1, self.uuid,
self.startTs, self.startTs2, self.performanceNow, self.px12280)
data = [p.get_px11590()]
# data_str2 = ctxStep2.call('genPayload3', self.target_url, self.sid, self.vid, self.ts, self.num1, self.num2,
# self.str1, self.uuid,
# self.startTs, self.startTs2, nn)
# data2 = json.loads(data_str2)
# data.extend(data2)
self.do_collector(data)
def _decode_resp(self):
a = int(self.tag.replace('v', '').replace('.', ''))
return a % 128
def _step_11(self):
data = [{"t": "PX12167", "d": {"PX11648": True}}]
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)
})
if self.vid != "":
data.update({
'vid': self.vid
})
if self.cs != "":
data.update({
'cs': self.cs
})
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(f'performanceNow {self.performanceNow}')
# sid, vid,ts, num1 ,num2,str1, uuid
# genPayload4(url, sid, vid, ts, num1, num2, str1, uuid, startTs, startTs2, performanceNow, px11280, n)
# data_str = ctxStep2.call('genPayload4', self.target_url, self.sid, self.vid, self.ts, self.num1,
# self.num2,
# self.str1, self.uuid,self.startTs, self.startTs2, self.performanceNow, self.px12280)
p = PxEnv(self.target_url, self.sid, self.vid, self.ts, self.num1, self.num2,
self.str1, self.uuid,
self.startTs, self.startTs2, self.performanceNow, self.px12280)
data = [p.get_px12123(), p.get_px11891(), p.get_px11547()]
self.do_collector(data)
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('|')
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.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.cookies.update({
'pxcts': self.cts
})
self.session.cookies.update({
'pxcts': self.cts
})
if 'pxde' in i:
self.cookies.update({
'_pxde': tmp[3]
})
self.session.cookies.update({
'_pxde': tmp[3]
})
elif '_px2' in i:
self.cookies.update({
'_px2': tmp[3]
})
self.session.cookies.update({
'_px2': tmp[3]
})
self.log.info(f'px2_decode {base64.b64decode(tmp[3].encode()).decode()}')
# elif '31536000' in i:
# self.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]
})
if __name__ == '__main__':
url = "https://booking.flyfrontier.com/Flight/InternalSelect?o1=DEN&d1=LAS&dd1=2023-11-30&ADT=1&umnr=false&mon=true"
url = "https://booking.flyfrontier.com/Flight/Select"
# while True:
try:
px = PxCaptchaBypass(url)
t1 = '[{"t":"PX12095","d":{"PX11645":"https://www.flyfrontier.com/","PX12207":0,"PX12458":"MacIntel","PX11902":0,"PX11560":4769,"PX12248":3600,"PX11385":1700553697276,"PX12280":1700553697286,"PX11496":"31fafcb0-8844-11ee-8d49-97ed9bc8f96f","PX12564":null,"PX12565":-1,"PX11379":false}}]'
t2 = '31fafcb0-8844-11ee-8d49-97ed9bc8f96f:v8.7.2:317'
# print(px._gen_pc(t1, t2))
px.run()
# except KeyError:
# pass
except:
traceback.print_exc()
# time.sleep(1)
import base64
import ctypes
import hashlib
import hmac
import json
import math
import random
from datetime import datetime
def left_shift(based, counter):
# a << 5
val = based << (counter % 32)
maxint = 2147483647
if not -maxint - 1 <= val <= maxint:
val = (val + (maxint + 1)) % (2 * (maxint + 1)) - maxint - 1
return val
def unsigned_right_shift(n, i):
"""
js中 >>>
:param n:
:param i:
:return:
"""
x, y = ctypes.c_uint32(n).value, i % 32
return ctypes.c_uint32(x >> y).value
def Y0(Z0, h0):
# a |= b
return unsigned_right_shift(Z0, h0) | left_shift(Z0, (32 - h0))
def createPx1(t):
t = '' + str(t)
e = 0
n = 0
for r in range(len(t)):
# print(n, ord(t[r]))
n = left_shift(n, 5) - n + ord(t[r])
n = Y0(n, 0)
# print(r, n)
e = n
e |= 0
if e < 0:
e += 4294967296
return hex(e)[2:]
def encrypt(data, param):
n = bytearray()
if isinstance(data, str):
bytess = data.encode()
else:
bytess = data
for i in bytess:
n.append(i ^ param)
return n
def randomInt(param, param1):
return random.randint(param, param1)
def randomFloat(a, b):
return random.random() * (b - a) + a
class PxEnv():
def __init__(self, url, sid, vid, ts, num1, num2, str1, uuid, startTs, startTs2, performanceNow, px11280):
self.ua = '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.url = url
self.sid = sid
self.vid = vid
self.ts = ts
self.num1 = num1
self.num2 = num2
self.str1 = str1
self.uuid = uuid
self.startTs = startTs
self.startTs2 = startTs2
self.performanceNow = performanceNow
self.px11280 = px11280
totalJSHeapSize = randomInt(35903195, 39903195)
self.memory_data = dict(
totalJSHeapSize=totalJSHeapSize,
usedJSHeapSize=math.floor(randomFloat(0.65, 0.9) * totalJSHeapSize),
jsHeapSizeLimit=4294705152
)
@property
def memory(self):
self.memory_data['usedJSHeapSize'] = self.memory_data['usedJSHeapSize'] + randomInt(1903195, 2903195)
return self.memory_data
def _to_json(self, data):
return json.dumps(data, separators=(',', ':'))
def get_px11590(self):
px11590_d = {"PX11431": int(self.ts),
"PX12454": int(self.num1),
"PX11701": self.num2[:80],
"PX11529": self.memory_data.get('usedJSHeapSize'),
"PX11555": self.memory_data.get('jsHeapSizeLimit'),
"PX11833": self.memory_data.get('totalJSHeapSize'),
"PX11840": datetime.now().strftime('%a %b %d %Y %H:%M:%S GMT+0800 (中国标准时间)'),
"PX12573": self.getPX12573(math.floor(int(self.ts) / 1e3), self.vid, self.uuid),
"PX11804": self.createPX2(self.ua, self.uuid),
"PX12118": self.str1,
"PX11746": self.createPX2(self.ua, self.vid),
"PX11371": self.createPX2(self.ua, self.sid),
"PX12501": self.md5(self.vid),
"PX12169": 1, "PX11902": 1,
"PX11560": self.performanceNow + randomInt(1000, 2500),
"PX11332": self.startTs + randomInt(1000, 2500),
"PX12248": 3600,
"PX11385": self.startTs,
"PX12280": self.px11280,
"PX11496": self.uuid,
"PX12330": "109|66|66|70|80",
"PX11705": random.choice([571, 1182]),
"PX11938": True, "PX11602": True, "PX12021": "False", "PX12421": "False", "PX12124": 1,
"PX11609": 1,
"PX12291": "", "PX11881": ["app", "csi", "loadTimes"], "PX12207": 0, "PX11538": 2,
"PX11984": "TypeError: Cannot read properties of None (reading '0')\n at he (https://client.px-cloud.net/PXVb73hTEg/main.min.js:1136:13)\n at Zo (https://client.px-cloud.net/PXVb73hTEg/main.min.js:3320:22)\n at Eo (https://client.px-cloud.net/PXVb73hTEg/main.min.js:2892:23)\n at https://client.px-cloud.net/PXVb73hTEg/main.min.js:3265:9",
"PX11645": "https://www.flyfrontier.com", "PX11597": [], "PX12023": "", "PX11337": False,
"PX12544": True, "PX12589": "succeeded", "PX11524": True,
"PX11843": 1920,
"PX11781": 1080,
"PX12121": 1920,
"PX12128": 1055,
"PX12387": "1920X1080",
"PX12003": 24,
"PX11380": 24,
"PX11494": 906,
"PX12411": 853, "PX12443": 0, "PX12447": 0, "PX11533": True, "PX12079": False, "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": ["Chrome PDF Viewer", "Chromium PDF Viewer", "Microsoft Edge PDF Viewer", "PDF Viewer",
"WebKit built-in PDF"], "PX12286": 5, "PX11576": True, "PX12318": True,
"PX11384": True,
"PX11886": True, "PX11583": "en-US", "PX12458": "MacIntel", "PX11681": ["en-US"],
"PX11754": "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",
"PX12037": True, "PX11390": -480, "PX11621": 8, "PX11657": 1, "PX12081": "Gecko",
"PX11908": "20030107",
"PX12314": "5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36",
"PX11829": True, "PX11464": True, "PX12054": 2, "PX11821": "Netscape", "PX11479": "Mozilla",
"PX11674": True, "PX12241": 400, "PX11372": False, "PX11683": 1.5, "PX11561": "3g",
"PX11877": True,
"PX12100": True, "PX12506": "arm", "PX12507": "64", "PX12509": False, "PX12510": "",
"PX12511": "macOS",
"PX12512": "13.5.0", "PX12513": "117.0.5938.149", "PX12548": True, "PX12578": {},
"PX12579": {"support": True,
"status": {"effectiveType": "3g", "rtt": 400, "downlink": 1.5, "saveData": False}},
"PX12508": [{"brand": "Google Chrome", "version": "117"}, {"brand": "Not;A=Brand", "version": "8"},
{"brand": "Chromium", "version": "117"}], "PX12549": True, "PX11539": "831efc5e",
"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/117.0.0.0 Safari/537.36",
"PX12249": False, "PX11897": "90e65465", "PX12597": 2, "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": 34, "PX11632": 0, "PX11409": 9, "PX11508": "49e5084e",
"PX11452": "7c5f9724",
"PX12218": "65d826e0", "PX12481": "a9269e00", "PX11780": "50a5ec55", "PX12551": "https:",
"PX12553": "Asia/Shanghai", "PX12567": "w3c", "PX12576": "screen",
"PX12554": "function getOwnPropertyDescriptors() { [native code] }",
"PX12577": "function query() { [native code] }", "PX12594": False, "PX12566": False,
"PX12571": "74d9c66", "PX12581": "default", "PX11303": False, "PX11515": False, "PX12133": False,
"PX12340": False, "PX11738": False, "PX11723": False, "PX11389": False, "PX11839": False,
"PX11460": False, "PX12102": False, "PX11378": False, "PX12317": False, "PX12564": None,
"PX12565": -1,
}
noPx1, noPx2 = self.getNoPx(px11590_d)
px11590_d[noPx1] = noPx2
data = {"t": "PX11590",
"d": px11590_d}
return data
def getPX12573(self, a, b, c):
t = a - 22790 + ord(b[31])
return createPx1(t)
def createPX2(self, e, t):
h = hmac.new(e.encode(), t.encode(), hashlib.md5)
t = h.hexdigest()
return t
def md5(self, vid):
m = hashlib.md5()
m.update(vid.encode())
return m.hexdigest()
def getNoPx(self, data):
return encrypt(data['PX11701'], data['PX11431'] % 10 + 2).decode(), encrypt(data['PX11701'],
data['PX11431'] % 10 + 1).decode()
def get_px12123(self):
px12123_d = {
"PX12108": randomInt(401, 601),
"PX12414": randomInt(15, 61),
"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 Zo (https://client.px-cloud.net/PXVb73hTEg/main.min.js:3320:22)\n at Eo (https://client.px-cloud.net/PXVb73hTEg/main.min.js:2892:23)\n at https://client.px-cloud.net/PXVb73hTEg/main.min.js:3265:9",
"PX12303": "mouseover",
"PX11699": 58848,
"PX11987": "True",
"PX12461": True,
"PX11652": "#wisepops-instance-429858",
"PX11902": 3,
"PX11560": self.performanceNow,
"PX12280": self.px11280,
"PX11496": self.uuid,
"PX12564": None,
"PX12565": -1,
# "PX11379": False,
# "PX11645": url
}
return {
"t": "PX12123",
"d": px12123_d
}
def get_px11891(self):
px11891_d = {
"PX11913": True,
"PX11900": 240000,
"PX12159": 1,
"PX11754": self.ua,
"PX12256": 0,
"PX12445": 0,
"PX11804": self.createPX2(self.ua, self.uuid),
"PX11746": self.createPX2(self.ua, self.vid),
"PX11371": self.createPX2(self.ua, self.sid),
"PX11902": 4,
"PX11560": self.performanceNow,
"PX12280": self.px11280,
"PX11496": self.uuid,
"PX12564": None,
"PX12565": -1,
# // "PX11379": False
}
return {
"t": "PX11891",
"d": px11891_d
}
def get_px11547(self):
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": "5a86e326549d99b7d916101a127153a1",
"PX12491": "be9996f96141c689cda7a1e4e1c28787",
"PX12130": [
"Sha256",
"_init",
"_open",
"_close",
"F9Storage",
"$",
"F9Qubit",
"F9Social",
"html5",
"$A",
"_fbq",
"_uxa",
"__core-js_shared__",
"_",
"__f9publicCache",
"ueto_9786ebd4fb",
"Native2JSBridge",
"_jelly_sdks",
"wisepops429858JsonP",
"_upliftFlag"
],
"PX12351": [
"jQuery3510402196117429823861",
"_html5shiv",
"AccDC1698805894620"
],
"PX11386": [
"webdriver"
],
"PX12525": "b1199c2b7aa9aa43f16fc345099c3f04",
"PX12526": "c9a6cb64a9c6b14c5c489fd18fc4c35d",
"PX11948": 1,
"PX11685": 10,
"PX11986": True,
"PX12299": True,
"PX12331": True,
"PX11316": False,
"PX11448": True,
"PX12196": "missing",
"PX12427": [
"_init",
"_open",
"_close",
"$",
"$A",
"_pxCustomAbrDomains",
"_pxAppId",
"_Vb73hTEghandler",
"_fbq",
"_uxa",
"__core-js_shared__",
"_",
"__f9publicCache"
],
"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": self.ts,
"PX12228": "TypeError: Cannot read properties of null (reading '0') at de (https://client.px-cloud.net/PXVb73hTEg/main.min.js:796:13) at func (https://client.px-cloud.net/PXVb73hTEg/main.min.js:4899:19) at ve (https://client.px-cloud.net/PXVb73hTEg/main.min.js:790:13) at https://client.px-cloud.net/PXVb73hTEg/main.min.js:5048:13",
"PX12288": True,
"PX12446": 33,
"PX12236": "fd7149bbfb316699ef918fa7bb7510a8",
"PX11309": "d41d8cd98f00b204e9800998ecf8427e",
"PX11551": "fd7149bbfb316699ef918fa7bb7510a8",
"PX12586": 1,
"PX11843": 1920,
"PX11781": 1080,
"PX12121": 1920,
"PX12128": 1055,
"PX12387": "1920X1080",
"PX12003": 24,
"PX11380": 24,
"PX11849": "10207b2f",
"PX11583": "en-US",
"PX12458": "MacIntel",
"PX11681": [
"en-US"
],
"PX11754": "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",
"PX12037": True,
"PX11621": 8,
"PX11390": -480,
"PX11678": False,
"PX11840": datetime.now().strftime('%a %b %d %Y %H:%M:%S GMT+0800 (中国标准时间)'),
"PX11540": True,
"PX11539": "64556c77",
"PX11555": 4294705152,
"PX11452": "7c5f9724",
"PX12527": "3207084bd110f1ac964863e23aa78e04",
"PX11484": [],
"PX12501": self.md5(self.vid),
"PX11902": 2,
"PX11560": self.performanceNow,
"PX12280": self.px11280,
"PX11496": self.uuid,
"PX12564": None,
"PX12565": -1
}
return {
"t": "PX11547",
"d": px11547_d
}
if __name__ == '__main__':
a2 = "B1kHB1kHFF4JX1kODVAKRVBQXF1FWVkNDUUKXVpfRQteDVFRDFhcXF8MWBRbWV1bXlhYWBQcGh0NFhYWFllZWQcHWRQLCxReWBQ9Wi4cMj4mGAwvPVE8Ly5cJx9VVRYWFhYHWVlZBwcHWRRZX1hYXV1cWlpZXVpdFhYWFllZB1lZWRQMWw5bX19fCQldXlALWw1eUFoJX1kOX1tbUQ4JXwwJXgpYX1wMXApQDVwLXQsKDFtQDVpfXl4LCllRXAtQWlpcFhYWFgdZWQdZWQcHFF4JX1pYCloORVBQXF1FWVkNDUUKXVpQRQ5fCl8ODA5ZDFwOWxQcGh0NFhYWFlkHBwcHWRQLBA1eChpRXA9eBgFYWVoDXAAAWBYWFhYHWVkHWVkUXglfWlhQXFBFUFBcXUVZWQ0NRQpdWlBFDl8KXw4MDlkMXA5bFhYWFgdZB1lZWRQLHRYWFhZZWVkHWQcUWVBYXF9QWlhfW11bXF1dWFhbWlwWFhYWB1lZWQcHBwcUWV1ZWw=="
b2 = base64.b64decode(a2.encode())
for i in bytes(encrypt(b2, 872 % 128)).decode().split('~~~~'):
print('o11o111o' in i, i)
tmp = i.split('|')
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 = '31fafcb0-8844-11ee-8d49-97ed9bc8f96f'
px = PxEnv('https://www.flyfrontier.com/',
sid, vid, ts, num1, num2, str1, uuid
, 1700552863875, 1700464712550
, 1700552863903, 1700552863903)
print(px.get_px11590())
import base64
import ctypes
import hashlib
import hmac
import json
import math
import random
import time
from datetime import datetime
def left_shift(based, counter):
# a << 5
val = based << (counter % 32)
maxint = 2147483647
if not -maxint - 1 <= val <= maxint:
val = (val + (maxint + 1)) % (2 * (maxint + 1)) - maxint - 1
return val
def unsigned_right_shift(n, i):
"""
js中 >>>
:param n:
:param i:
:return:
"""
x, y = ctypes.c_uint32(n).value, i % 32
return ctypes.c_uint32(x >> y).value
def Y0(Z0, h0):
# a |= b
return unsigned_right_shift(Z0, h0) | left_shift(Z0, (32 - h0))
def createPx1(t):
t = '' + str(t)
e = 0
n = 0
for r in range(len(t)):
# print(n, ord(t[r]))
n = left_shift(n, 5) - n + ord(t[r])
n = Y0(n, 0)
# print(r, n)
e = n
e |= 0
if e < 0:
e += 4294967296
return hex(e)[2:]
def encrypt(data, param):
n = bytearray()
if isinstance(data, str):
bytess = data.encode()
else:
bytess = data
for i in bytess:
n.append(i ^ param)
return n
def randomInt(param, param1):
return random.randint(param, param1)
def randomFloat(a, b):
return random.random() * (b - a) + a
class PxEnv():
def __init__(self, url, sid, vid, ts, num1, num2, str1, uuid, startTs, startTs2, performanceNow, px11280,
px755='', token=''):
# 11oo1o
self.token = token
self.px755 = px755
self.ua = '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.url = url
self.sid = sid
self.vid = vid
self.ts = ts
self.num1 = num1
self.num2 = num2
self.str1 = str1
self.uuid = uuid
self.startTs = startTs
self.startTs2 = startTs2
self.performanceNow = performanceNow
self.px11280 = px11280
totalJSHeapSize = randomInt(35903195, 39903195)
self.memory_data = dict(
totalJSHeapSize=totalJSHeapSize,
usedJSHeapSize=math.floor(randomFloat(0.65, 0.9) * totalJSHeapSize),
jsHeapSizeLimit=4294705152
)
@property
def memory(self):
self.memory_data['usedJSHeapSize'] = self.memory_data['usedJSHeapSize'] + randomInt(1903195, 2903195)
return self.memory_data
def _to_json(self, data):
return json.dumps(data, separators=(',', ':'))
def get_px11590(self):
px11590_d = {"PX11431": int(self.ts),
"PX12454": int(self.num1),
"PX11701": self.num2[:80],
"PX11529": self.memory_data.get('usedJSHeapSize'),
"PX11555": self.memory_data.get('jsHeapSizeLimit'),
"PX11833": self.memory_data.get('totalJSHeapSize'),
"PX11840": datetime.now().strftime('%a %b %d %Y %H:%M:%S GMT+0800 (中国标准时间)'),
"PX12573": self.getPX12573(math.floor(int(self.ts) / 1e3), self.vid, self.uuid),
"PX11804": self.createPX2(self.ua, self.uuid),
"PX12118": self.str1,
"PX11746": self.createPX2(self.ua, self.vid),
"PX11371": self.createPX2(self.ua, self.sid),
"PX12501": self.md5(self.vid),
"PX12169": 1, "PX11902": 1,
"PX11560": self.performanceNow + randomInt(1000, 2500),
"PX11332": self.startTs + randomInt(1000, 2500),
"PX12248": 3600,
"PX11385": self.startTs,
"PX12280": self.px11280,
"PX11496": self.uuid,
"PX12330": "109|66|66|70|80",
"PX11705": random.choice([571, 1182]),
"PX11938": True, "PX11602": True, "PX12021": "False", "PX12421": "False", "PX12124": 1,
"PX11609": 1,
"PX12291": "", "PX11881": ["app", "csi", "loadTimes"], "PX12207": 0, "PX11538": 2,
"PX11984": "TypeError: Cannot read properties of None (reading '0')\n at he (https://client.px-cloud.net/PXVb73hTEg/main.min.js:1136:13)\n at Zo (https://client.px-cloud.net/PXVb73hTEg/main.min.js:3320:22)\n at Eo (https://client.px-cloud.net/PXVb73hTEg/main.min.js:2892:23)\n at https://client.px-cloud.net/PXVb73hTEg/main.min.js:3265:9",
"PX11645": "https://www.flyfrontier.com", "PX11597": [], "PX12023": "", "PX11337": False,
"PX12544": True, "PX12589": "succeeded", "PX11524": True,
"PX11843": 1920,
"PX11781": 1080,
"PX12121": 1920,
"PX12128": 1055,
"PX12387": "1920X1080",
"PX12003": 24,
"PX11380": 24,
"PX11494": 906,
"PX12411": 853, "PX12443": 0, "PX12447": 0, "PX11533": True, "PX12079": False, "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": ["Chrome PDF Viewer", "Chromium PDF Viewer", "Microsoft Edge PDF Viewer", "PDF Viewer",
"WebKit built-in PDF"], "PX12286": 5, "PX11576": True, "PX12318": True,
"PX11384": True,
"PX11886": True, "PX11583": "en-US", "PX12458": "MacIntel", "PX11681": ["en-US"],
"PX11754": "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",
"PX12037": True, "PX11390": -480, "PX11621": 8, "PX11657": 1, "PX12081": "Gecko",
"PX11908": "20030107",
"PX12314": "5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36",
"PX11829": True, "PX11464": True, "PX12054": 2, "PX11821": "Netscape", "PX11479": "Mozilla",
"PX11674": True, "PX12241": 400, "PX11372": False, "PX11683": 1.5, "PX11561": "3g",
"PX11877": True,
"PX12100": True, "PX12506": "arm", "PX12507": "64", "PX12509": False, "PX12510": "",
"PX12511": "macOS",
"PX12512": "13.5.0", "PX12513": "117.0.5938.149", "PX12548": True, "PX12578": {},
"PX12579": {"support": True,
"status": {"effectiveType": "3g", "rtt": 400, "downlink": 1.5, "saveData": False}},
"PX12508": [{"brand": "Google Chrome", "version": "117"}, {"brand": "Not;A=Brand", "version": "8"},
{"brand": "Chromium", "version": "117"}], "PX12549": True, "PX11539": "831efc5e",
"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/117.0.0.0 Safari/537.36",
"PX12249": False, "PX11897": "90e65465", "PX12597": 2, "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": 34, "PX11632": 0, "PX11409": 9, "PX11508": "49e5084e",
"PX11452": "7c5f9724",
"PX12218": "65d826e0", "PX12481": "a9269e00", "PX11780": "50a5ec55", "PX12551": "https:",
"PX12553": "Asia/Shanghai", "PX12567": "w3c", "PX12576": "screen",
"PX12554": "function getOwnPropertyDescriptors() { [native code] }",
"PX12577": "function query() { [native code] }", "PX12594": False, "PX12566": False,
"PX12571": "74d9c66", "PX12581": "default", "PX11303": False, "PX11515": False, "PX12133": False,
"PX12340": False, "PX11738": False, "PX11723": False, "PX11389": False, "PX11839": False,
"PX11460": False, "PX12102": False, "PX11378": False, "PX12317": False, "PX12564": None,
"PX12565": -1,
}
noPx1, noPx2 = self.getNoPx(px11590_d)
px11590_d[noPx1] = noPx2
data = {"t": "PX11590",
"d": px11590_d}
return data
def getPX12573(self, a, b, c):
t = a - 22790 + ord(b[31])
return createPx1(t)
def createPX2(self, e, t):
h = hmac.new(e.encode(), t.encode(), hashlib.md5)
t = h.hexdigest()
return t
def md5(self, vid):
m = hashlib.md5()
m.update(vid.encode())
return m.hexdigest()
def getNoPx(self, data):
return encrypt(data['PX11701'], data['PX11431'] % 10 + 2).decode(), encrypt(data['PX11701'],
data['PX11431'] % 10 + 1).decode()
def get_px12123(self):
px12123_d = {
"PX12108": randomInt(401, 601),
"PX12414": randomInt(15, 61),
"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 Zo (https://client.px-cloud.net/PXVb73hTEg/main.min.js:3320:22)\n at Eo (https://client.px-cloud.net/PXVb73hTEg/main.min.js:2892:23)\n at https://client.px-cloud.net/PXVb73hTEg/main.min.js:3265:9",
"PX12303": "mouseover",
"PX11699": 58848,
"PX11987": "True",
"PX12461": True,
"PX11652": "#wisepops-instance-429858",
"PX11902": 3,
"PX11560": self.performanceNow,
"PX12280": self.px11280,
"PX11496": self.uuid,
"PX12564": None,
"PX12565": -1,
# "PX11379": False,
# "PX11645": url
}
return {
"t": "PX12123",
"d": px12123_d
}
def get_px11891(self):
px11891_d = {
"PX11913": True,
"PX11900": 240000,
"PX12159": 1,
"PX11754": self.ua,
"PX12256": 0,
"PX12445": 0,
"PX11804": self.createPX2(self.ua, self.uuid),
"PX11746": self.createPX2(self.ua, self.vid),
"PX11371": self.createPX2(self.ua, self.sid),
"PX11902": 4,
"PX11560": self.performanceNow,
"PX12280": self.px11280,
"PX11496": self.uuid,
"PX12564": None,
"PX12565": -1,
# // "PX11379": False
}
return {
"t": "PX11891",
"d": px11891_d
}
def get_px11547(self):
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": "5a86e326549d99b7d916101a127153a1",
"PX12491": "be9996f96141c689cda7a1e4e1c28787",
"PX12130": [
"Sha256",
"_init",
"_open",
"_close",
"F9Storage",
"$",
"F9Qubit",
"F9Social",
"html5",
"$A",
"_fbq",
"_uxa",
"__core-js_shared__",
"_",
"__f9publicCache",
"ueto_9786ebd4fb",
"Native2JSBridge",
"_jelly_sdks",
"wisepops429858JsonP",
"_upliftFlag"
],
"PX12351": [
"jQuery3510402196117429823861",
"_html5shiv",
"AccDC1698805894620"
],
"PX11386": [
"webdriver"
],
"PX12525": "b1199c2b7aa9aa43f16fc345099c3f04",
"PX12526": "c9a6cb64a9c6b14c5c489fd18fc4c35d",
"PX11948": 1,
"PX11685": 10,
"PX11986": True,
"PX12299": True,
"PX12331": True,
"PX11316": False,
"PX11448": True,
"PX12196": "missing",
"PX12427": [
"_init",
"_open",
"_close",
"$",
"$A",
"_pxCustomAbrDomains",
"_pxAppId",
"_Vb73hTEghandler",
"_fbq",
"_uxa",
"__core-js_shared__",
"_",
"__f9publicCache"
],
"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": self.ts,
"PX12228": "TypeError: Cannot read properties of null (reading '0') at de (https://client.px-cloud.net/PXVb73hTEg/main.min.js:796:13) at func (https://client.px-cloud.net/PXVb73hTEg/main.min.js:4899:19) at ve (https://client.px-cloud.net/PXVb73hTEg/main.min.js:790:13) at https://client.px-cloud.net/PXVb73hTEg/main.min.js:5048:13",
"PX12288": True,
"PX12446": 33,
"PX12236": "fd7149bbfb316699ef918fa7bb7510a8",
"PX11309": "d41d8cd98f00b204e9800998ecf8427e",
"PX11551": "fd7149bbfb316699ef918fa7bb7510a8",
"PX12586": 1,
"PX11843": 1920,
"PX11781": 1080,
"PX12121": 1920,
"PX12128": 1055,
"PX12387": "1920X1080",
"PX12003": 24,
"PX11380": 24,
"PX11849": "10207b2f",
"PX11583": "en-US",
"PX12458": "MacIntel",
"PX11681": [
"en-US"
],
"PX11754": "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",
"PX12037": True,
"PX11621": 8,
"PX11390": -480,
"PX11678": False,
"PX11840": datetime.now().strftime('%a %b %d %Y %H:%M:%S GMT+0800 (中国标准时间)'),
"PX11540": True,
"PX11539": "64556c77",
"PX11555": 4294705152,
"PX11452": "7c5f9724",
"PX12527": "3207084bd110f1ac964863e23aa78e04",
"PX11484": [],
"PX12501": self.md5(self.vid),
"PX11902": 2,
"PX11560": self.performanceNow,
"PX12280": self.px11280,
"PX11496": self.uuid,
"PX12564": None,
"PX12565": -1
}
return {
"t": "PX11547",
"d": px11547_d
}
def get_px11782(self):
return {
"t": "PX11782",
"d": {
"PX11719": True,
"PX11984": "TypeError: Cannot read properties of null (reading '0')\n at he (https://client.perimeterx.net/PXVb73hTEg/main.min.js:1136:13)\n at Tc (https://client.perimeterx.net/PXVb73hTEg/main.min.js:3957:26)\n at Object.Nc [as PX763] (https://client.perimeterx.net/PXVb73hTEg/main.min.js:4044:21)\n at https://captcha.perimeterx.net/PXVb73hTEg/captcha.js?a=c&u=83398d3d-8aa8-11ee-b037-092ff4a06041&v=&m=0:3:491629\n at r (https://captcha.perimeterx.net/PXVb73hTEg/captcha.js?a=c&u=83398d3d-8aa8-11ee-b037-092ff4a06041&v=&m=0:3:491049)\n at Object.L [as onSolvedCallback] (https://captcha.perimeterx.net/PXVb73hTEg/captcha.js?a=c&u=83398d3d-8aa8-11ee-b037-092ff4a06041&v=&m=0:3:491088)\n at u (https://captcha.perimeterx.net/PXVb73hTEg/captcha.js?a=c&u=83398d3d-8aa8-11ee-b037-092ff4a06041&v=&m=0:3:290410)\n at Object.r [as controllerCallback] (https://captcha.perimeterx.net/PXVb73hTEg/captcha.js?a=c&u=83398d3d-8aa8-11ee-b037-092ff4a06041&v=&m=0:3:288058)\n at Pf (https://captcha.perimeterx.net/PXVb73hTEg/captcha.js?a=c&u=83398d3d-8aa8-11ee-b037-092ff4a06041&v=&m=0:3:275662)",
"PX11933": True,
"PX11454": "visible",
"PX12099": "4YCJ4YGQ4YCa4YCG4YCf4YCe4YGQ4YGI4YGD4YGe4YGQ4YCa4YCX4YCT4YCW4YGQ4YGI4YGD4YGe4YGQ4YCf4YCX4YCG4YCT4YGQ4YGI4YGB4YGe4YGQ4YCG4YCb4YCG4YCe4YCX4YGQ4YGI4YGD4YGe4YGQ4YCB4YCR4YCA4YCb4YCC4YCG4YGQ4YGI4YGG4YGe4YGQ4YCB4YCG4YCL4YCe4YCX4YGQ4YGI4YGB4YGe4YGQ4YCQ4YCd4YCW4YCL4YGQ4YGI4YGD4YGe4YGQ4YCW4YCb4YCE4YGQ4YGI4YGA4YGG4YGe4YGQ4YCQ4YCA4YGQ4YGI4YGD4YGe4YGQ4YCT4YGQ4YGI4YGD4YGe4YGQ4YCQ4YCH4YCG4YCG4YCd4YCc4YGQ4YGI4YGB4YGe4YGQ4YCB4YCC4YCT4YCc4YGQ4YGI4YGE4YGe4YGQ4YCB4YCE4YCV4YGQ4YGI4YGD4YGe4YGQ4YCV4YGQ4YGI4YGB4YGe4YGQ4YCC4YCT4YCG4YCa4YGQ4YGI4YGG4YGe4YGQ4YCU4YCd4YCA4YCf4YGQ4YGI4YGD4YGe4YGQ4YCb4YCc4YCC4YCH4YCG4YGQ4YGI4YGG4YGe4YGQ4YCe4YCT4YCQ4YCX4YCe4YGQ4YGI4YGG4YGe4YGQ4YCa4YGG4YGQ4YGI4YGD4YGe4YGQ4YCG4YCX4YCK4YCG4YCT4YCA4YCX4YCT4YGQ4YGI4YGD4YCP",
"PX11699": 11659,
"PX755": self.px755,
"PX12057": "pxCaptcha",
"PX11490": "booking.flyfrontier.com",
"PX11874": "en-US",
"PX12049": False,
"PX12489": "v1.8.7",
"PX11902": 6,
"PX11560": self.performanceNow,
"PX12280": self.px11280,
"PX11496": self.uuid,
"PX12564": None,
"PX12565": -1
}
}
def get_px12419(self):
return {
"t": "PX12419",
"d": {
"PX12040": [],
"PX12170": "PX11994",
"PX11934": "https://booking.flyfrontier.com/Flight/InternalSelect?o1=DEN&d1=LAS&dd1=2023-11-30&ADT=1&umnr=false&mon=true",
"PX12160": {},
"PX11875": self.uuid,
"PX11844": 0,
"PX12465": True,
"PX11393": "2,1,5598|1,-1,5812|3,-4,5816|3,-1,5831",
"PX12470": int(time.time() * 1000),
"PX11698": [
"768,513,8249",
"771,509,8468"
],
# p["body"]["offsetWidth"]xp["body"]["offsetHeight"]
"PX11679": "1904x0",
"PX11902": 7,
"PX11560": 14311,
"PX11719": True,
"PX12280": self.px11280,
"PX11496": self.uuid,
"PX12564": None,
"PX12565": -1
}
}
def get_px561(self):
return {
"t": "PX561",
"d": {
"PX11719": True,
"PX11984": "TypeError: Cannot read properties of null (reading '0')\n at he (https://client.perimeterx.net/PXVb73hTEg/main.min.js:1136:13)\n at Tc (https://client.perimeterx.net/PXVb73hTEg/main.min.js:3957:26)\n at bc (https://client.perimeterx.net/PXVb73hTEg/main.min.js:3950:13)\n at https://captcha.perimeterx.net/PXVb73hTEg/captcha.js?a=c&u=83398d3d-8aa8-11ee-b037-092ff4a06041&v=&m=0:3:491583\n at r (https://captcha.perimeterx.net/PXVb73hTEg/captcha.js?a=c&u=83398d3d-8aa8-11ee-b037-092ff4a06041&v=&m=0:3:491049)\n at Object.L [as onSolvedCallback] (https://captcha.perimeterx.net/PXVb73hTEg/captcha.js?a=c&u=83398d3d-8aa8-11ee-b037-092ff4a06041&v=&m=0:3:491088)\n at u (https://captcha.perimeterx.net/PXVb73hTEg/captcha.js?a=c&u=83398d3d-8aa8-11ee-b037-092ff4a06041&v=&m=0:3:290410)\n at Object.r [as controllerCallback] (https://captcha.perimeterx.net/PXVb73hTEg/captcha.js?a=c&u=83398d3d-8aa8-11ee-b037-092ff4a06041&v=&m=0:3:288058)\n at Pf (https://captcha.perimeterx.net/PXVb73hTEg/captcha.js?a=c&u=83398d3d-8aa8-11ee-b037-092ff4a06041&v=&m=0:3:275662)",
"PX11933": True,
"PX11454": "visible",
"PX12099": "4YCJ4YGQ4YCa4YCG4YCf4YCe4YGQ4YGI4YGD4YGe4YGQ4YCa4YCX4YCT4YCW4YGQ4YGI4YGD4YGe4YGQ4YCf4YCX4YCG4YCT4YGQ4YGI4YGB4YGe4YGQ4YCG4YCb4YCG4YCe4YCX4YGQ4YGI4YGD4YGe4YGQ4YCB4YCR4YCA4YCb4YCC4YCG4YGQ4YGI4YGG4YGe4YGQ4YCB4YCG4YCL4YCe4YCX4YGQ4YGI4YGB4YGe4YGQ4YCQ4YCd4YCW4YCL4YGQ4YGI4YGD4YGe4YGQ4YCW4YCb4YCE4YGQ4YGI4YGA4YGG4YGe4YGQ4YCQ4YCA4YGQ4YGI4YGD4YGe4YGQ4YCT4YGQ4YGI4YGD4YGe4YGQ4YCQ4YCH4YCG4YCG4YCd4YCc4YGQ4YGI4YGB4YGe4YGQ4YCB4YCC4YCT4YCc4YGQ4YGI4YGE4YGe4YGQ4YCB4YCE4YCV4YGQ4YGI4YGD4YGe4YGQ4YCV4YGQ4YGI4YGB4YGe4YGQ4YCC4YCT4YCG4YCa4YGQ4YGI4YGG4YGe4YGQ4YCU4YCd4YCA4YCf4YGQ4YGI4YGD4YGe4YGQ4YCb4YCc4YCC4YCH4YCG4YGQ4YGI4YGG4YGe4YGQ4YCe4YCT4YCQ4YCX4YCe4YGQ4YGI4YGG4YGe4YGQ4YCa4YGG4YGQ4YGI4YGD4YGe4YGQ4YCG4YCX4YCK4YCG4YCT4YCA4YCX4YCT4YGQ4YGI4YGD4YCP",
"PX11699": self.performanceNow,
"PX1133": 594.2000000476837,
"PX1132": "313a60aa8127f6aa55a7e16abb033abc7cc7f2110914ba8947b4edb3d6d09122",
"PX12126": True,
"PX11657": 1,
"PX12501": self.md5(self.vid),
"PX12520": True,
"PX11991": 1,
"PX11837": 0,
"PX11632": 0,
"PX11409": 0,
"PX11926": [
{
"PX12343": "mouseover",
"PX11652": 0,
"PX11699": 8221,
"PX12270": "true"
},
{
"PX12343": "mouseover",
"PX11652": 1,
"PX11699": 5353,
"PX12270": "true"
},
{
"PX12343": "mouseout",
"PX11652": 1,
"PX11699": 5405,
"PX12270": "true"
},
{
"PX12343": "mouseover",
"PX11652": 1,
"PX11699": 5405,
"PX12270": "true"
},
{
"PX12343": "mouseout",
"PX11652": 1,
"PX11699": 10795,
"PX12270": "true"
},
{
"PX12343": "mouseover",
"PX11652": 1,
"PX11699": 10795,
"PX12270": "true"
},
{
"PX12343": "mouseout",
"PX11652": 1,
"PX11699": 10825,
"PX12270": "true"
},
{
"PX12343": "mouseover",
"PX11652": 1,
"PX11699": 10825,
"PX12270": "true"
},
{
"PX12343": "pointerup",
"PX11652": 1,
"PX11699": 11157,
"PX12270": "true"
}
],
"PX11698": [
"766,512,6335",
"766,512,6357",
"768,513,6372",
"768,513,6384",
"767,514,6400",
"771,509,6581",
"774,507,6596",
"784,507,6611",
"801,505,6629",
"820,503,6644",
"839,501,6656",
"858,499,6674",
"878,499,6687",
"895,499,6704",
"912,499,6719",
"925,499,6735",
"936,498,6748",
"947,496,6774",
"951,495,6784",
"956,492,6803",
"959,491,6817",
"960,490,6832",
"961,489,6847",
"962,488,6861",
"962,488,6876",
"962,488,6907",
"963,488,6922",
"963,487,6937",
"964,486,6977",
"966,484,6978",
"966,483,6993",
"967,482,7008",
"968,481,7158"
],
"PX12160": [
"#px-captcha",
""
],
"PX11427": 458,
"PX12208": 695,
"PX11824": 530,
"PX11631": 50,
"PX11843": 1920,
"PX11781": 1080,
"PX11906": [
"getAttribute",
"className",
"nodeName",
"nodeName"
],
"PX11945": 273,
"PX12174": 23.89,
"PX11882": "pointerdown",
"PX11642": 2695.99609375,
"PX11313": 645.44921875,
"PX11772": 5787,
"PX11529": 9232191,
"PX11555": 4294705152,
"PX11833": 16707175,
"PX12024": 273.22,
"PX11759": 23.89,
"PX11896": "pointerup",
"PX11633": 2696.22265625,
"PX11445": 645.44921875,
"PX12417": 11157,
"PX12382": [
5367
],
"PX11360": 374,
"PX11735": True,
"PX11874": "en-US",
"PX12205": self.token,
"PX11357": 5053,
"PX12563": "130b70fd5052decdbd8bbf221736a5ff9b10017912a9217d1a80eb2e88f051a0",
"PX11321": 11171,
"PX11351": False,
"PX11919": False,
"PX11710": False,
"PX12407": False,
"PX12411": 853,
"PX11494": 1920,
"PX12265": 1,
"PX11706": "PX12374",
"PX12489": "v1.8.7",
"PX12499": False,
"PX12500": False,
"PX12521": True,
"PX12522": False,
"PX12528": False,
"PX12529": True,
"PX12585": "https://booking.flyfrontier.com/Flight/InternalSelect?o1=DEN&d1=LAS&dd1=2023-11-30&ADT=1&umnr=false&mon=true",
"PX12596": False,
"PX12538": True,
"PX12537": 5,
"PX12544": True,
"PX12589": "succeeded",
"PX12590": "e9d4735339614efcab53d40d03b3e2f08ea9534084e646c897808312cfa39bd81662465543537ac45c00c0174c70a18317f7e4c5801c23f19",
"PX12610": "PGJQWUwlWFofT!M(DSgdyAASnNBaSNtITEVMHIHVxgfDUAMehR%DU)@ERdeTAh!cBFZUkNbZBcBIQ(mUUkXSkkdNDh$AzlpeCYwS@sJSlkCMHxRdh(SR!AQe)UOYDYs",
"PX12504": 11179,
"PX12547": False,
"PX11902": 5,
"PX11560": self.performanceNow,
"PX12280": self.px11280,
"PX11496": self.uuid,
"PX12564": None,
"PX12565": -1
}
}
if __name__ == '__main__':
a2 = "B1kHB1kHFF4JX1kODVAKRVBQXF1FWVkNDUUKXVpfRQteDVFRDFhcXF8MWBRbWV1bXlhYWBQcGh0NFhYWFllZWQcHWRQLCxReWBQ9Wi4cMj4mGAwvPVE8Ly5cJx9VVRYWFhYHWVlZBwcHWRRZX1hYXV1cWlpZXVpdFhYWFllZB1lZWRQMWw5bX19fCQldXlALWw1eUFoJX1kOX1tbUQ4JXwwJXgpYX1wMXApQDVwLXQsKDFtQDVpfXl4LCllRXAtQWlpcFhYWFgdZWQdZWQcHFF4JX1pYCloORVBQXF1FWVkNDUUKXVpQRQ5fCl8ODA5ZDFwOWxQcGh0NFhYWFlkHBwcHWRQLBA1eChpRXA9eBgFYWVoDXAAAWBYWFhYHWVkHWVkUXglfWlhQXFBFUFBcXUVZWQ0NRQpdWlBFDl8KXw4MDlkMXA5bFhYWFgdZB1lZWRQLHRYWFhZZWVkHWQcUWVBYXF9QWlhfW11bXF1dWFhbWlwWFhYWB1lZWQcHBwcUWV1ZWw=="
b2 = base64.b64decode(a2.encode())
for i in bytes(encrypt(b2, 872 % 128)).decode().split('~~~~'):
print('o11o111o' in i, i)
tmp = i.split('|')
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 = '31fafcb0-8844-11ee-8d49-97ed9bc8f96f'
px = PxEnv('https://www.flyfrontier.com/',
sid, vid, ts, num1, num2, str1, uuid
, 1700552863875, 1700464712550
, 1700552863903, 1700552863903)
print(px.get_px11590())
......@@ -13,14 +13,14 @@ import execjs
import requests
import tls_client
from loguru import logger
from env import PxEnv
from utils import PxUtils
with open('js/encodepayload.js', 'r', encoding='utf-8') as f:
jsCode = f.read()
ctx = execjs.compile(jsCode)
ctxPC = execjs.compile(open('pc.js').read())
ctxStep2 = execjs.compile(open('step2.js').read())
# with open('js/encodepayload.js', 'r', encoding='utf-8') as f:
# jsCode = f.read()
# # ctx = execjs.compile(jsCode)
# # ctxPC = execjs.compile(open('pc.js').read())
# ctxStep2 = execjs.compile(open('step2.js').read())
def get_timestamp():
......@@ -67,7 +67,7 @@ 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 = 'http://127.0.0.1:7890'
session.proxies = {
'http': prox,
'https': prox,
......@@ -169,10 +169,11 @@ class PxBypass():
self._token()
def _init(self):
cks = '_px2=eyJ1IjoiOGRjYjQ3NjAtODl2jYi0xMWVlLTkwMmUtODE4MTcxMjRjOTBlIiwidiI6IjhlOGIyMGMzLTg5Y2ItMTFlZS05YWI1LTAwMjc4Njk4ZmY1ZiIsInQiOjYyMDIzMzg4MDAwNCwiaCI6Ijk4NjYzMWNkZDBmNTBjMWE5NjZjYjgwOGNlNzFjYTJkMWNkYzc2MjdjYTc4MTBlZDVhODdmN2FiMzYzOGU1OTgifQ==; pxcts=8e8b30eb-89cb-11ee-9ab5-ccabb13183c7; _px2=eyJ1IjoiOGRjYjQ3NjAtODljYi0xMWVlLTkwMmUtODE4MTcxMjRjOTBlIiwidiI6IjhlOGIyMGMzLTg5Y2ItMTFlZS05YWI1LTAwMjc4Njk4ZmY1ZiIsInQiOjYyMDIzMzg4MDAwNCwiaCI6Ijk4NjYzMWNkZDBmNTBjMWE5NjZjYjgwOGNlNzFjYTJkMWNkYzc2MjdjYTc4MTBlZDVhODdmN2FiMzYzOGU1OTgifQ=='
res = self.session.get(
self.target_url,
# 'https://booking.flyfrontier.com/Flight/InternalSelect?o1=DEN&d1=LAS&dd1=2023-11-30&ADT=1&umnr=false&mon=true',
# self.target_url,
'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",
"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",
......@@ -187,6 +188,7 @@ class PxBypass():
"sec-fetch-site": "none",
"sec-fetch-user": "?1",
"upgrade-insecure-requests": "1",
'cookie': cks,
"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=False)
self.log.info(f"初始化请求 res {res.status_code}")
......@@ -194,8 +196,8 @@ class PxBypass():
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 str(uuid.uuid4())
......@@ -373,11 +375,15 @@ class PxBypass():
self.log.info(self.uuid)
self.log.info(f'performanceNow {self.performanceNow}')
# sid, vid,ts, num1 ,num2,str1, uuid
data_str = ctxStep2.call('genPayload2', self.target_url, self.sid, self.vid, self.ts, self.num1, self.num2,
# 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, self.performanceNow, self.px12280, nn)
# data_str =
# data = json.loads(data_str)
p = PxEnv(self.target_url, self.sid, self.vid, self.ts, self.num1, self.num2,
self.str1, self.uuid,
self.startTs, self.startTs2, self.performanceNow, self.px12280, nn)
data = json.loads(data_str)
self.startTs, self.startTs2, self.performanceNow, self.px12280)
data = [p.get_px11590()]
# data_str2 = ctxStep2.call('genPayload3', self.target_url, self.sid, self.vid, self.ts, self.num1, self.num2,
# self.str1, self.uuid,
# self.startTs, self.startTs2, nn)
......@@ -423,11 +429,14 @@ class PxBypass():
# sid, vid,ts, num1 ,num2,str1, uuid
# genPayload4(url, sid, vid, ts, num1, num2, str1, uuid, startTs, startTs2, performanceNow, px11280, n)
data_str = ctxStep2.call('genPayload4', self.target_url, self.sid, self.vid, self.ts, self.num1,
self.num2,
self.str1, self.uuid,self.startTs, self.startTs2, self.performanceNow, self.px12280)
self.do_collector(data_str)
# data_str = ctxStep2.call('genPayload4', self.target_url, self.sid, self.vid, self.ts, self.num1,
# self.num2,
# self.str1, self.uuid,self.startTs, self.startTs2, self.performanceNow, self.px12280)
p = PxEnv(self.target_url, self.sid, self.vid, self.ts, self.num1, self.num2,
self.str1, self.uuid,
self.startTs, self.startTs2, self.performanceNow, self.px12280)
data = [p.get_px12123(), p.get_px11891(), p.get_px11547()]
self.do_collector(data)
def parse_resp(self, resp):
if 'ob' in resp:
......
......@@ -4862,7 +4862,11 @@ function createPx2(t, e) {
function createPx1(t) {
t = "" + t;
for (var e, n = 0, r = 0; r < t.length; r++) {
n = (n << 5) - n + t.charCodeAt(r), n |= 0;
console.log(n, t.charCodeAt(r))
n = (n << 5) - n + t.charCodeAt(r);
n |= 0;
console.log(r,n )
}
return e = n, (e |= 0) < 0 && (e += 4294967296), e.toString(16);
}
......@@ -5671,7 +5675,7 @@ function genPayload4(url, sid, vid, ts, num1, num2, str1, uuid, startTs, startTs
}
// startTs2 PX11280
console.log(genPayload4('https://www.flyfrontier.com/',
console.log(genPayload2('https://www.flyfrontier.com/',
sid, vid, ts, num1, num2, str1, uuid
, 1700552863875, 1700464712550
......
......@@ -60,13 +60,10 @@ a2 = "KysrKytSHj0SGlAeUVFSHgcbKFMrCA0LLBg3GjgmLxUvJTcWLCY7UiwbUhovNTQOLjUnFSw1Mx
a2 = "UisrUitSHhEBDRAHHlIeAAsMAxAbHBwcHCsrKysrUh49EhpQHlFRUh4HGyhTKwgNCzsINA8sJjsYLA87FiwmO1IsG1IaLzU0Di41J1MsJSsWLBgjUiwYM1csJglSOwgBGysLFQsGCytUKw8zFS01M1ctNjNTLjYzUCwmARYvNiQOODFTCiw2MAsuNjMYLyYGCi9QJxg4NScaOCErESsMMwstCDcYLzYzUiwIMxUvIRULAyErVCsICg4tJiQPLwgnGi8lJxosJg4POxg3FTg2MA4tNTtTLAg3Vzg1Oxo7UDAJOCYzVzsYOA4vGCtRO1AnGDgIN1MsJicYLTUnGDsPM1IvGDgPO1A7Gi8YAQsEM19fHhYQFwceUVJSHBwcHFIrK1IrUh4RAQ0QBx5SHgALDAMQGxwcHBxSKysrK1JSUh49EhoGBx5RUVIeUVRRU1JRBlEAVFJUA1pQV1QEB1VXBgFXVAcHUQQHVVVUBFFRV1paV1VSAVYHVgRUAVdXAAFQAFoAWgdbUFEGBlgHGyhSAzVTDgFRMAoAOiMLLQgnUC02LxstNgVTLBg3ViwIMFseFhAXBx5RUlIcHBwcUisrK1IrUlIeUhwcHBxSUitSK1IeARc="
a2 = "WVkHBwdZFDcYEFoUW1tYFA0RIlkhAgcBMRIuBSYvMVsxPCEcJywyBScrWBAlPz4EJD8tXSYsAxwyPz4DJzwmBSUSIgExPD0fIQEfAQwBIV4hBSUQMgI6BTEFJgUkPA9aMgIPHCU8LgQyO1kAJzw5XSQ8JgEyLAwDJi8yATI8AAAmASEbIQY5AScCLVslLClYJTwtWyUsMVglLD0bIQUPAScBIgQmAjkSJgIPXTFaJRAxEi4AMRILXCUsPVwlEiFbJiwtEicvJgUlWiYDMiwyAiY8IV0xPAQAMgU5XCc8BAElWi0RJjwyAyYsKgIxPC1bJiwlWiZaMgAhBlhVFBwaHQ0UW1hYFhYWFgdZB1lZWRQLHRYWFhYHWVkHWVlZBxRFWQ=="
a2 = 'WVkHBwdZFDcYEFoUW1tYFA0RIlkhAgcBJy86AjECOVsmAikcJywEAjEBWBAlPz4EJDwDHyUFPRwnLC1cJTwLECUCOgInPCoEIQEfAQwBIV4hAg8SJRIDXSUvMgEkPAAAMTwPHCU8LgQyO1kBJSwlWyQ8Cx8mWjIDJQILESc8OgQyKyEbIQY5AScCLVslLClcJTwDEic8OVwlAgsbIQUPAScBIgImBTlbJRILHyUFMgUnPy1dMTwtECUSC1wlPCICMQU6AjE/OREnPDkRJywmBCUSORInLAwEMRIAADECMRAxPDldJgU5XCc8CxExAg9YJTwyBTESLRIhBlhVFBwaHQ0UW1hYFhYWFgdZWQdZWVkHFEVZFhYWFgdZB1lZWRQLHQ=='
# a2 = "B1lZWQcHWQcUNxgQDA0UW1tYFFkJWF9dC1teXVAJXV5ZWQtfCl9dWVoLCVEODVhYUQldXg4LDl5QUFBYX1xbDVpeDl5aC19aWlwNDlEKW14KWFBSDREiWAk/WQQLWzoACjApAScCLVonPANdJjwPWCYSOVslEgxRFBwaHQ0UW1hYFhYWFllZBwcHWRQ3GBBaFFtbWBQNESJZIQIHASY8OgAyLyVZMjwpHCcsIgMxO1gQJT8+BCQ8D1wmLyUcJgItWTIsLVglWjFcJiwEASEBHwEMASFeIQI9ESY8DAMnPyICJDwPETIvLRwlPC4EMjtYXTE8MVskPy4AJyw5WiYFMgUyBTFaJgEhGyEGOQEnAi1aJzwDXSY8D1smEjlbJRILGyEFDwEnASICJi8tXSUFPVglWiYCJz8iBCU/MRAmLD0QJgU5WzI8OVwmPANaJjwxETIsAxEmPD1bJjwlESYCJVkxPyFZJhI5ECYSDxIxAilYJzw9WzIsIVwmLC1ZIQZYVRQcGh0NFFtYWBYWFhYHWQdZB1kUGwsHGg0UWBQKAQYJGhEWFhYWB1kHWVlZFAsd"
# 0III0I00 判断是否通过
b2 = base64.b64decode(a2.encode())
for i in bytes(encrypt(b2, 872%128)).decode().split('~~~~'):
print('o11o111o'in i, i)
......
......@@ -9,7 +9,7 @@ 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)}'
# prox = 'http://user-uni001-region-us-sessid-1111-sesstime-5-keep-true:q39CEBTs5A5YQXor@pr.roxlabs.cn:4600'
cks = '_pxvid=8e8b20c3-89cb-11ee-9ab5-00278698ff5f; pxcts=8e8b30eb-89cb-11ee-9ab5-ccabb13183c7; _px2=eyJ1IjoiOGRjYjQ3NjAtODljYi0xMWVlLTkwMmUtODE4MTcxMjRjOTBlIiwidiI6IjhlOGIyMGMzLTg5Y2ItMTFlZS05YWI1LTAwMjc4Njk4ZmY1ZiIsInQiOjYyMDIzMzg4MDAwNCwiaCI6Ijk4NjYzMWNkZDBmNTBjMWE5NjZjYjgwOGNlNzFjYTJkMWNkYzc2MjdjYTc4MTBlZDVhODdmN2FiMzYzOGU1OTgifQ==; pxcts=8e8b30eb-89cb-11ee-9ab5-ccabb13183c7; _px2=eyJ1IjoiOGRjYjQ3NjAtODljYi0xMWVlLTkwMmUtODE4MTcxMjRjOTBlIiwidiI6IjhlOGIyMGMzLTg5Y2ItMTFlZS05YWI1LTAwMjc4Njk4ZmY1ZiIsInQiOjYyMDIzMzg4MDAwNCwiaCI6Ijk4NjYzMWNkZDBmNTBjMWE5NjZjYjgwOGNlNzFjYTJkMWNkYzc2MjdjYTc4MTBlZDVhODdmN2FiMzYzOGU1OTgifQ=='
cks = '_px2=eyJ1IjoiOGRjYjQ3NjAt1ODljYi011xMWVlLTkwMmUtODE4MTcxMjRjOTBlIiwidiI6IjhlOGIyMGMzLTg5Y2ItMTFlZS05YWI1LTAwMjc4Njk4ZmY1ZiIsInQiOjYyMDIzMzg4MDAwNCwiaCI6Ijk4NjYzMWNkZDBmNTBjMWE5NjZjYjgwOGNlNzFjYTJkMWNkYzc2MjdjYTc4MTBlZDVhODdmN2FiMzYzOGU1OTgifQ==; pxcts=8e8b30eb-89cb-11ee-9ab5-ccabb13183c7; _px2=eyJ1IjoiOGRjYjQ3NjAtODljYi0xMWVlLTkwMmUtODE4MTcxMjRjOTBlIiwidiI6IjhlOGIyMGMzLTg5Y2ItMTFlZS05YWI1LTAwMjc4Njk4ZmY1ZiIsInQiOjYyMDIzMzg4MDAwNCwiaCI6Ijk4NjYzMWNkZDBmNTBjMWE5NjZjYjgwOGNlNzFjYTJkMWNkYzc2MjdjYTc4MTBlZDVhODdmN2FiMzYzOGU1OTgifQ=='
......@@ -45,4 +45,6 @@ response = requests.post('http://52.52.23.116/tls/forward',
response = response.json()
print(response)
print(response['status_code'])
print(response['text'])
\ No newline at end of file
print(response['text'])
with open('index.html', 'w') as f:
f.write(response['text'])
\ No newline at end of file
......@@ -6,6 +6,12 @@ from urllib.parse import quote, unquote
def wv(t, e, n, r, o):
return math.floor(((t - e) / (n - e)) * (o - r) + r)
def left_shift(based, counter):
val = based << (counter % 32)
maxint = 2147483647
if not -maxint - 1 <= val <= maxint:
val = (val + (maxint + 1)) % (2 * (maxint + 1)) - maxint - 1
return val
class PxUtils():
......@@ -84,4 +90,7 @@ if __name__ == '__main__':
p = PxUtils()
payload = '[{"t":"PX12095","d":{"PX11645":"https://www.flyfrontier.com/","PX12207":0,"PX12458":"MacIntel","PX11902":0,"PX11560":4769,"PX12248":3600,"PX11385":1700553697276,"PX12280":1700553697286,"PX11496":"31fafcb0-8844-11ee-8d49-97ed9bc8f96f","PX12564":null,"PX12565":-1,"PX11379":false}}]'
uuid = '31fafcb0-8844-11ee-8d49-97ed9bc8f96f'
print(p.encode_payload(payload, uuid))
\ No newline at end of file
print(p.encode_payload(payload, uuid))
t = 'url, sid, vid, ts, num1, num2, str1, uuid, startTs, startTs2, performanceNow, px11280'
for i in t.split(', '):
print(f'self.{i} = {i}')
\ 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