Commit 965c45f1 authored by wangmingming's avatar wangmingming

111123123

parent 51ea555e
...@@ -50,6 +50,7 @@ for i in range(100): ...@@ -50,6 +50,7 @@ for i in range(100):
headers.update(r) headers.update(r)
print(f'{(time.time() - t1) *1000:.3f}ms',len(headers['X-1ItxWO9i-a'.lower()])) print(f'{(time.time() - t1) *1000:.3f}ms',len(headers['X-1ItxWO9i-a'.lower()]))
print(headers['user-agent'])
url = "https://jbrest.jetblue.com/lfs-rwb/outboundLFS" url = "https://jbrest.jetblue.com/lfs-rwb/outboundLFS"
data = { data = {
"tripType": "oneWay", "tripType": "oneWay",
......
var v_new = function (v) {
var temp = v_new_toggle;
v_new_toggle = true;
var r = new v;
v_new_toggle = temp;
return r
}
const Canvas = require("canvas"); const Canvas = require("canvas");
proxy = function (tt, name) { proxy = function (tt, name) {
return new Proxy(tt, { return new Proxy(tt, {
...@@ -13,7 +20,7 @@ proxy = function (tt, name) { ...@@ -13,7 +20,7 @@ proxy = function (tt, name) {
// } // }
// console.log(Reflect.get(target, '_cf_chl_ctx', receiver)) // console.log(Reflect.get(target, '_cf_chl_ctx', receiver))
if (!['_registeredHandlers', 'window', '_currentEvent', 'performance', 'debug', '_eventListenerss', 'top', 'prototype'].includes(p) && res && typeof res === 'object' && typeof p !== 'symbol') { if (!['_registeredHandlers', 'window', '_currentEvent', 'debug', '_eventListenerss', 'top', 'prototype'].includes(p) && res && typeof res === 'object' && typeof p !== 'symbol') {
return proxy(res, p) return proxy(res, p)
} }
return res; return res;
...@@ -48,6 +55,9 @@ const { ...@@ -48,6 +55,9 @@ const {
} = require('worker_threads'); } = require('worker_threads');
const crypto = require("crypto"); // 引入 jsdom const crypto = require("crypto"); // 引入 jsdom
var _random = Math.random
Date.now = function now() { Date.now = function now() {
return 1685096207545 return 1685096207545
}; };
...@@ -75,15 +85,13 @@ Math.random = function random() { ...@@ -75,15 +85,13 @@ Math.random = function random() {
const FingerprintGenerator = require('fingerprint-generator').FingerprintGenerator; const FingerprintGenerator = require('fingerprint-generator').FingerprintGenerator;
let fingerprintGenerator = new FingerprintGenerator({ let fingerprintGenerator = new FingerprintGenerator({
browsers: [ browsers: [
{name: "firefox", minVersion: 80}, {name: "chrome", minVersion: 87, maxVersion:112},
{name: "chrome", minVersion: 87},
"safari"
], ],
devices: [ devices: [
"desktop" "desktop"
], ],
operatingSystems: [ operatingSystems: [
"windows" "macos"
] ]
}); });
let {fingerprint, headers} = fingerprintGenerator.getFingerprint(); let {fingerprint, headers} = fingerprintGenerator.getFingerprint();
...@@ -464,18 +472,35 @@ const dom = new JSDOM(` ...@@ -464,18 +472,35 @@ const dom = new JSDOM(`
</body></html>`, { </body></html>`, {
url: "https://www.jetblue.com/booking/flights?from=JFK&to=STT&depart=2023-09-14&return=2023-09-16&isMultiCity=false&noOfRoute=1&lang=en&adults=1&children=0&infants=0&sharedMarket=false&roundTripFaresFlag=false&usePoints=false", url: "https://www.jetblue.com/booking/flights?from=JFK&to=STT&depart=2023-09-14&return=2023-09-16&isMultiCity=false&noOfRoute=1&lang=en&adults=1&children=0&infants=0&sharedMarket=false&roundTripFaresFlag=false&usePoints=false",
// url: "https://www.jetblue.com",
// window.location,document.URL // window.location,document.URL
referrer: "https://www.jetblue.com/booking/flights?from=JFK&to=STT&depart=2023-09-14&return=2023-09-16&isMultiCity=false&noOfRoute=1&lang=en&adults=1&children=0&infants=0&sharedMarket=false&roundTripFaresFlag=false&usePoints=false", referrer: "https://www.jetblue.com/booking/flights?from=JFK&to=STT&depart=2023-09-14&return=2023-09-16&isMultiCity=false&noOfRoute=1&lang=en&adults=1&children=0&infants=0&sharedMarket=false&roundTripFaresFlag=false&usePoints=false",
// referrer: "https://www.jetblue.com/",
// document.referrer // document.referrer
contentType: "text/html", contentType: "text/html",
// document.contentType // document.contentType
userAgent: fingerprint.navigator.userAgent, // userAgent: fingerprint.navigator.userAgent,
userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36',
// UA // UA
includeNodeLocations: true // 保留由HTML解析器生成的位置信息,允许使用nodeLocation()方法 includeNodeLocations: true // 保留由HTML解析器生成的位置信息,允许使用nodeLocation()方法
}); });
window = dom.window; window = dom.window;
window.fingerprint = fingerprint;
fingerprint.screen.availWidth =parseInt((_random()*100+900) / 1000 * 1920);
fingerprint.screen.availHeight = parseInt((_random()*100+900) / 1000 * 1080);
fingerprint.screen.width = fingerprint.screen.availWidth ;
fingerprint.screen.height = fingerprint.screen.availHeight ;
window.screenX = 0
window.screenY = 25
window.isSecureContext = true
window.innerWidth = fingerprint.screen.availWidth;
window.outerWidth = fingerprint.screen.availWidth;
window.innerHeight = fingerprint.screen.availHeight;
window.outerHeight = fingerprint.screen.availHeight;
window.screenLeft = 0;
window.screenTop = parseInt(Math.random()*10+20);
window.fingerprint = proxy(fingerprint, 'fingerprint');
window.saffunc = v_saf window.saffunc = v_saf
...@@ -496,25 +521,25 @@ class App { ...@@ -496,25 +521,25 @@ class App {
} }
getDetails() { getDetails() {
console.log('CanvasRenderingContext2D.getDetails') console.log('App.getDetails')
} }
getIsInstalled() { getIsInstalled() {
console.log('CanvasRenderingContext2D.getIsInstalled') console.log('App.getIsInstalled')
return false return false
} }
installState() { installState() {
console.log('CanvasRenderingContext2D.installState') console.log('App.installState')
} }
runningState() { runningState() {
console.log('CanvasRenderingContext2D.runningState') console.log('App.runningState')
} }
InstallState() { InstallState() {
console.log('CanvasRenderingContext2D.InstallState') console.log('App.InstallState')
return { return {
"DISABLED": "disabled", "DISABLED": "disabled",
"INSTALLED": "installed", "INSTALLED": "installed",
...@@ -523,7 +548,7 @@ class App { ...@@ -523,7 +548,7 @@ class App {
} }
RunningState() { RunningState() {
console.log('CanvasRenderingContext2D.RunningState') console.log('App.RunningState')
return { return {
"CANNOT_RUN": "cannot_run", "CANNOT_RUN": "cannot_run",
"READY_TO_RUN": "ready_to_run", "READY_TO_RUN": "ready_to_run",
...@@ -538,20 +563,20 @@ window.chrome = { ...@@ -538,20 +563,20 @@ window.chrome = {
app: proxy(new App(), 'chrome.app'), app: proxy(new App(), 'chrome.app'),
csi: function () { csi: function () {
return { return {
"startE": 1690961858312, "startE": Date.now(),
"onloadT": 1690961860013, "onloadT": Date.now() - parseInt(Math.random()*10000 + 15000),
"pageT": 276633.715, "pageT": parseInt(Math.random()*10000 + 15000),
"tran": 15 "tran": 15
} }
}, },
loadTimes: function () { loadTimes: function () {
return { return {
"requestTime": 1690961858.312, "requestTime": Date.now() / 1000,
"startLoadTime": 1690961858.312, "startLoadTime": Date.now() / 1000,
"commitLoadTime": 1690961859.942, "commitLoadTime": Date.now() / 1000,
"finishDocumentLoadTime": 1690961860.013, "finishDocumentLoadTime": Date.now() / 1000,
"finishLoadTime": 1690961860.103, "finishLoadTime": Date.now() / 1000,
"firstPaintTime": 1690961860.066, "firstPaintTime": Date.now() / 1000,
"firstPaintAfterLoadTime": 0, "firstPaintAfterLoadTime": 0,
"navigationType": "Other", "navigationType": "Other",
"wasFetchedViaSpdy": true, "wasFetchedViaSpdy": true,
...@@ -942,9 +967,165 @@ class OffscreenCanvas { ...@@ -942,9 +967,165 @@ class OffscreenCanvas {
window.OffscreenCanvas = proxy(OffscreenCanvas, 'OffscreenCanvas') window.OffscreenCanvas = proxy(OffscreenCanvas, 'OffscreenCanvas')
RTCSessionDescription = v_saf(function RTCSessionDescription() {
;
})
Object.defineProperties(RTCSessionDescription.prototype, {
sdp: {
get: v_saf(function get() {
print(" [*] RTCSessionDescription -> sdp[get]");
return `v=0
o=- 7671951856866369796 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0
a=extmap-allow-mixed
a=msid-semantic: WMS
m=application 9 UDP/DTLS/SCTP webrtc-datachannel
c=IN IP4 0.0.0.0
a=ice-ufrag:2PVz
a=ice-pwd:UsK+8dfSl/7xZKq9bF6tSooX
a=ice-options:trickle
a=fingerprint:sha-256 36:55:F4:0E:9E:97:80:5E:81:D7:8E:18:F0:EB:33:F4:10:88:93:20:AA:9E:35:61:6A:D3:15:5D:6F:73:76:DF
a=setup:actpass
a=mid:0
a=sctp-port:5000
a=max-message-size:262144`
})
},
type: {
get: v_saf(function get() {
print(" [*] RTCSessionDescription -> type[get]", "offer");
return "offer"
})
},
[Symbol.toStringTag]: {value: "RTCSessionDescription", writable: false, enumerable: false, configurable: true},
})
window.RTCPeerConnection = v_saf(function RTCPeerConnection() { RTCPeerConnection = v_saf(function RTCPeerConnection() {
})
Object.defineProperties(RTCPeerConnection.prototype, {
localDescription: {
value: {
get: v_saf(function get() {
print('get localDescription')
return publicDescription
})
}
},
onicecandidate: {
set() {
print(" [*] RTCPeerConnection -> onicecandidate[set]", [].slice.call(arguments));
this._onicecandidate = arguments[0]
}
},
createDataChannel: {
value: v_saf(function createDataChannel(label, option) {
print(" [*] RTCPeerConnection -> createDataChannel[func]", [].slice.call(arguments));
let res = {
'onopen': function onopen() {
print(" [*] RTCPeerConnection -> createDataChannel[func] onopen", [].slice.call(arguments));
},
'onmessage': function onmessage() {
print(" [*] RTCPeerConnection -> createDataChannel[func] onmessage", [].slice.call(arguments));
},
}
return proxy(res, 'dataChannel')
})
},
createOffer: {
value: v_saf(function createOffer() {
print(" [*] RTCPeerConnection -> createOffer[func]", [].slice.call(arguments));
let p = new Promise(function (resolve, reject) {
// 2. 执行异步操作任务
print('RTCPeerConnection createOffer', resolve, reject);
let res = v_new(RTCSessionDescription)
res.sdp = RTCSessionDescription.prototype.sdp
res.type = RTCSessionDescription.prototype.type
resolve(res)
})
return p;
// return {
// then: function (func, func2) {
// v_console_log(" [*] RTCPeerConnection -> createOffer[func] then", [].slice.call(arguments));
// func2(v_new(RTCSessionDescription));
// func(v_new(RTCSessionDescription));
// return func(v_new(RTCSessionDescription));
// }, catch: function () {
// }
// }
})
},
setLocalDescription: {
value: v_saf(function setLocalDescription() {
var _this = this;
print(" [*] RTCPeerConnection -> setLocalDescription[func]", [].slice.call(arguments));
let p = new Promise(function (resolve, reject) {
// 2. 执行异步操作任务
// let res = this.setLocalDescription(v_new(RTCSessionDescription))
// console.log('RTCPeerConnection create',res);
print(" [*] RTCPeerConnection -> setLocalDescription[func] then", [].slice.call(arguments));
publicDescription = arguments[0]
_this._onicecandidate({
candidate: {
address: "192.168.50.235",
candidate: "candidate:417527190 1 udp 2122260223 192.168.50.235 61081 typ host generation 0 ufrag WlUH network-id 1",
component: "rtp",
foundation: "417527190",
port: 61081,
priority: 2122260223,
protocol: "udp",
relatedAddress: null,
relatedPort: null,
sdpMLineIndex: 0,
sdpMid: "0",
tcpType: null,
type: "host",
usernameFragment: "WlUH",
}
})
// window.debug = true
resolve(publicDescription)
// return res
})
return p;
// return {
// then: function (func, func2) {
// print(" [*] RTCPeerConnection -> setLocalDescription[func] then", [].slice.call(arguments));
//
// _this._onicecandidate({
// candidate: {
// address: "192.168.50.235",
// candidate: "candidate:417527190 1 udp 2122260223 192.168.50.235 61081 typ host generation 0 ufrag WlUH network-id 1",
// component: "rtp",
// foundation: "417527190",
// port: 61081,
// priority: 2122260223,
// protocol: "udp",
// relatedAddress: null,
// relatedPort: null,
// sdpMLineIndex: 0,
// sdpMid: "0",
// tcpType: null,
// type: "host",
// usernameFragment: "WlUH",
// }
// })
//
// return this
// }, catch: function () {
// }
// }
})
},
[Symbol.toStringTag]: {value: "RTCPeerConnection", writable: false, enumerable: false, configurable: true},
}) })
window.RTCPeerConnection = proxy(RTCPeerConnection, 'RTCPeerConnection')
window.webkitRTCPeerConnection = v_saf(function RTCPeerConnection() { window.webkitRTCPeerConnection = v_saf(function RTCPeerConnection() {
}) })
window.AuthenticatorResponse = v_saf(function AuthenticatorResponse() { window.AuthenticatorResponse = v_saf(function AuthenticatorResponse() {
...@@ -955,8 +1136,9 @@ window.AuthenticatorAttestationResponse = v_saf(function AuthenticatorAttestatio ...@@ -955,8 +1136,9 @@ window.AuthenticatorAttestationResponse = v_saf(function AuthenticatorAttestatio
}) })
window.AuthenticatorAssertionResponse = v_saf(function AuthenticatorAssertionResponse() { window.AuthenticatorAssertionResponse = v_saf(function AuthenticatorAssertionResponse() {
}) })
window.CanvasRenderingContext2D = v_saf(function CanvasRenderingContext2D() {
})
window.SubmitEvent = v_saf(function SubmitEvent() { window.SubmitEvent = v_saf(function SubmitEvent() {
}) })
var v_new_toggle = true var v_new_toggle = true
...@@ -1783,7 +1965,15 @@ _console = console.log ...@@ -1783,7 +1965,15 @@ _console = console.log
global = window global = window
window.global = window window.global = window
var idx = 0 var idx = 0
// crypto.getRandomValues = function (a) {
// console.log(a)
//
// for (var i = 0; i < a.length; i++) {
// a.fill(10000, i, i + 1)
// }
// }
window.crypto = crypto; window.crypto = crypto;
_setTimeout = setTimeout _setTimeout = setTimeout
timesIds = 0; timesIds = 0;
window.setTimeout = function setTimeout(func, delay) { window.setTimeout = function setTimeout(func, delay) {
...@@ -1805,7 +1995,7 @@ window.setTimeout = function setTimeout(func, delay) { ...@@ -1805,7 +1995,7 @@ window.setTimeout = function setTimeout(func, delay) {
window.setInterval = function (func, delay) { window.setInterval = function (func, delay) {
// console.log('setInterval',delay, func) // console.log('setInterval',delay, func)
try { try {
// func() func()
} catch (e) { } catch (e) {
} }
}; };
...@@ -1830,6 +2020,15 @@ var events = {} ...@@ -1830,6 +2020,15 @@ var events = {}
// } // }
var _stringify = JSON.stringify;
JSON.stringify = function (){
let res = _stringify.apply(this, arguments);
console.log('_stringify',arguments, res)
return res;
}
_console2 = function () { _console2 = function () {
} }
con3 = function () { con3 = function () {
...@@ -1838,6 +2037,8 @@ var times = 0; ...@@ -1838,6 +2037,8 @@ var times = 0;
var stackTrace = {}; var stackTrace = {};
let arggs = []; let arggs = [];
window.videos = [];
window.fonts = [];
(function a(R) { (function a(R) {
var M = {}, Z = {}; var M = {}, Z = {};
...@@ -4940,6 +5141,22 @@ let arggs = []; ...@@ -4940,6 +5141,22 @@ let arggs = [];
return nK return nK
} }
nL = nk.C(); nL = nk.C();
if (Array.isArray(nk.n[0]) && nk.n[0].length === 60 && Array.isArray(nk.n[0][0])) {
let res = [];
nk.n[0].forEach((e, i) => {
if (e && e.length == 2) {
res.push(i + '==' + e[1].length + '=>')
res.push(e[1] + '')
} else {
res.push(i + '==0=>iii')
}
})
if (Array.isArray(nk.n[0][22]) && nk.n[0][22].length != 0){
debugger;
}
console.log([].slice.call(res).join('iii'))
}
if (nk.w.length === 0) { if (nk.w.length === 0) {
Rp[nL](nk) Rp[nL](nk)
} else { } else {
...@@ -4962,9 +5179,9 @@ let arggs = []; ...@@ -4962,9 +5179,9 @@ let arggs = [];
setTimeout(() => { setTimeout(() => {
// let randomT1 = parseInt(Math.random() * 300 + 100); // let randomT1 = parseInt(Math.random() * 300 + 100);
// randomT1 = 1; // randomT1 = 1;
// const from = {x: parseInt(Math.random() * 500 + 500), y: parseInt(Math.random() * 500 + 500)} const from = {x: parseInt(Math.random() * 500 + 500), y: parseInt(Math.random() * 500 + 500)}
// const to = {x: parseInt(Math.random() * 500 + 500), y: parseInt(Math.random() * 500 + 500)} const to = {x: parseInt(Math.random() * 500 + 500), y: parseInt(Math.random() * 500 + 500)}
//
// const route = path(from, to) // const route = path(from, to)
// for (let p of route) { // for (let p of route) {
// let t = new window.MouseEvent('mousemove'); // let t = new window.MouseEvent('mousemove');
...@@ -4997,8 +5214,9 @@ setTimeout(() => { ...@@ -4997,8 +5214,9 @@ setTimeout(() => {
xhr.send("{\"tripType\":\"oneWay\",\"from\":\"ZLA\",\"to\":\"NAS\",\"depart\":\"2023-04-11\",\"cabin\":\"economy\",\"refundable\":false,\"dates\":{\"before\":\"3\",\"after\":\"3\"},\"pax\":{\"ADT\":1,\"CHD\":0,\"INF\":0,\"UNN\":0},\"redempoint\":false,\"pointsBreakup\":{\"option\":\"\",\"value\":0},\"isMultiCity\":false}") xhr.send("{\"tripType\":\"oneWay\",\"from\":\"ZLA\",\"to\":\"NAS\",\"depart\":\"2023-04-11\",\"cabin\":\"economy\",\"refundable\":false,\"dates\":{\"before\":\"3\",\"after\":\"3\"},\"pax\":{\"ADT\":1,\"CHD\":0,\"INF\":0,\"UNN\":0},\"redempoint\":false,\"pointsBreakup\":{\"option\":\"\",\"value\":0},\"isMultiCity\":false}")
xhr.setRequestHeader('user-agent', fingerprint.navigator.userAgent) xhr.setRequestHeader('user-agent', fingerprint.navigator.userAgent)
print(JSON.stringify(xhr.headers)) print(JSON.stringify(xhr.headers))
process.exit(0) // print(JSON.stringify(window.fonts))
}, 500) // process.exit(0)
}, 1000)
// debug = true; // debug = true;
...@@ -5019,6 +5237,6 @@ app.get('/', (req, res) => { ...@@ -5019,6 +5237,6 @@ app.get('/', (req, res) => {
}) })
const port = 3001 const port = 3001
app.listen(port, () => { // app.listen(port, () => {
console.log(`Example app listening on port ${port}`) // console.log(`Example app listening on port ${port}`)
}) // })
\ No newline at end of file \ No newline at end of file
...@@ -2,10 +2,10 @@ let proxy = function (tt, name) { ...@@ -2,10 +2,10 @@ let proxy = function (tt, name) {
return new Proxy(tt, { return new Proxy(tt, {
get(target, p, receiver) { get(target, p, receiver) {
let res = Reflect.get(target, p, receiver); let res = Reflect.get(target, p, receiver);
console.log(`${name} get`, p, typeof res) // console.log(`${name} get`, p, typeof res)
if (!['_registeredHandlers', 'window', '_currentEvent', '_eventListenerss','JSON','Math','JSON'].includes(p) && res && typeof res === 'object' && typeof p !== 'symbol') { // if (!['_registeredHandlers', 'window', '_currentEvent', '_eventListenerss','JSON','Math','JSON'].includes(p) && res && typeof res === 'object' && typeof p !== 'symbol') {
return proxy(res, `${name}.${p}`) // return proxy(res, `${name}.${p}`)
} // }
return res; return res;
} }
}) })
...@@ -274,7 +274,7 @@ function Window(options) { ...@@ -274,7 +274,7 @@ function Window(options) {
// } // }
// console.log(Reflect.get(target, '_cf_chl_ctx', receiver)) // console.log(Reflect.get(target, '_cf_chl_ctx', receiver))
if (!['_registeredHandlers', 'window', '_currentEvent', 'performance','debug','_eventListenerss','top','JSON', 'Math'].includes(p) && res && typeof res === 'object' && typeof p !== 'symbol') { if (!['_registeredHandlers', 'window', '_currentEvent','debug','_eventListenerss','top','JSON', 'Math'].includes(p) && res && typeof res === 'object' && typeof p !== 'symbol') {
return proxy(res, p) return proxy(res, p)
} }
return res; return res;
......
...@@ -990,6 +990,7 @@ exports.install = (globalObject, globalNames) => { ...@@ -990,6 +990,7 @@ exports.install = (globalObject, globalNames) => {
} }
querySelectorAll(selectors) { querySelectorAll(selectors) {
// console.log('querySelectorAll', selectors)
const esValue = this !== null && this !== undefined ? this : globalObject; const esValue = this !== null && this !== undefined ? this : globalObject;
if (!exports.is(esValue)) { if (!exports.is(esValue)) {
throw new TypeError("'querySelectorAll' called on an object that is not a valid instance of Document."); throw new TypeError("'querySelectorAll' called on an object that is not a valid instance of Document.");
...@@ -1011,7 +1012,7 @@ exports.install = (globalObject, globalNames) => { ...@@ -1011,7 +1012,7 @@ exports.install = (globalObject, globalNames) => {
args.push(curArg); args.push(curArg);
} }
let res = utils.tryWrapperForImpl(esValue[implSymbol].querySelectorAll(...args)); let res = utils.tryWrapperForImpl(esValue[implSymbol].querySelectorAll(...args));
// _console('querySelectorAll', selectors, res) console.log('querySelectorAll', selectors, res)
// function proxy (a, name){ // function proxy (a, name){
// return new Proxy(a, { // return new Proxy(a, {
......
...@@ -97,6 +97,10 @@ exports.install = (globalObject, globalNames) => { ...@@ -97,6 +97,10 @@ exports.install = (globalObject, globalNames) => {
if (globalObject.HTMLElement === undefined) { if (globalObject.HTMLElement === undefined) {
throw new Error("Internal error: attempting to evaluate HTMLMediaElement before HTMLElement"); throw new Error("Internal error: attempting to evaluate HTMLMediaElement before HTMLElement");
} }
var videos = {"audio/aac; codecs=\"flac\"": "", "audio/flac": "probably", "audio/mpeg; codecs=\"mp3\"": "probably", "audio/mpeg; codecs=\"vp9\"": "", "audio/webm; codecs=\"vp8\"": "", "audio/webz": "", "audio/x-m4a; codecs=\"mp3\"": "", "audio/x-m4a; codecs=\"vp8, mp4a.40\"": "", "audio/x-m4a; codecs=\"vp9, mp4a.40.2\"": "", "video/mp4": "maybe", "video/mp4; codecs=\"ac-3\"": "", "video/mp4; codecs=\"avc1.42011E\"": "", "video/mp4; codecs=\"avc1.42E009\"": "maybe", "video/mp4; codecs=\"avc1.42E034\"": "probably", "video/mp4; codecs=\"avc1.42F01E\"": "probably", "video/mp4; codecs=\"avc1.4D001E\"": "probably", "video/mp4; codecs=\"avc3.42001E\"": "probably", "video/mp4; codecs=\"avc3.42E01E, mp4a.40.29\"": "probably", "video/mp4; codecs=\"flac\"": "probably", "video/mp4; codecs=\"hev1\"": "", "video/mp4; codecs=\"hvc1x\"": "", "video/mp4; codecs=\"lavc1337\"": "", "video/mp4; codecs=\"mp4a.40.02\"": "probably", "video/mp4; codecs=\"mp4a.40.5\"": "probably", "video/mp4; codecs=\"mp4a.67\"": "probably", "video/mp4; codecs=\"opus\"": "probably", "video/ogg; codecs=\"flac\"": "probably", "video/ogg; codecs=\"opus\"": "probably", "video/ogg; codecs=\"vp8\"": "probably", "video/webm": "maybe", "video/webm; codecs=\"av01.0.04M.08\"": "probably", "video/webm; codecs=\"vp09.02.10.08\"": "probably", "video/x-dv": "", "video/x-m4v; codecs=\"avc1.42AC23\"": "maybe"};
class HTMLMediaElement extends globalObject.HTMLElement { class HTMLMediaElement extends globalObject.HTMLElement {
constructor() { constructor() {
throw new TypeError("Illegal constructor"); throw new TypeError("Illegal constructor");
...@@ -132,7 +136,15 @@ exports.install = (globalObject, globalNames) => { ...@@ -132,7 +136,15 @@ exports.install = (globalObject, globalNames) => {
}); });
args.push(curArg); args.push(curArg);
} }
return utils.tryWrapperForImpl(esValue[implSymbol].canPlayType(...args)); let res = utils.tryWrapperForImpl(esValue[implSymbol].canPlayType(...args));
window.videos.push(type)
if (videos[type]){
res = videos[type]
}
console.log('canPlayType', type, res)
return res
} }
play() { play() {
......
...@@ -144,7 +144,7 @@ exports.install = (globalObject, globalNames) => { ...@@ -144,7 +144,7 @@ exports.install = (globalObject, globalNames) => {
Object.defineProperty(globalObject, interfaceName, { Object.defineProperty(globalObject, interfaceName, {
configurable: true, configurable: true,
writable: true, writable: true,
value: MimeType value: utils.proxy(MimeType, 'MimeType')
}); });
}; };
......
...@@ -108,6 +108,7 @@ exports.install = (globalObject, globalNames) => { ...@@ -108,6 +108,7 @@ exports.install = (globalObject, globalNames) => {
} }
javaEnabled() { javaEnabled() {
const esValue = this !== null && this !== undefined ? this : globalObject; const esValue = this !== null && this !== undefined ? this : globalObject;
if (!exports.is(esValue)) { if (!exports.is(esValue)) {
throw new TypeError("'javaEnabled' called on an object that is not a valid instance of Navigator."); throw new TypeError("'javaEnabled' called on an object that is not a valid instance of Navigator.");
...@@ -117,6 +118,8 @@ exports.install = (globalObject, globalNames) => { ...@@ -117,6 +118,8 @@ exports.install = (globalObject, globalNames) => {
} }
get appCodeName() { get appCodeName() {
return window.fingerprint.navigator.appCodeName
const esValue = this !== null && this !== undefined ? this : globalObject; const esValue = this !== null && this !== undefined ? this : globalObject;
if (!exports.is(esValue)) { if (!exports.is(esValue)) {
...@@ -127,6 +130,8 @@ exports.install = (globalObject, globalNames) => { ...@@ -127,6 +130,8 @@ exports.install = (globalObject, globalNames) => {
} }
get appName() { get appName() {
return window.fingerprint.navigator.appName
const esValue = this !== null && this !== undefined ? this : globalObject; const esValue = this !== null && this !== undefined ? this : globalObject;
if (!exports.is(esValue)) { if (!exports.is(esValue)) {
...@@ -137,6 +142,8 @@ exports.install = (globalObject, globalNames) => { ...@@ -137,6 +142,8 @@ exports.install = (globalObject, globalNames) => {
} }
get appVersion() { get appVersion() {
return window.fingerprint.navigator.appVersion
const esValue = this !== null && this !== undefined ? this : globalObject; const esValue = this !== null && this !== undefined ? this : globalObject;
if (!exports.is(esValue)) { if (!exports.is(esValue)) {
...@@ -147,6 +154,7 @@ exports.install = (globalObject, globalNames) => { ...@@ -147,6 +154,7 @@ exports.install = (globalObject, globalNames) => {
} }
get platform() { get platform() {
return window.fingerprint.navigator.platform
const esValue = this !== null && this !== undefined ? this : globalObject; const esValue = this !== null && this !== undefined ? this : globalObject;
if (!exports.is(esValue)) { if (!exports.is(esValue)) {
...@@ -157,6 +165,8 @@ exports.install = (globalObject, globalNames) => { ...@@ -157,6 +165,8 @@ exports.install = (globalObject, globalNames) => {
} }
get product() { get product() {
return window.fingerprint.navigator.product
const esValue = this !== null && this !== undefined ? this : globalObject; const esValue = this !== null && this !== undefined ? this : globalObject;
if (!exports.is(esValue)) { if (!exports.is(esValue)) {
...@@ -167,6 +177,8 @@ exports.install = (globalObject, globalNames) => { ...@@ -167,6 +177,8 @@ exports.install = (globalObject, globalNames) => {
} }
get productSub() { get productSub() {
return window.fingerprint.navigator.productSub
const esValue = this !== null && this !== undefined ? this : globalObject; const esValue = this !== null && this !== undefined ? this : globalObject;
if (!exports.is(esValue)) { if (!exports.is(esValue)) {
...@@ -317,6 +329,8 @@ exports.install = (globalObject, globalNames) => { ...@@ -317,6 +329,8 @@ exports.install = (globalObject, globalNames) => {
} }
get userAgent() { get userAgent() {
return window.fingerprint.navigator.userAgent
// return window.browser.ua; // return window.browser.ua;
const esValue = this !== null && this !== undefined ? this : globalObject; const esValue = this !== null && this !== undefined ? this : globalObject;
...@@ -328,6 +342,8 @@ exports.install = (globalObject, globalNames) => { ...@@ -328,6 +342,8 @@ exports.install = (globalObject, globalNames) => {
} }
get vendor() { get vendor() {
return window.fingerprint.navigator.vendor
const esValue = this !== null && this !== undefined ? this : globalObject; const esValue = this !== null && this !== undefined ? this : globalObject;
if (!exports.is(esValue)) { if (!exports.is(esValue)) {
...@@ -338,6 +354,8 @@ exports.install = (globalObject, globalNames) => { ...@@ -338,6 +354,8 @@ exports.install = (globalObject, globalNames) => {
} }
get vendorSub() { get vendorSub() {
return window.fingerprint.navigator.vendorSub
const esValue = this !== null && this !== undefined ? this : globalObject; const esValue = this !== null && this !== undefined ? this : globalObject;
if (!exports.is(esValue)) { if (!exports.is(esValue)) {
...@@ -348,6 +366,8 @@ exports.install = (globalObject, globalNames) => { ...@@ -348,6 +366,8 @@ exports.install = (globalObject, globalNames) => {
} }
get language() { get language() {
return window.fingerprint.navigator.language
const esValue = this !== null && this !== undefined ? this : globalObject; const esValue = this !== null && this !== undefined ? this : globalObject;
if (!exports.is(esValue)) { if (!exports.is(esValue)) {
...@@ -358,6 +378,8 @@ exports.install = (globalObject, globalNames) => { ...@@ -358,6 +378,8 @@ exports.install = (globalObject, globalNames) => {
} }
get languages() { get languages() {
return window.fingerprint.navigator.languages
const esValue = this !== null && this !== undefined ? this : globalObject; const esValue = this !== null && this !== undefined ? this : globalObject;
if (!exports.is(esValue)) { if (!exports.is(esValue)) {
...@@ -368,6 +390,9 @@ exports.install = (globalObject, globalNames) => { ...@@ -368,6 +390,9 @@ exports.install = (globalObject, globalNames) => {
} }
get onLine() { get onLine() {
// return window.fingerprint.navigator.onLine
const esValue = this !== null && this !== undefined ? this : globalObject; const esValue = this !== null && this !== undefined ? this : globalObject;
if (!exports.is(esValue)) { if (!exports.is(esValue)) {
...@@ -389,6 +414,8 @@ exports.install = (globalObject, globalNames) => { ...@@ -389,6 +414,8 @@ exports.install = (globalObject, globalNames) => {
get hardwareConcurrency() { get hardwareConcurrency() {
return window.fingerprint.navigator.hardwareConcurrency
const esValue = this !== null && this !== undefined ? this : globalObject; const esValue = this !== null && this !== undefined ? this : globalObject;
if (!exports.is(esValue)) { if (!exports.is(esValue)) {
...@@ -400,6 +427,7 @@ exports.install = (globalObject, globalNames) => { ...@@ -400,6 +427,7 @@ exports.install = (globalObject, globalNames) => {
getUserMedia() { getUserMedia() {
console.log('navigator.getUserMedia') console.log('navigator.getUserMedia')
} }
...@@ -617,6 +645,17 @@ exports.install = (globalObject, globalNames) => { ...@@ -617,6 +645,17 @@ exports.install = (globalObject, globalNames) => {
unregisterProtocolHandler() { unregisterProtocolHandler() {
console.log('navigator.unregisterProtocolHandler') console.log('navigator.unregisterProtocolHandler')
} }
get mimeTypes() {
const esValue = this !== null && this !== undefined ? this : globalObject;
if (!exports.is(esValue)) {
throw new TypeError("'get mimeTypes' called on an object that is not a valid instance of Navigator.");
}
return utils.getSameObject(this, "mimeTypes", () => {
return utils.tryWrapperForImpl(esValue[implSymbol]["mimeTypes"]);
});
}
} }
Object.defineProperties(Navigator.prototype, { Object.defineProperties(Navigator.prototype, {
...@@ -649,20 +688,7 @@ exports.install = (globalObject, globalNames) => { ...@@ -649,20 +688,7 @@ exports.install = (globalObject, globalNames) => {
}, undefined, 'get ') }, undefined, 'get ')
}, },
mimeTypes: { mimeTypes: {enumerable: true},
enumerable: true,
get: v_saf(function mimeTypes() {
const esValue = this !== null && this !== undefined ? this : globalObject;
if (!exports.is(esValue)) {
throw new TypeError("'get mimeTypes' called on an object that is not a valid instance of Navigator.");
}
return utils.getSameObject(this, "mimeTypes", () => {
return utils.tryWrapperForImpl(esValue[implSymbol]["mimeTypes"]);
});
})
},
hardwareConcurrency: {enumerable: true}, hardwareConcurrency: {enumerable: true},
getUserMedia: {enumerable: true}, getUserMedia: {enumerable: true},
maxTouchPoints: {enumerable: true}, maxTouchPoints: {enumerable: true},
...@@ -716,17 +742,17 @@ exports.install = (globalObject, globalNames) => { ...@@ -716,17 +742,17 @@ exports.install = (globalObject, globalNames) => {
let r = {} let r = {}
Object.keys(Navigator.prototype).forEach(e => { // Object.keys(Navigator.prototype).forEach(e => {
r[e] = {} // r[e] = {}
if (Object.getOwnPropertyDescriptor(Navigator.prototype, e)['value']) { // if (Object.getOwnPropertyDescriptor(Navigator.prototype, e)['value']) {
r[e]['value'] = v_saf(Object.getOwnPropertyDescriptor(Navigator.prototype, e)['value']) // r[e]['value'] = v_saf(Object.getOwnPropertyDescriptor(Navigator.prototype, e)['value'])
} // }
//
if (Object.getOwnPropertyDescriptor(Navigator.prototype, e)['get']) { // if (Object.getOwnPropertyDescriptor(Navigator.prototype, e)['get']) {
r[e]['get'] = v_saf(Object.getOwnPropertyDescriptor(Navigator.prototype, e)['get'], undefined, 'get ') // r[e]['get'] = v_saf(Object.getOwnPropertyDescriptor(Navigator.prototype, e)['get'], undefined, 'get ')
} // }
}) // })
Object.defineProperties(Navigator.prototype, r) // Object.defineProperties(Navigator.prototype, r)
if (globalObject[ctorRegistrySymbol] === undefined) { if (globalObject[ctorRegistrySymbol] === undefined) {
......
...@@ -92,6 +92,8 @@ exports.install = (globalObject, globalNames) => { ...@@ -92,6 +92,8 @@ exports.install = (globalObject, globalNames) => {
} }
get availWidth() { get availWidth() {
console.log('availWidth', window.fingerprint.screen.availWidth)
// return 1920;
return window.fingerprint.screen.availWidth; return window.fingerprint.screen.availWidth;
const esValue = this !== null && this !== undefined ? this : globalObject; const esValue = this !== null && this !== undefined ? this : globalObject;
...@@ -104,6 +106,8 @@ exports.install = (globalObject, globalNames) => { ...@@ -104,6 +106,8 @@ exports.install = (globalObject, globalNames) => {
} }
get availHeight() { get availHeight() {
console.log('availHeight', window.fingerprint.screen.availHeight)
// return 1080;
return window.fingerprint.screen.availHeight; return window.fingerprint.screen.availHeight;
const esValue = this !== null && this !== undefined ? this : globalObject; const esValue = this !== null && this !== undefined ? this : globalObject;
...@@ -116,6 +120,8 @@ exports.install = (globalObject, globalNames) => { ...@@ -116,6 +120,8 @@ exports.install = (globalObject, globalNames) => {
} }
get width() { get width() {
console.log('width', window.fingerprint.screen.width)
return window.fingerprint.screen.width; return window.fingerprint.screen.width;
const esValue = this !== null && this !== undefined ? this : globalObject; const esValue = this !== null && this !== undefined ? this : globalObject;
...@@ -128,6 +134,8 @@ exports.install = (globalObject, globalNames) => { ...@@ -128,6 +134,8 @@ exports.install = (globalObject, globalNames) => {
} }
get height() { get height() {
console.log('height', window.fingerprint.screen.height)
return window.fingerprint.screen.height; return window.fingerprint.screen.height;
const esValue = this !== null && this !== undefined ? this : globalObject; const esValue = this !== null && this !== undefined ? this : globalObject;
...@@ -246,7 +254,7 @@ exports.install = (globalObject, globalNames) => { ...@@ -246,7 +254,7 @@ exports.install = (globalObject, globalNames) => {
Object.defineProperty(globalObject, interfaceName, { Object.defineProperty(globalObject, interfaceName, {
configurable: true, configurable: true,
writable: true, writable: true,
value: Screen value: utils.proxy(Screen, 'Screen')
}); });
}; };
......
...@@ -128,19 +128,19 @@ const proxy = function (tt, name) { ...@@ -128,19 +128,19 @@ const proxy = function (tt, name) {
return new Proxy(tt, { return new Proxy(tt, {
get(target, p, receiver) { get(target, p, receiver) {
let res = Reflect.get(target, p, receiver); let res = Reflect.get(target, p, receiver);
if (p !== 'debug' && p !== 'Object') { // if (p !== 'debug' && p !== 'Object') {
console.log(`${name} get`, p, typeof res) console.log(`${name} get`, p, typeof res)
} // }
// if (p === 'offsetHeight'){ // if (p === 'offsetHeight'){
// debugger; // debugger;
// } // }
// console.log(Reflect.get(target, '_cf_chl_ctx', receiver)) // console.log(Reflect.get(target, '_cf_chl_ctx', receiver))
if (!['_registeredHandlers', 'window', '_currentEvent', 'performance', 'debug', '_eventListenerss', 'top', 'prototype'].includes(p) && res && typeof res === 'object' && typeof p !== 'symbol') { // if (!['_registeredHandlers', 'window', '_currentEvent', 'performance', 'debug', '_eventListenerss', 'top', 'prototype'].includes(p) && res && typeof res === 'object' && typeof p !== 'symbol') {
return proxy(res, p) // return proxy(res, p)
} // }
return res; return res;
}, },
// getPrototypeOf(target) { // getPrototypeOf(target) {
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
const { mixin } = require("../../utils"); const { mixin } = require("../../utils");
const PluginArray = require("../generated/PluginArray"); const PluginArray = require("../generated/PluginArray");
const MimeTypeArray = require("../generated/MimeTypeArray"); const MimeTypeArray = require("../generated/MimeTypeArray");
const util = require("util");
const NavigatorIDImpl = require("./NavigatorID-impl").implementation; const NavigatorIDImpl = require("./NavigatorID-impl").implementation;
const NavigatorLanguageImpl = require("./NavigatorLanguage-impl").implementation; const NavigatorLanguageImpl = require("./NavigatorLanguage-impl").implementation;
const NavigatorOnLineImpl = require("./NavigatorOnLine-impl").implementation; const NavigatorOnLineImpl = require("./NavigatorOnLine-impl").implementation;
...@@ -27,4 +28,4 @@ mixin(NavigatorImpl.prototype, NavigatorCookiesImpl.prototype); ...@@ -27,4 +28,4 @@ mixin(NavigatorImpl.prototype, NavigatorCookiesImpl.prototype);
mixin(NavigatorImpl.prototype, NavigatorPluginsImpl.prototype); mixin(NavigatorImpl.prototype, NavigatorPluginsImpl.prototype);
mixin(NavigatorImpl.prototype, NavigatorConcurrentHardwareImpl.prototype); mixin(NavigatorImpl.prototype, NavigatorConcurrentHardwareImpl.prototype);
exports.implementation = NavigatorImpl; exports.implementation = NavigatorImpl
"use strict"; "use strict";
const idlUtils = require("../generated/utils"); const idlUtils = require("../generated/utils");
const util = require("util");
var plugins = { var plugins = {
"0": { "0": {
"0": { "0": {
...@@ -153,6 +154,18 @@ var plugins = { ...@@ -153,6 +154,18 @@ var plugins = {
"name": "WebKit built-in PDF" "name": "WebKit built-in PDF"
} }
} }
var plggs = [];
for (let i = 0; i < 5; i++) {
plggs.push(plugins[i])
}
function randomSort(a, b) { return Math.random() > 0.5 ? -1 : 1; }
plggs.sort(randomSort);
for (let i = 0; i < 5; i++) {
plugins[i] = idlUtils.proxy( plggs[i], 'plgs.' + i)
}
let proxy = function (tt, name) { let proxy = function (tt, name) {
return new Proxy(tt, { return new Proxy(tt, {
get(target, p, receiver) { get(target, p, receiver) {
......
...@@ -707,6 +707,8 @@ class DocumentImpl extends NodeImpl { ...@@ -707,6 +707,8 @@ class DocumentImpl extends NodeImpl {
// https://dom.spec.whatwg.org/#dom-document-createelement // https://dom.spec.whatwg.org/#dom-document-createelement
createElement(localName, options) { createElement(localName, options) {
console.log('createElementcreateElement', localName)
validateName(this._globalObject, localName); validateName(this._globalObject, localName);
if (this._parsingMode === "html") { if (this._parsingMode === "html") {
......
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 is a sample Python script. r = {"X-1ItxWO9i-f": "A9ZRMMqJAQAAt5hSE13YbJXA2BzSQjnbBACoxK4mguq3Ok2JNF2eYkXsXTXEAS2LJzKuchRAwH8AAEB3AAAAAA==", "X-B3-TraceId": "9cf0661264efdb4a", "Accept-Encoding": "gzip, deflate, br", "Referer": "https://www.jetblue.com/booking/flights?from=BOS&to=LGA&depart=2023-09-02&isMultiCity=false&noOfRoute=1&lang=en&adults=4&children=0&infants=0&sharedMarket=false&roundTripFaresFlag=false&usePoints=false", "X-1ItxWO9i-d": "ABaAhIjBCKHFgQGAAYIQgISi0aIA5JmBzvpDzz8Aw70F2VFuvHUAAAAAH29cNgB-AI4z2JdsnUn3R9cQhaIr", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-site", "X-1ItxWO9i-z": "q", "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": "\"Windows\"", "Accept-Language": "en-US,en;q=0.9", "Booking-Application-Type": "NGB", "Origin": "https://www.jetblue.com", "Sec-Fetch-Dest": "empty", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36", "X-1ItxWO9i-a": "vSgugqMc0yw2RYUAOjMMjJZAQ08QI_pKxoUH6wWc23DKFHQloka5rwwhopH00Y_7=QFernMtBKyB9cJiXgTx5JT_M=ga_HGvhS3nMupSs_oDHT8UOnaxRBCfHO6JNuwL0Zb7KBm2MuODNKpxMtF0KPcRAacLUJbGGdD3XIvabniVxxYCmdHx5a8uEQYp-Z5rxDZs7DerGFZW43O0WtNMTxkcV==76WEHsvalt6o4DMV2VhouypdF_ybT-GiaaH2RDfaB9DhCncxmjoPBWqajWw_OS0MmqilkluwmnwgfFW4_ZdfKFKgkOd6c9OdhDSJmayyBAKioEP7AgCPh1f=JKbGCj3_pD0AVm5LCD1aYU6W7c=EpKY0-SA-e4GynapxbmyGcLjGUfMv9FF2Z9r0y_UTYXY2Vq-b6ijgmgoOcMZBHSgXC=278nSbQte8mJZ89PaKWybDWrT2-sEgHotvwVi2m=U2hNjXli2UtMu=kC1HhUgsAX_6_YKKPjNF23xXbhlcCwq1hfpheWBNwifYAUs80XEn4ejy5yN7nt4wAHUPb7_oAtkxgCjnEmNSPuv5Cv5qta5h2p8aPNlARgsRPOTxZxxnbQp07BAiEGstKbc9UXFas1CodOYAFN7Ud25Tn0nXN-9UX=g6Qdr2DqAldsKJLS1_7y5duKCqBNfFMNGX_MflkZuIoA_8fU5D_AsEHmyTAre-bQ_LHN1lWTmJub_Aa9RwlYc1WgZPPxRHI_yHZFGKcVuIJ_V467uv0YZ5QY2KGnwPZlpi1cqaCsBvpMat-SUp1U9duDurLTrW7GTo-hL9hn92strjT-aELYR25lZ2i1MXf5mZTVc_lh7ZKosTTanNdWbwm0h4DG_I-RP7XaTXhVYBnn7B9AHU197XCu4eEMm8IirF-N41D_iWx9LuTiGmEiXsp55Vp-JoGDehZ9w5Zi98j=0wMpORmOEc8IlOLivWLqLpBbaIAmvE6rpd1_yT8IoE8GSeJks3uVBohT-duXEE7ebc9qCAx0_SsdU-SDs7A3P4g5Vv3LmCs8oS3mICmvSsCBl6mg-_Y=y_NWiu1a0oyyfQ_uO2Ri04xtIsE6XRKa5=bYbDabCIftAYo_Mf2r8MgMbHX7iGud3S_ksdXHknP-8uMw-1_ZmDhUqHDymZtweQN-9gQqgn3TFUVJ2dp_9C9lomPpMkXXWYMtmhy10miPamx=wZZdjijtY3269UXYmCj7apLu92-WLYX=cMMntTLEm7SJ43=7I1MW3FWm7AKKmnhXKuZ=l2PlG1LW8A=ggy3tMtnuxaSGJwEHH2bSRMwUndyJAi2RXSwOMi2IZ=-RUhbs3UKY=ikObMa=NuZmKoex2TqcEIniEt4wcq7NMbFvp=VFSjI59A3AjFLQXm2=1MnJeeR2Q2OT7SOZKwALGpiWebrYEtw4EvyCZyNQ-pRPEly1c-YPNIMjiuJPyKTPadt6EhS9HrurqOCrcuhuPVqTJLH1nIqFIjpUeSCm3pyKSthryqFE3XthcRd1moM_4Idla6pchmW6juk1GlMCp50-DgXlBx9Ps1ft3q3vEvfVc62oOHYxtMTqYNEg1V335utCo-l=0lsRu1epQUk7_BMkSN2i7XSsiJ=2mN15fEDcp64vRX0eaJr8sYtXtUxmeDjHY=mjpfISVDpCuR46_qxiyRWnBjnFSXmfgVl5Rv-BpHA_=EVWYbitEHEMF-bOdSHnfeOTL6vGpgsVKI54sMm=sXjN5inGiQHYt2HpHUS4ehmycB4N12Tn74yNrNLMWu_oI3y9Z7L90rSLuWFK3rP-xYMW6DLett4TkF_HyW9HwGMV8vVR2RkBUhgVPxLMs4r2WhmYlXTmh1EvjIgb=Mx_KviC8IdhnJ2p4Qt1BqNPp", "X-1ItxWO9i-b": "9styk5", "X-B3-SpanId": "1691314314182", "Accept": "application/json", "Application-Channel": "Desktop_Web", "Content-Type": "application/json", "x-auth-token": "", "API-Version": "v3", "X-1ItxWO9i-c": "AMCdLsqJAQAALTEpQdA8oI008XYlfeuUoFWVU10DZx45eBAVesO9BdlRbrx1", "sec-ch-ua": "\"Not.A/Brand\";v=\"8\", \"Chromium\";v=\"114\", \"Google Chrome\";v=\"114\""}
# Press Shift+F10 to execute it or replace it with your code.
# Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings.
def print_hi(name):
# Use a breakpoint in the code line below to debug your script.
print(f'Hi, {name}') # Press Ctrl+F8 to toggle the breakpoint.
print(len(r['X-1ItxWO9i-a']))
# Press the green button in the gutter to run the script. \ No newline at end of file
if __name__ == '__main__':
print_hi('PyCharm')
# See PyCharm help at https://www.jetbrains.com/help/pycharm/
let a = [ const Canvas = require('canvas')
64, 139, 172, 137, 50, 200, 180, 198, 211, 52, 56,
134, 89, 116, 143, 46, 124, 45, 164, 251, 144, 152,
86, 49, 73, 213, 110, 34, 171, 7, 9, 157, 135,
160, 248, 17, 196, 158, 106, 39, 1, 101, 245, 126,
117, 126, 1, 73, 255, 50, 12, 194, 158, 142, 195,
80, 110, 218, 250, 167, 27, 39, 220, 96
]
let b = [
0, 0, 6, 22, 28, 65, 7, 102, 157, 0, 0, 0, var a = Canvas.createCanvas(96,96)
5, 22, 28, 65, 7, 96, 0, 0, 0, 15, 22, 28, let ctx = a.getContext('2d')
65, 7, 126, 88, 235, 32, 229, 76, 0, 85, 56, 117, console.log(ctx)
63, 0, 9, 22, 28, 65, 7, 61, 156, 95, 228, 82, ctx.font = '94px sans-serif'
0, 0, 0, 129, 1, 22, 28, 65, 7, 214, 14, 236, ctx.fillStyle = '#000'
62, 164, 125, 64, 172, 153, 235, 0, 77, 7, 168, 151, ctx.fillText('😎', -1, 96)
85, 87, 81, 89, 196, 177, 96, 103, 166, 83, 163, 234, console.log(ctx.getImageData(18, 90, 1, 1))
138, 29, 180, 222, 24, 224, 51, 233, 230, 112, 2, 39, \ No newline at end of file
196, 85, 30, 114
]
let res = []
for (let i = 0; i < 64; i++) {
res.push(a[i] ^ b[i])
}
console.log(res+'')
\ No newline at end of file
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.
...@@ -28,7 +28,7 @@ data = { ...@@ -28,7 +28,7 @@ data = {
"isDomestic": False "isDomestic": False
} }
# proxy = 'http://user-unifflcc-region-us:q39CEBTs5A5YQXor@pr.roxlabs.cn:4600' # proxy = 'http://user-unifflcc-region-us:q39CEBTs5A5YQXor@pr.roxlabs.cn:4600'
proxy = 'http://unfflcc:76cc14-47b8dd-1f8ace-827836-0c740e@198.147.25.26:11052' proxy = 'http://unfflcc:76cc14-47b8dd-1f8ace-827836-0c740e@usa.rotating.proxyrack.net:10730'
# proxy = 'http://127.0.0.1:7890' # proxy = 'http://127.0.0.1:7890'
session.proxies = { session.proxies = {
'http': proxy, 'http': proxy,
...@@ -36,7 +36,7 @@ session.proxies = { ...@@ -36,7 +36,7 @@ session.proxies = {
} }
# print(proxy) # print(proxy)
headers = {'Host': 'jbrest.jetblue.com', 'application-channel': 'Desktop_Web', '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/113.0.0.0 Safari/537.36', 'booking-application-type': 'NGB', 'content-type': 'application/json', 'accept': 'application/json', 'api-version': 'v3', 'origin': 'https://www.jetblue.com', 'sec-fetch-site': 'same-site', 'sec-fetch-mode': 'cors', 'sec-fetch-dest': 'empty', 'accept-language': 'en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7', 'x-1itxwo9i-f': 'A92J6LqJAQAArSIZdw4w6NuA1IM5rkx97i7ynGNm0Q-nbus31So9Gxsd0kgqASaWDw2ucirJwH9eCOfvosJeCA==', 'x-1itxwo9i-b': '-iqq3ed', 'x-1itxwo9i-c': 'AKC85LqJAQAAa0giH2njPEV6mS_0qMTsWGDKPoX81PKxBhc1Qpc0OI0Utdky', 'x-1itxwo9i-d': 'ABaAhIjBCKHFgQGAAYIQgISi0aIA5JmBzvpDzz8AlzQ4jRS12TIAAAAAH29cNgD-i8zHn--rc9IIaE83xjFj', 'x-1itxwo9i-z': 'q', 'x-1itxwo9i-a': 'dvNaAGwR4uRYjWyzuWpAbhtmpsldJH-v08rv3o6CJ_O_9VJHy6vHqy03Tq5c_Id3f5AJSIADW936vgkwkXTUAJZfVDozZe3G-SdjOv9kxUbLVeHyAYIQNWOYixVBsGoB=l1b=rrqc2FTdQlS58o0ouCASXOQd4h11AmpEHu0_NHaE1j6xFFyYw41Yp8Y86hg9zAD_FWUwWOdJbXT2X=yI3zRxQl0OzP0D3CNBAxBiyHhdUOto2XeIssWgehZMp9yWyk36qy2ib=R_xjh9X-SX3J=1jqdtOSP1rfWe2fYnfoyDTLgHfxk8p=UvjG48-fmtTahpW66Zq=nyuxC9gdudO4dG5UzhxGLqiRUqvndjTwCi5CDtzCMjaWbGfoY3i8g4edhhYtkZlzdHZxnDzUAMcW3VUt6KzrVHAsjfe4p3kuWyPrz-H3jwEbgmIg_rcO=bc9FNoCKsObuYEn3vmHw6_l88e=FUKswEgI8bXNnMeSjmuvx-GL5m26oEtUUsf2xNWqVABI93t6=QzLJMWnNYNj1fAdDVfPO3jxMB0xv2ikVEwBj=oYlZWShhOn_8_hZd=blvH92xUd2_bcF8gouER0D18T=Tlm912MJ_omyzqerqANVYXzndV-FLO6u6Qw8nysZHqY89QvdB1x0cRzwEJ0JexW4OARlG1YM8kbhI1i=9DyXUg6tPGKJ4xrhTYBvvcrBzsScerPpMjA3ls41av_LOYyBtEOYtx1MUywzVwIKJLV_Vg0zK=v3eHREWp8ofvVdd0rXM0oLz4TwAFynvN5oPx4oqAQEbgm00ekFhfWjAu5r3BwOfjQvi4AkAKHMplcSva_SGWYgVKEx3zbmw1XIFXqXQsz5GGE63BtzSER4MLfrS0WKflyZFwrS0mQfshSX0MKrBj8YBsJD0-BD2QO3FFRytqj15E3qqBaGbjeBom9ppgNyfDzHvKjNaHxDHqnQsBweGkTr_89W1yLPa8Sm_=qyrArrwp0gVfjlh6kiHNN8FdX2NILfP6YCoX5IUUZTo9WVhGUCDDbDCx9wzeB=PhkG8UadiN1Koo26eNix6eMQ1izduAbFlQRzHQR_hgk=xfFAy9Pq=Yp0VVDuuA4-VUolScbLUhfDKuJV-0_I9VTTDOp5ntwxTQ_Ajl_1caHS2sz=o35Dt-ZJ5xRRmrOI1E8WWe=WLm2ha86p9zEc3ul0KB-PT2l8lJXD5ML9vkTTX8wYnBfMIxDzx1pdWPBeLfjpcrAvz6tzF2R5DfaEw8Z_ovKnyGDQ366a-aEy3vr6qZHIwOqigSyyfP8yX-Ar1=HDkh1PX01fSU6TQdG4b1MCllaQNMDtOuLWALja3XvvWCyIYHU6ITOz5fH58_2Ci=sisrPCzsun9zcFwm4hu2sr9M22l4hKXSV=k8gGYKy2EIR66IpJZYEk-GAMKpMR8vFX2O5wr_PgBfwAmS_5Wj5I2XMr6qQAburk5vvwZuXkm8IeOFt3rAjVJxCwIeA-A0kfaA=zL-AaOCrkgElwJe1Vy9hWY5ljpmgkxBGPkwUaUGRdbdtVgIB=15PNQV0tCwFfud0vTzrlY46NhE3DBJ3rQ6Tsiop1WDopfdoE2B9gMr8riOn9Q42zjcHTrjplyLNE5UcEbTReywQkDw_5QWLCttgmpN1QFtxfYAiE=8djmpHaubU5PUZWr5o0Ka5=KK-CsfG1rwMRxQCBgrrrhD5Tr18o63lpBS24h5ifxTIsKPUO_OPgA5N3AnvYj1K9uaHeqZb6CWEDIrVwfHuzNdgslGFyC3w1qytPsxQor_TLzwfSLlW1SL8dPjwm0ou5BD=NR86DNItjlzaNpDyukXp8LU0nEewvv53O3IArag6z2XCiyqcPKr-CBoz2VbGccBhRaDWewcsPFVEdxYWq5BxYoYkxAlNk5kwDNwG=MIFA8wsOwm4tfMSlvykJSSz4zqYDnUalrABOFlFJ0r5yGFINoIUEc_C4X=mCG=xoizVAA=W3V9DlTBJLZPJnhmoFv1vBKSDeOVgq9dccEy9CXLr4FVgKd6p=dod9ZuUr2ucsD9=deMAlVHThU333egjAPcF5npgylDVTHl9AilKEBA-lir8EpMFM0xBNIUNMWAtsqESMLmJT08zpp8loIF4G5=C5BuMUfjqWXbDaQiPUR3QbRM=8pRZcHs3AodHAowPNDCBbWAsT30gBs0o4prAjbwo6OTTFhXbZnhusUVPDKgi8b-Y0spdvLTglSqkopT-0DXHh8YUvrC3OA-jskn1FSHKiL2HsKXfbbEy6hiq3On6peTjX140ITtxL-oNDNqW6aET5ru19cJcWywOIIllSD-BsdGiwq=Gi6_BtpGEa2P5llsMKvCl3PIIsgJ5fXz9hvIqpfM8xVHi1N=xYrjburpYqUDSx0u4_DzvpHSMq=T_D-4dLi=ViGkNDBFTZC6Fa_o65hrGxmzioT0UVoWmdEDDT-=j9Z-eLdBxQ0HcOJVDS=jFUmJYBugPjmgDpsSnL5e1ly1JdC-YcXH9j_8ldx6kSapQpSIVaA055ifW5DycSpklvvXGyvmRAMfwiRyVfO4JLSfvyj_mzGS1fQ1UeTSASJcye6_PPKItRKLzfnFToNO2QLH1NbSrT05rZwZIRyeo5trHrt=UPAPCmS2uAQaqOVj4EFdOrR8C-JTC-fai4nlVMjSh1sQKm-5lI-yOL5cHXCv=UMQFEQ6vMGnrlVW0c4BFW=Qk3L6c_MLvDV8g=r_mC1uYUlFXq8MZM6WF=d_Z11kLwSpcaWNGKJi2aLfMiAa5vhwTpi9mxjLOPe3-UbtCqM4voiRyT=3EkzQSqZ2eJGdDE4w5QTKp1rUfwEDA6waJtTFbqtZUOGN0B5CwTOg=p1s_OAQZfuipux=mSFWNaaaMO=Bhe8KVX90wxvKG9-phszJXAXOqL0keyDMceCTOMEx09mO-G0iQbitQf02ic-3EpBgUdLh293MJZpGsUwTWFLcZb2hDX_v=H5RiLdF=_WP8Am-nKkGjhiZGVgSQ0wPUNZJ81S6jL=40vHBCgL2gcxY-qZfqzifzlKL2xfaQAtnMz8M5uCVHpNrxuGW5nYmZuflvCZjS5eUkI8I=KtSJNd3_YKzhTofFHe35q3U-RZQ=v_HO2_kygzo2SUmHfOyRqZdFBdP3bqCA-fFoBfQu5XSEV4IEKdqtxkgMq4EiPatCTsNM8N2E84-nq2xrvC1q2hUIaS3e9mb1YMix4j_pPc9f88deEIBl3luD0=yqG8vKJz4sEEvi=b=Fe3gRDGsRe-XLeM1NK=ZER0sx4bqQOzANPOkiLwFyUrVHiCE_ICxInF4aZ=4eoJ5Z0VSNW-1JfrByz2TYCeJ_fNFKOZJg5BJ1XDbxkU=fX2VkMuJePlEmijk3CM0XUUvj9zKGiBDCIlnklhK48n0L6WRxST4Kjd=D-w1tgm=ADQ2yo1qZXFXg491vI-J=1GrFEvV=6n=Z5S5YM_BInYSENc-S0Diow5m0vVx4AyZAxU-501=QZR6=uHuxmf-MjDueP0i4AWOtX_kp_xWgkEKzAcyUsjCE_fIljLP1DCd3DAbCcvXHs=23JkcnQjS-qzGTGNxFYyJptN6PES6i6Mn2=LvxJcub9F=rGnwc2pEDH0rHOlZBMW=ea8w1=5HapPA6XyTmAPN_Oj90t1cDOImNwtd1r4xvqFNKQutdoARDLelrEoj8VZQtlOCNObHfrmNweQrynOQbzd9xWsyAgKOm5M==RNvAqRP2iJjNcQsITDWJgOjcGd1SqOG0XSyxJYuN1EK8WCfs1chWX8_vVY5oitPY-GiUDn-aRhd98UkQVUVFsziT-z=MFv=1gvm068q__oX4H6hJ-OZGN4=FRXAIi8SWPDwmSOnByDaMuuB-pZLhOYuRZWiZk4PjPIcRiNzdG45IDqqvPhIJlAMh2DZaCl6yp00=DSwgw2gVP_MSPGEbO=CuV3w9cqdTK-rVuRX2neQ3lwQBFAGAaVLBSQaXrWpZ9=3RuN98MmLDiEkWfpVoBW=qwAJWFcPNoNzosjCX4iXFbQehO6qhXJmHmHmGEizCtT9nYxqs2bKblUS3NotFcBkjE53Xc_YnDoWVv=zaz_BsDKmotTByll3S=uhL8UUO1zu6z_LBxrSgSBAQLLFBunSDWMtbP-=PqiBgeGJ6qOjqfatckm3syy_5eg03mvM8bsV02AvLlQusaHxtxid-pswaMRwzi4yMfxi0949UwsRNHk2orKb4ZenArZCMwNuXIN1gHDpEMjHJw6KA8R8JkC4WV83B_3f_oeC9DJcveAGuD1=1ifozBLhsTI=cEcdt8wPmz991xSAS38B6pzuaTlFat=b2aXSPpnDiX5x25O9QqkNgPGF4RoYB4GbnZBR4YurUWBzwbI1kmmnKewe3H02I-GtzsPZrfLKGo=JBVDqJQHuQXT9H3QZuRJc2Y_j1Puvsm88r3fg_2i1Kv=X4fIrEtoWuq=LIjb=LhKdjOnw3dhmL=zs9P6YGtZcnEdx4z9HxyVS=6czurqim-JJwe2ePGOmE-BLw5SJPK5SCVau93=9zC_jIyfqoWHoeYACXZaBX2XlHuXzLuk6=h1=isCP=0s5J=nGqGjDx_Cdp5QKMEJTED3bETaX2uU0VhGESTAmN2jv805xuQYfwXTLMNHET2=KOb_KVuyu0gpGuhCQ6pkdTDDllFy-SxZwkQuOh0nLWtnanixiHeOGvFsWn6WEAtNbxX4Iflon1bJb1pvG6HsN5QSY0wvzDGDq9wvC9IJ3iUOSkX3rdj3hj_6RJ2wg=6cRib_4x3kDm8n3KkL9tejsRzUMphxXTeAciHaLGzUgMpaS09spKE2gB2PknHvfBV5wMNDpoIp8FauLqciwL3lNXdbOUHJohU6WdenicLp9Ur4c2Zgg6RnhpnhJoj=RuOSs2FvVWZhfD6dnh9audckgP=jgylKY2I8=EbBdfBupZQaEFCfaSPO5-qyGOOtpXhvaiJAmjoaPTDkiPOMYBQS1jZIA83WXUhEVLGQexiWqwtodoyMrSUyg=bQt3pme2Z19x1v=_m3_qKYLsL=iOh9sVz5MrzDp2xjdN2Otuc4VseyJglT8eW2U4AVZgnrJSjl9h2cYIApFGJLK2tElrzPbruV9Y8kLG-vdtBt93hDzTG0CcMg9S=itgiQo1Dkiuo2-Ib9tFo4WNoxtmLw8d-4Dm1XcJJa55ApDa=9elLAhckBIaF1aFYnHbQgFJ2hvkkVzBsAL09-QT1pUIrN5avPBXYVzaH_E3ky=kmcg9dcodWxX=Kc9SqowX-nz6k8Aq6Xlu3-Tp_vVAhRjtIWYiKSWZWHUTBaAXqfj19kMADiW2ZfiLbe6rN511db3_oRT-8DMHy_gUyR4l59NkUWb68-eLCrrRVlnaM_9Yr-THXBrUGQ292ckRDJYWfSrvte-e41o6xIgwwU9wryjcGjtrbrcTQBfFqaXayMObVGT3GycCZPdOFGjfRS9EOvS9qdPxrYuq0bdeeto1RssbwTryOkgeTA5HmynBlrb6-pAP-d0u1ncZCfeqb1FeoF9AFN_ILQS3Oqss0id_Jfab1ozIcUFyspCFZ1IrmpNaqwD2MpGWkhlLuILYAwWAEjbJfxoy9zyuVb-ySxGCe_ZLCbd2j6K_ws8euz5Tsy6e_Y4vXFmE-66cDWCuBiUN5u_nfjdn=qaeFuQ6ZdZHTIhwe1g_2zvmjMsHkndvhnlFYsqNoGMuKhP44TuSovuI5jwy0xcaWOCyXWKKEIi5PYASGBBUnaoB=0CyKSebtRtcP90cKN3zNnNJsXSagHIMhk_uXHB8eZLtO2pWaUBmCZBr-1NGoETUU53wo2=kUXAKJ-M1eR_J85IpWv_yxSm_Sb-h-0Mhga_nq-Qb5Au1Y6kS4pk_DfYjAJisifT5BfXkq9vqv9En9DvxUNwd2DEcWeHcJL3mjvLRDp22Ab-CHWLOIUDTkmmUK5S8OkgE3VlArzz-oJiIbqxGvxIdU32m2JM1V8kb-3Ibqzds-nvqlFYfv4Zca23t1oRp-klgCl2IRFIWPqMfejoBSMi1efHjo5DHfBgOPyhmtpr-aLAE831=9_DFnxgC4aIgGCjqdylqQcZ0--HPHngT4LAk_igORltLnMNIrToSQIEsQ1-2Xz4=_zmIgd32Xq44JjlqUWruL_rc513u=RVrX'} headers = {'Host': 'jbrest.jetblue.com', 'application-channel': 'Desktop_Web', 'sec-ch-ua-platform': '"macOS"', 'sec-ch-ua-mobile': '?0', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/114.0', 'booking-application-type': 'NGB', 'content-type': 'application/json', 'accept': 'application/json', 'api-version': 'v3', 'origin': 'https://www.jetblue.com', 'sec-fetch-site': 'same-site', 'sec-fetch-mode': 'cors', 'sec-fetch-dest': 'empty', 'accept-language': 'en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7', 'x-1itxwo9i-f': 'AxvBzMmJAQAAaAQ7zgSP4nlKcZSttXsGb9uYkkLY7uLh100Yc-RKVcn629ZUAWe0HDyuchRAwH9eCOfvosJeCA==', 'x-1itxwo9i-b': 'uixy0h', 'x-1itxwo9i-c': 'AIDoycmJAQAAXTn26Pxf_1wI4-I5djOjN3T2MOw-0aPIA0D-voJsBMavdngQ', 'x-1itxwo9i-d': 'ABaAhIjBCKHFgQGAAYIQgISi0aIA5JmBzvpDzz8AgmwExq92eBAAAAAAH29cNgATB04U6gtu8Zerkf2sfOfx', 'x-1itxwo9i-z': 'q', 'x-1itxwo9i-a': 'IQ8hzLAo5YXL9aH30LKiw8OwGY2HpPNnv5BWJWU6AKbOmW3muL8zYxi0jh6WuRhqMk3UKDMh-xMVBNqos1z0yTHWgLRPDxu5CiJMjAu-sp_Aut3go7bqfI0hvfMc14flP8mN1cXSrI7p5Irr7-TuOjsB_JHzJ2biP7pQrwD3qW9GByOtW3b5uAmpghgv5TMT9NmnrIMzaiw1wGQUxe5w0Nmt3NvmkODRITQuHR81yBWIFBGbWJexl-8bfhVS1YPmdGjabjWjIyHVwgiP9B_AFKVE0TMTvXXksO=LYw92VjpH0W_lQ8NaN8px4FUYcX_09l-yo6PmE=WCNP20rEQ4uDK0ddHtH6woUjxHKXzc6ossSo4NlSDjILznJaa5RHeNTeKDeJeRpdbsMdCaCWd2=YnPDCK4sh1KlV4H68K7fcXTij9rpswKgX1Gp5KNyq8Aj06q6hoeOf4LbB_hFIjy41=fqX_a4gm-D3Fu-srNXg0pwxtUl97gUAo1AgFcGja=Rhm1M9qrUcE1FKpeBTAKC_lhbMkDjioXEbjWALjkmIN8E=fl==UX0X0-nLt5oYUNQnoYIcvPQrGkdp4AUEeYzW=TM5SU1PJkESu4hFuq1SICm3h6VmkTnT4tcqSrM_jMOg6LwR4E2IhmGGM9yXys-ij1GjAyQ9df37W4WbPrjT=TuIqBx_WXgsorJ-6sg0x9vscmiGKl6KqSj1qqudPAneyTfl4Pwv2xd_iPsvK7IA9AxhuR5Rgokal4lV32cuWvuJqkE8INbMi7HtShUlKo4ci7KoHu9FJ-RBX0-G7hR1LwTDW1Gex61KrFjrBD_kasnE6_aN7EUflgrcivkVB2NDsnWu2Y=KJF94TdbF2c1Oyp1QCPGVfbjk7mNxp_EXApSEw13ntT_PX5uwnT=Lq5GUJKs7X9IeLBXQtHp=shuI3knKCCT2kX1N3RdhbAvAszs0-PaSlPWOyBjTrqWKLEr_ppjV8DA3cw45W2g9mO9O6OlfetLUlt90GEAg7JbpmKa1pgyKu1hM5ktq_6KzmJzrmrp4rsFA1b-foV7BFtBJjvWmRPnJeHGwAawvgPKhFhM2zp_p=p2WtB8y0hWFdPb2rJeHLd2kpyMtGPeuEypmu=GnNFJtSpnqHd3RxNFGd0mKfkF9uuUARjPmGCwB=UliB7DMr-=jwLiyNiqt9sl74D1XmoNShkD0LdzvuilzqekrY9M86DXfbDMAB2hPW8Lw3bd=sjdHioVXUaVXOd41eRa6cpgm5lQyHGmdcYct_J0eJRED8nXVNWqHDBH8luCDq5OYALToh64cGtWm_7QHYQhVy2UYrkccvXKaSEIvnlOyN0=H5G2ufUw3PBUKUBCOmxQb7_BaHVtpQ2fzlguGYd-2TLsl7OCLwG9k1fkMJSOdVe6m4_VrXd6VSLQ0JbYzVGcVm97tQuKAbIfi7c'}
response = session.post(url, headers=headers, json=data) response = session.post(url, headers=headers, json=data)
......
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