Commit 22d82751 authored by wang's avatar wang

test

parent a55a4649
......@@ -395,7 +395,7 @@ function Window(options) {
const statusbar = BarProp.create(window);
const toolbar = BarProp.create(window);
const external = External.create(window);
const navigator = Navigator.create(window, [], { userAgent: this._resourceLoader._userAgent });
let navigator = Navigator.create(window, [], { userAgent: this._resourceLoader._userAgent });
const performance = Performance.create(window, [], { rawPerformance });
const screen = Screen.create(window);
const customElementRegistry = CustomElementRegistry.create(window);
......@@ -440,6 +440,89 @@ function Window(options) {
return idlUtils.wrapperForImpl(idlUtils.implForWrapper(window._document)._history);
},
get navigator() {
navigator = new Proxy(navigator, {
ownKeys(t){
return [
"vendorSub",
"productSub",
"vendor",
"maxTouchPoints",
"scheduling",
"userActivation",
"doNotTrack",
"geolocation",
"connection",
"plugins",
"mimeTypes",
"pdfViewerEnabled",
"webkitTemporaryStorage",
"webkitPersistentStorage",
"hardwareConcurrency",
"cookieEnabled",
"appCodeName",
"appName",
"appVersion",
"platform",
"product",
"userAgent",
"language",
"languages",
"onLine",
"webdriver",
"getGamepads",
"javaEnabled",
"sendBeacon",
"vibrate",
"deprecatedRunAdAuctionEnforcesKAnonymity",
"bluetooth",
"clipboard",
"credentials",
"keyboard",
"managed",
"mediaDevices",
"storage",
"serviceWorker",
"virtualKeyboard",
"wakeLock",
"deviceMemory",
"login",
"ink",
"hid",
"locks",
"gpu",
"mediaCapabilities",
"mediaSession",
"permissions",
"presentation",
"usb",
"xr",
"serial",
"windowControlsOverlay",
"userAgentData",
"adAuctionComponents",
"runAdAuction",
"canLoadAdAuctionFencedFrame",
"clearAppBadge",
"getBattery",
"getUserMedia",
"requestMIDIAccess",
"requestMediaKeySystemAccess",
"setAppBadge",
"webkitGetUserMedia",
"clearOriginJoinedAdInterestGroups",
"createAuctionNonce",
"deprecatedReplaceInURN",
"deprecatedURNToURL",
"getInstalledRelatedApps",
"joinAdInterestGroup",
"leaveAdInterestGroup",
"updateAdInterestGroups",
"registerProtocolHandler",
"unregisterProtocolHandler"
]
}
})
return navigator;
},
get locationbar() {
......
......@@ -102,7 +102,7 @@ exports.install = (globalObject, globalNames) => {
"video/mp4; codecs=\"avc1.42E01E\"": "probably",
"video/webm; codecs=\"vp8, vorbis\"": "probably",
"video/ogg; codecs=\"theora\"": "probably",
"video/ogg; codecs=\"theora\"": undefined,
"audio/x-m4a;": "maybe",
......
......@@ -147,9 +147,9 @@ exports.install = (globalObject, globalNames) => {
// })
class Navigator {
constructor() {
throw new TypeError("Illegal constructor");
}
// constructor() {
// throw new TypeError("Illegal constructor");
// }
javaEnabled() {
......@@ -363,7 +363,7 @@ exports.install = (globalObject, globalNames) => {
}
return Promise((resolve, reject) => {
return new Promise((resolve, reject) => {
resolve(r)
});
......@@ -371,6 +371,9 @@ exports.install = (globalObject, globalNames) => {
}
}
adAuctionComponents(){}
runAdAuction(){}
canLoadAdAuctionFencedFrame(){}
get userAgent() {
// return 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36';
return window.ENV.navigatorparams.useragent
......@@ -424,8 +427,9 @@ exports.install = (globalObject, globalNames) => {
get languages() {
return window.ENV.navigatorparams.languages || [
"en-US",
"en",
"en-US",
"zh-CN",
"ru"]
......@@ -508,7 +512,7 @@ exports.install = (globalObject, globalNames) => {
get connection() {
console.log('navigator.connection.object')
return proxy({
rtt : 100
rtt : 300
}, 'connection')
}
......@@ -541,7 +545,9 @@ exports.install = (globalObject, globalNames) => {
vibrate() {
console.log('navigator.vibrate')
}
get deprecatedRunAdAuctionEnforcesKAnonymity(){
return false
}
bluetooth() {
console.log('navigator.bluetooth.object')
return proxy({}, 'bluetooth')
......@@ -595,7 +601,9 @@ exports.install = (globalObject, globalNames) => {
get deviceMemory() {
console.log('navigator.deviceMemory.get')
}
get login(){
return proxy({}, 'login')
}
ink() {
console.log('navigator.ink.object')
return proxy({}, 'ink')
......@@ -656,10 +664,7 @@ exports.install = (globalObject, globalNames) => {
return proxy({}, 'xr')
}
userAgentData() {
console.log('navigator.userAgentData.object')
return proxy({}, 'userAgentData')
}
clearAppBadge() {
console.log('navigator.clearAppBadge')
......@@ -684,14 +689,21 @@ exports.install = (globalObject, globalNames) => {
webkitGetUserMedia() {
console.log('navigator.webkitGetUserMedia')
}
clearOriginJoinedAdInterestGroups(){}
createAuctionNonce(){}
deprecatedReplaceInURN(){}
deprecatedURNToURL(){}
joinAdInterestGroup(){}
leaveAdInterestGroup(){}
updateAdInterestGroups(){}
getInstalledRelatedApps() {
console.log('navigator.getInstalledRelatedApps')
}
registerProtocolHandler() {
console.log('navigator.registerProtocolHandler')
}
// registerProtocolHandler() {
// console.log('navigator.registerProtocolHandler')
// }
unregisterProtocolHandler() {
console.log('navigator.unregisterProtocolHandler')
......@@ -757,7 +769,7 @@ exports.install = (globalObject, globalNames) => {
r[e]['enumerable'] = true
})
Object.defineProperties(Navigator.prototype, r)
delete Navigator.prototype.constructor
Object.defineProperties(Navigator.prototype, {
javaEnabled: {enumerable: true},
appCodeName: {enumerable: true},
......
......@@ -3123,7 +3123,7 @@ class HTMLCanvasElementImpl extends HTMLElementImpl {
getSupportedExtensions() {
// window.debug = true;
v_console_log(' [*] WebGLRenderingContext -> getSupportedExtensions[func]')
return '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'.split(';')
return "EXT_color_buffer_float;EXT_color_buffer_half_float;EXT_disjoint_timer_query_webgl2;EXT_float_blend;EXT_texture_compression_bptc;EXT_texture_compression_rgtc;EXT_texture_filter_anisotropic;EXT_texture_norm16;KHR_parallel_shader_compile;OES_draw_buffers_indexed;OES_texture_float_linear;WEBGL_clip_cull_distance;WEBGL_compressed_texture_astc;WEBGL_compressed_texture_etc;WEBGL_compressed_texture_etc1;WEBGL_compressed_texture_pvrtc;WEBGL_compressed_texture_s3tc;WEBGL_compressed_texture_s3tc_srgb;WEBGL_debug_renderer_info;WEBGL_debug_shaders;WEBGL_lose_context;WEBGL_multi_draw;WEBGL_provoking_vertex".split(';')
}
getExtension(key) {
......@@ -3195,10 +3195,10 @@ class HTMLCanvasElementImpl extends HTMLElementImpl {
35660: 16,
36347: 1024,
7937: 'WebKit WebGL',
35724: 'WebGL GLSL ES 1.0 (OpenGL ES GLSL ES 1.0 Chromium)',
35724: "WebGL GLSL ES 3.00 (OpenGL ES GLSL ES 3.0 Chromium)",
3415: 0,
7936: 'WebKit',
7938: 'WebGL 1.0 (OpenGL ES 2.0 Chromium)',
7938: "WebGL 2.0 (OpenGL ES 3.0 Chromium)",
37445: 'Google Inc.',
// 37446: 'ANGLE (Apple, Apple M1 Max, OpenGL 4.1)',
37446: window.GRAPHIC_DRIVER,
......@@ -3213,7 +3213,7 @@ class HTMLCanvasElementImpl extends HTMLElementImpl {
return new Float32Array([1, 1])
}
if (key == 33901) {
return new Float32Array([1, 64])
return new Float32Array([1, 511])
}
if (key == 35661) {
return 32
......@@ -3257,18 +3257,18 @@ class HTMLCanvasElementImpl extends HTMLElementImpl {
if (key == 7937) {
return "WebKit WebGL"
}
if (key == 35724) {
return "WebGL GLSL ES 1.0 (OpenGL ES GLSL ES 1.0 Chromium)"
}
if (key == 3415) {
return 0
}
if (key == 7936) {
return "WebKit"
}
if (key == 7938) {
return "WebGL 1.0 (OpenGL ES 2.0 Chromium)"
}
if (key == 35724) {
return "WebGL GLSL ES 3.00 (OpenGL ES GLSL ES 3.0 Chromium)"
}
if (key == 3415) {
return 0
}
if (key == 7936) {
return "WebKit"
}
if (key == 7938) {
return "WebGL 2.0 (OpenGL ES 3.0 Chromium)"
}
if (key == 3411) {
return 8
}
......@@ -3371,8 +3371,10 @@ class HTMLCanvasElementImpl extends HTMLElementImpl {
canvas: {writable: undefined, enumerable: true, configurable: true,
value: {
toDataURL:function (){
return 'data:image/png;base64,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';
}
return "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAACWCAYAAABkW7XSAAAAAXNSR0IArs4c6QAADP1JREFUeF7tnV+IZEcVh0/1jOQhiPoQRMOCAUOQ4J8oASUIPfoQREFFRERBRAUFRSSCgsrMRVHIQxQUFBQFQQkoKHlQVHBGFBRDdpadJSM7S2aTwd3ViDHZmCVu2OtW3zvbPT3dM7e77606p+rb171ddc7vd/ioOlN1rxP+oQAKoIARBZyROAkTBVAABQRgUQQogAJmFABYZqwiUBRAAYBFDaAACphRAGCZsYpAUQAFABY1gAIoYEYBgGXGKgJFARQAWNQACqCAGQUAlhmrCBQFUABgUQMogAJmFABYZqwiUBRAAYBFDaAACphRAGCZsYpAUQAFABY1gAIoYEYBgGXGKgJFARQAWNQACqCAGQUAlhmrCBQFUABgUQMogAJmFABYZqwiUBRAAYBFDbSuQFlKX0T6zsla64MzYNYKAKys7e8m+RpY6yKy4pxsdDMLo+aoAMDK0fWOcy5L8bDyqyxxju8GdCx3VsMDrKzsDpPsKLCuM6tgaxhG9xxmAVg5uBw4x2ullGOFBbQCe5DqdAArVWcj5XW1lP6SyPqEwgJakTxJaVqAlZKbCnJ5oZT1nv8L4eRYaMIr8MhyCADLsnsKYz8GWDThFXpmKSSAZcktA7G+UErZ838dnB7rhnOyYiAVQlSoAMBSaIrVkHz/yslgS3jcWQb6WVZNjhw3wIpsQErTXy0HzfZ+A2D5tIFWSuYHygVgBRI6h2lmBJaXhCZ8DoXRYo4Aq0Uxcx/qan3+quEKayAXJ+Fzr5rZ8gdYs+nF01MUuFJKf7k+fzULsK5f4aEJT1U1VgBgNZaKB49S4PlS1noiq76gZgQW/SxKq7ECAKuxVDx4lAL/qxvucwILaFFejRQAWI1k4qHjFHh+5PzVHCus/eH5y+FxQmf+/wAr8wJoI33fv+qNnL9aAFg04dswJOExAFbC5oZK7Urdv9oH1SLAogkfyjWb8wAsm76pivpKfeG5JWDRz1Llrq5gAJYuP0xGc6XuX7UILKBlshK6Dxpgda9x0jP4/pXU/auWgQW0kq6c+ZIDWPPpxq9qBf470r/qAFg04am0AwoALApiIQV8/8p/cMLDqgtg0YRfyJ7kfgywkrM0bELPjdwf7AhYbA3DWqp6NoCl2h7dwV0eeX97hyusfRE4VKq7HIJEB7CCyJzmJJdLWVsauT/Y4QoLaKVZQjNnBbBmlowf7Cvw7MgHJwKssPan5R1aGZcgwMrY/EVTf3bs/mCAFZYPmdfRLGqc4d8DLMPmxQzd969G398ecIVFEz6m8ZHnBliRDbA6fWRgAS2rhbNg3ABrQQFz/fnlsQ9OBF5h0YTPtPAAVqbGL5r2MxPuDwbqYY2HThN+UTMN/R5gGTJLS6hP1eevxldVkYDF9R0thREgDoAVQOTUptAGLL5xmFqFTc8HYOXjdWuZPjPl/mCsFVadGCfhW3NY70AAS683aiN7esr9wcjA4i+HaiumvcAAVntaZjGS3w7697fvfx1nFFIKgOU9oAmfcCUCrITN7SI1A8CiCd+F8UrGBFhKjLASxlNH3B9UssLyUnJ9x0pBzRgnwJpRsNwfNwIs+lmJFirAStTYLtJ6spT+8tj3BxX2sEZT5y+HXRRCxDEBVkTxrU1tEFg04a0V2THxAqzEDO0ynX8fc39QUQ/rgAzOCXXeZWEEHBsjA4ptfSqrwKIJb73yhvEDrHS87DQTvx3056+Ouj+odYVVC0M/q9MKCTM4wAqjs/lZEgAWfzk0X4XC3j4BD4Ok8GR9/srwCmtfJ1ZaQSqmm0lYYXWja3KjJgQsTsIbrk6AZdi8UKH77aCM9K+mnb1S3sMalYuT8KGKp+V5AFbLgqY4XILAop9ltFABllHjQobtt4PXjwb4vxJKAj2sUenoZ4UspBbmAlgtiJj6EAkDi5WWseIFWMYMixHuP8de2JdAD+uAjJyEj1FV880JsObTLZtfXaw/ODH6wr7UgMVJeDvlDLDseBUl0kvXZL1XfeX5Rv8qQWBVW8MlWYsiMpM2VgBgNZYqzwcvXc0GWCKlFO4moKW50gGWZncUxHbpOSnHV1SJrrAqtT20bgZaCkpvYggAS6szCuK6eHmwFRxceM5gSziq+Ip7sWwosIAQxhQAWJTEVAUu/mfwdZzB+avMgLXhXiorlIY+BQCWPk/URHTxX9kCq9oa3sLWUE0x1oEALG2OKIrnwj+q/lWGK6x9Fwr3cqClqCR5vYwmMzTFsrcn/aXe5Bf2Jd10P2xC4W4FWlpqkxWWFieUxXFhT9alestoziusyhUnK+4ETXgNJQqwNLigMIYLuwcvPGfWdD/kiLuN3YiGMgVYGlxQGMPfd6QchVTuwBqchL+drWHsUgVYsR1QOP/etvR7bvAXwomvk8mshzV0yP/l8DVAK2bJAqyY6iude29L1npOVgHWBIM8tF4LtGKVLsCKpbziefdOH74/yJZwxLBrsuLuogkfo4QBVgzVlc+5d/Lw/UGAddA090aa8DHKGGDFUF3xnLsPS3+5+qTXges4AGvMNCcb7m6u74QuZYAVWnHl8z3+Z1nriawCrEZGFe4t9LMaKdXSQwCrJSFTGeaJP06+P8gKa6rDhXsr0ApV/wArlNJG5nl8Y/L9QYB1hIGlrLgVmvAhShxghVDZyBy7v5N+b8r9QYB1pImFezurrBBlDrBCqGxkjt3fDPtX9LAam1a4e4FVY7UWfBBgLShgSj8//2tZd1MuPLPCGnPaHyB9J6AKXf8AK7Tiiuc7/9D0+4MAqzbOg+rdgCpWGQOsWMorm3f3F9X726ddxwFYUrj3AqrYZQuwYjugZP7dn0nfHXHhOVtg+RXV+wGVkjLleoEWI2LHsftgdf6KFdbI1u+DgCp2XY7PzwpLmyOR4nnsJ0ffH8xohVW4DwGqSGV47LQA61iJ0n9g50fD97dnvMIqvNPuI8BKc8UDLM3uBIptAKxjLjwnvcLyfaqPAapA5bbQNABrIfnS+PG57w/eznDog6kZvMCvcJ8AVJaqGGBZcqujWM999/j7g4mtsAr3KUDVUTl1OizA6lRe/YPvfLs6zjDpc17JrbD81u8zgEp/VU6PEGBZdq+F2He+mQGwPKg+B6haKJfoQwCs6BbEDWDngWb3B41uCQt3H6CKW2Htzg6w2tXT3Ghn7x/2r5p8vqvp1jFqYfkV1RcAlblibBBw1LpqEB+PdKjA9jeGxxmagqjpc1EKq5TqLNWXgFWHZRN16Ch1FTVjJr+hwPZXpb8kw4a78RVW4b4CqFIvb4CVusNH5Hd2VdalPn/VdOXU9LkghVVNUrg1QJVLGQepq1zEtJbn2S+bBlbhvgaorNXcovECrEUVNPr77S9Kvzf2OhkTW0Inhfs6oDJadguHDbAWltDmANufNwYsD6r7AZXNamsvaoDVnpamRtq+T9Z75cH3XyldYRXuAUBlqrg6DBZgdSiu5qG3P6scWD0p3LcAleYaihEbwIqheuQ5tz4t/eUJr5NRscJy9Vmq7wCryGWicnqApdKWboPa+qT0l+vzV7Neuen4WEPhvgeounXf9ugAy7Z/c0X/6Mer97ePr6girrAK9wNANZeZmf0IYGVmuE/30Y8qAZb/y98PAVWGJTh3ygBrbuls/nDrw9Vxhklbu85XWMNqK9yPAZXNCoobNcCKq3/w2QfAuhYJWP4azU8BVXDTE5oQYCVkZpNUznxguB0M1sPyW78HAVUTf3jmaAUAVmYVcuZ9AYHlQfVzQJVZiXWaLsDqVF59g595j5SLvKu9ybEGJ1IMVm+/BFb6KsB2RADLtn8zRb/1rsFVHH+kQVpvurtqTHFSvOghQDWTMTzcWAGA1Vgq+w9uvaPaDnYErOKmXwEq+1WiOwOApdufVqPburf64ESbwPLbv5t/C6haNYrBpioAsDIqjtNvqz440Qaw/Js+X/J7QJVR+ahIFWCpsKH7IDb7ww9OLAQsJ8XLNgBV944xwyQFAFYmdXHqnsFh0UP3B6defr6+1xsDW3HLnwBVJuWiNk2ApdaadgM79eYZgVVvHX2P6hV/AVTtusFo8yoAsOZVztjvTt09/GBqoy1h/V6qW/8KrIxZnXS4ACtpe6vkNt8gfTflwvPELaGT4sRJQJVBaZhLEWCZs2z2gDdfJ2tOZLXBKfXittOAanaF+UUoBQBWKKUjzrN5Z3X+6gaw6lPp+0ccnJPi9jOAKqJFTN1QAYDVUCjLj23eMeX+oJPijr8BKsve5hY7wErc8YdfXb2/ffyIwp3nAFXi1ieZHsBK0tZhUo+8StZ6IqveaH9E4fXnAVXiliedHsBK2l6Rkydk3Tn5w11PAKrErc4iPYCVuM2PvFLW3nQBWCVuczbpAaxsrCZRFLCvAMCy7yEZoEA2CgCsbKwmURSwrwDAsu8hGaBANgoArGysJlEUsK8AwLLvIRmgQDYKAKxsrCZRFLCvwP8Bqjz+poigxo4AAAAASUVORK5CYII="
}
}},
drawingBufferWidth: {writable: undefined, enumerable: true, configurable: true},
drawingBufferHeight: {writable: undefined, enumerable: true, configurable: true},
......@@ -3872,7 +3874,8 @@ let r = {}
res = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAA9JREFUGFdjZEADjKQLAAAA7gAFLaYDxAAAAABJRU5ErkJggg=="
}
if (this.width === 600 && this.height === 160){
res = 'data:image/png;base64,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'
res = 'data:image/png;base64,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'
}
if (this.width === 300 && this.height === 150) {
res = 'data:image/png;base64,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'
......
......@@ -24,7 +24,7 @@ exports.implementation = class HistoryImpl {
get length() {
this._guardAgainstInactiveDocuments();
return 2
return this._window._sessionHistory.length;
}
......
......@@ -20,10 +20,10 @@ req_level = logger.level('REQU', no=100, color='<fg 34>')
js_level = logger.level('VMJS', no=100, color='<fg 185>')
work_dir = '/home/opt/lcc-reese84/'
if platform.platform().startswith('mac'):
work_dir = '/Users/wang/PycharmProjects/lcc-reese84/'
work_dir = '/Users/wang/Documents/company/lcc-reese84/'
log_dir = '/data/log/lcc-hv/'
if platform.platform().startswith('mac'):
log_dir = '/Users/wang/PycharmProjects/lcc-reese84/'
log_dir = '/Users/wang/Documents/company/lcc-reese84/'
Path(log_dir).mkdir(exist_ok=True, parents=True)
Path(work_dir).mkdir(exist_ok=True, parents=True)
......@@ -37,7 +37,7 @@ def md5(text):
class Reese84ByPass(object):
def __init__(self, target, proxy, thread_name='111'):
self._session = tls_client.Session('chrome_120')
self._session = tls_client.Session('chrome_117')
# self._session = requests.Session()
self._session.verify = False
......@@ -76,7 +76,7 @@ class Reese84ByPass(object):
}
def start(self):
# self._init()
self._init()
self._repare_js()
# self.__auth_token()
# self._token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIzZTc4NDE1Zi03OTc2LTRjNDctYmQwNC0xM2FlMGJhOTRkMTQiLCJpYXQiOjE3MTUyNDEzMzMsInRrbiI6ImV5SmhiR2NpT2lKSVV6STFOaUlzSW5SNWNDSTZJa3BYVkNKOS5leUp6ZFdJaU9pSlZibXR1YjNkdUlpd2lhblJwSWpvaU1UTmtZek16WXpJdE5HVTJaUzAxWXpJMExUbGhPR010WWpBME9UTTJOV0V5T1RjM0lpd2lhWE56SWpvaVpHOTBVa1ZhSUVGUVNTSjkuRVUtQ1l3eVJmZUVaNDZvLUVHM2pUejNjRkMwYkFXNW1tX2VhZ05CMXE3RSIsImlzcyI6InNjb290LWNtdyIsImF1ZCI6InNjb290LWFwcCJ9.7WSVavUdvOUl4tjv9hpL4jeQTCnYh4bOUg669YERe-s'
......@@ -88,29 +88,41 @@ class Reese84ByPass(object):
def _init(self):
t1 = time.time()
url = "https://beta.makeabooking.transavia.com/Book/Flight?culture=en-SG&type=oneway&dst1=HKG&ast1=SIN&dst2=SIN&ast2=HKG&dd=2023-11-10&rd=null&adt=1&chd=0&inf=0"
response = self._session.get(url, headers={
"Host": "www.transavia.com",
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
"Accept-Encoding": "gzip, deflate, br, zstd",
"pragma": "no-cache",
"cache-control": "no-cache",
"sec-ch-ua": "\"Not_A Brand\";v=\"8\", \"Chromium\";v=\"120\", \"Google Chrome\";v=\"120\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"macOS\"",
"upgrade-insecure-requests": "1",
"user-agent": 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
"sec-fetch-site": "none",
"sec-fetch-site": "same-origin",
"sec-fetch-mode": "navigate",
"sec-fetch-user": "?1",
"sec-fetch-dest": "document",
"accept-language": "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7,ru;q=0.6"
})
"referer": "https://www.transavia.com/home/en-uk",
"accept-language": "en,en-US;q=0.9,zh-CN;q=0.8,zh;q=0.7,ru;q=0.6"
}
url = "https://www.transavia.com/home/en-uk"
response = self._session.get(url, headers=headers)
# print(response.text)
# print(response)
try:
self._js_url = re.findall('scriptElement.src = "(.+?)"', response.text)[0]
except:
pass
self.log.log('REQU', f'initUrl: code:{response.status_code} cost:{(time.time() - t1):.3f}s')
def _repare_js(self):
self._session.cookies.clear()
t1 = time.time()
r1 = self._session.get(
'https://www.transavia.com/wseruite-Leason-then-I-procena-Quardied-Play-tim/15273773515648128515', headers={
'https://www.transavia.com'+self._js_url, headers={
"authority": "www.transavia.com",
"accept": "*/*",
"accept-language": "en,en-US;q=0.9,zh-CN;q=0.8,zh;q=0.7,ru;q=0.6",
......@@ -137,7 +149,7 @@ class Reese84ByPass(object):
a, filename = tempfile.mkstemp()
t2 = time.time()
p = subprocess.Popen(['node', f'{work_dir}src/vm_env_{self.thread_name}.js', filename], stdin=subprocess.PIPE,
p = subprocess.Popen(['node', f'{work_dir}src/vm_env_{self.thread_name}.js', filename, self._js_url.split('?')[0]], stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
output, err = p.communicate(timeout=10)
......@@ -150,24 +162,24 @@ class Reese84ByPass(object):
# print(len(data['solution']['interrogation']['p']))
t3 = time.time()
url = "https://www.transavia.com/wseruite-Leason-then-I-procena-Quardied-Play-tim/15273773515648128515?d=www.transavia.com"
response = self._session.post(url, headers={
"authority": "www.transavia.com",
"accept": "application/json; charset=utf-8",
"accept-language": "en,en-US;q=0.9,zh-CN;q=0.8,zh;q=0.7,ru;q=0.6",
"cache-control": "no-cache",
"content-type": "text/plain; charset=utf-8",
"origin": "https://www.transavia.com",
"pragma": "no-cache",
"referer": "https://www.transavia.com/",
"sec-ch-ua": "\"Not_A Brand\";v=\"8\", \"Chromium\";v=\"120\", \"Google Chrome\";v=\"120\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"macOS\"",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin",
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}, json=data)
url = 'https://www.transavia.com'+self._js_url.split('?')[0] + "?d=www.transavia.comt"
response = self._session.post(url, headers = {
"Host": "www.transavia.com",
"pragma": "no-cache",
"cache-control": "no-cache",
"sec-ch-ua": "\"Not_A Brand\";v=\"8\", \"Chromium\";v=\"120\", \"Google Chrome\";v=\"120\"",
"accept": "application/json; charset=utf-8",
"content-type": "text/plain; charset=utf-8",
"sec-ch-ua-mobile": "?0",
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
"sec-ch-ua-platform": "\"macOS\"",
"origin": "https://www.transavia.com",
"sec-fetch-site": "same-origin",
"sec-fetch-mode": "cors",
"sec-fetch-dest": "empty",
"referer": "https://www.transavia.com/home/en-uk",
"accept-language": "en,en-US;q=0.9,zh-CN;q=0.8,zh;q=0.7,ru;q=0.6"
}, json=data)
self.log.log('REQU', f'JSURL: code:{response.status_code} cost:{(time.time() - t3):.3f}s')
# self.log.info(f'{response.json().keys()}')
self.log.info(response.text)
......@@ -176,6 +188,7 @@ class Reese84ByPass(object):
self._session.cookies.update({
'reese84': response.json()['token']
})
self._reese84 = response.json()['token']
def __auth_token(self):
t1 = time.time()
......@@ -235,102 +248,63 @@ class Reese84ByPass(object):
return self.add_header, self._session.cookies.items()
def _test(self):
headers = {
"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": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
"cache-control": "no-cache",
"pragma": "no-cache",
"priority": "u=0, i",
"referer": "https://www.transavia.com/en-UK/book-a-flight/flights/search/",
"sec-ch-ua": "\"Chromium\";v=\"128\", \"Not;A=Brand\";v=\"24\", \"Microsoft Edge\";v=\"128\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"macOS\"",
"sec-fetch-dest": "document",
"sec-fetch-mode": "navigate",
"sec-fetch-site": "same-origin",
"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/128.0.0.0 Safari/537.36 Edg/128.0.0.0"
}
url = "https://www.transavia.com/en-UK/book-a-flight/flights/search/"
response = self._session.get(url, headers=headers)
self._init()
url = "https://www.transavia.com/en-UK/book-a-flight/flights/search/?r=False&ap=1&cp=0&ip=0&ds=EDI&as=ORY&od=1&om=12&oy=2024&fb=false"
response = self._session.get(url, headers = {
"Host": "www.transavia.com",
"pragma": "no-cache",
"cache-control": "no-cache",
"sec-ch-ua": "\"Not_A Brand\";v=\"8\", \"Chromium\";v=\"120\", \"Google Chrome\";v=\"120\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"macOS\"",
"upgrade-insecure-requests": "1",
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
"sec-fetch-site": "same-origin",
"sec-fetch-mode": "navigate",
"sec-fetch-user": "?1",
"sec-fetch-dest": "document",
"referer": "https://www.transavia.com/home/en-uk",
"accept-language": "en,en-US;q=0.9,zh-CN;q=0.8,zh;q=0.7,ru;q=0.6"
})
request_token = re.findall('"__RequestVerificationToken" type="hidden" value="(.+?)"', response.text)[0]
headers = {
"accept": "*/*",
"accept-language": "en,en-US;q=0.9,zh-CN;q=0.8,zh;q=0.7,ru;q=0.6",
"cache-control": "no-cache",
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
"origin": "https://www.transavia.com",
## multiday
response = self._session.post(headers = {
"Host": "www.transavia.com",
"pragma": "no-cache",
"priority": "u=1, i",
"referer": "https://www.transavia.com/en-EU/book-a-flight/flights/search/",
"request-context": "appId=cid-v1:ca3054ae-c69f-4eff-ae0f-e88356886373",
"request-id": "|8284459ec63648abab45ba8473599ea4.a687b9e506864705",
"sec-ch-ua": "\"Chromium\";v=\"128\", \"Not;A=Brand\";v=\"24\", \"Google Chrome\";v=\"128\"",
"cache-control": "no-cache",
"sec-ch-ua": "\"Not_A Brand\";v=\"8\", \"Chromium\";v=\"120\", \"Google Chrome\";v=\"120\"",
"request-context": "appId=cid-v1:942f733a-0e08-45b5-a6e2-53089f65a4b2",
"traceparent": "00-d6847a54450e47f9888346aad52b84dd-8d17bbd29e2d45e4-01",
"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/120.0.0.0 Safari/537.36",
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
"accept": "*/*",
"x-requested-with": "XMLHttpRequest",
"request-id": "|d6847a54450e47f9888346aad52b84dd.8d17bbd29e2d45e4",
"sec-ch-ua-platform": "\"macOS\"",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"origin": "https://www.transavia.com",
"sec-fetch-site": "same-origin",
"traceparent": "00-8284459ec63648abab45ba8473599ea4-a687b9e506864705-01",
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36",
"x-requested-with": "XMLHttpRequest"
}
cookies = {
"visid_incap_2445686": "w35POAIZR1KQx4h8BMJPT6rcB2cAAAAAQUIPAAAAAAA9QgL8CghIXh5o1v0fzOYl",
"websiteuk#lang": "en",
"ASP.NET_SessionId": "3j3du33tu1xajprc3of5ilso",
"SC_ANALYTICS_GLOBAL_COOKIE": "ee63bb992a4345479a87e797a2d54b2b|False",
"__RequestVerificationToken": "VI8bOtTy16FmaxOhD_cdmlmWyzpO_xfE_a6AxHaSluLKbd1kvh3MSt0uOcgjR_htkk-pB6fiOaGD10NqB2fZsld-ULan-qbJs2Th4B9CWRo1",
"nlbi_2445686_2305986": "+wHJNWBAeWvvFKp0UVmepAAAAAAS50WrAXDavL8LbzB8lHMe",
"optimizelyEndUserId": "oeu1728568494533r0.11638054454087166",
"visid_incap_2897631": "/iCILjEXT2CZq/87x9ASzq/cB2cAAAAAQUIPAAAAAAD/PcHUZkI8t1SFhtKjvM8i",
"nlbi_2897631": "2LLIJUZN7VTGxZCEJWK71gAAAACrab2MYoW7qtm58vTEY+m5",
"tmDeviceId": "e60fa2ae-6cb5-43b5-90ff-15d3636fcbd9",
"tmId": "53f5a955-266f-40ba-9656-9c521da1c8da",
"tra_ga": "GA1.1.e60fa2ae-6cb5-43b5-90ff-15d3636fcbd9",
"cookies_accepted": "true",
"tmConsentLocal": "1|preferences-true|statistics-true|marketing-true",
"_gcl_au": "1.1.1937692073.1728568499",
"tmConsent": "1|preferences-true|statistics-true|marketing-true",
"sp": "4ad7ebc3-0d78-4954-8b02-ef780eeaa72f",
"_fbp": "fb.1.1728568501949.485407995632351980",
"_clck": "uiejvf%7C2%7Cfpw%7C0%7C1744",
"incap_ses_953_2445686": "3ZcGcqyyDB6JuIGnn7w5DUPlB2cAAAAAiIuqF/jxIp2WPOjiuMliiw==",
"reese84": "3:V/s91sIIiXCATKsXg7Q6Sw==:2UX5vNNJ6buj7B2JARtgRFO/EJqxbaZUAhrvuScaV8OBMycjN3g7LN3yeg/0XTMyT4K1OG04IJtX6Jb3wIx0J3UV+bc+j1U35Sqs0PpD9XLHzE9Hj3xvwPPr6MuiElOb0d38YiAKFIW589mCD0Bs1Ld8hnuSyM8PWNgGqzjc9aIRoZ37Lh0r1nJ6Ycth8VyuhXUfAl7f87rbffPucvFw5eUUjTQNwz6y//K4OfRfzyZaEfHpvmeGDpia6UF7ISQiahpD+MjH9RbxpnUDKhOsZ6tS5KVWkaElzl/ugdyEtnw1XGMaB84IfKd3NElkV8M0bPlc1Uf+3Eox7cA5sOgU8HwFAYRZz5fdb48ax6xhE3RiwCp9naxzxlbHGV/rQ5xCY1hrd+e5T/BwCx6dFgQp3kbvDoIKAoLXK0XPPZ4B2s5vvOckAl31ATR2brjS6NxQFAsVw/K+hTTwbZ7VkEKSxpUJOhYs0Gcf1/Z2/2qn3s5f1cN1KKZNw0P1T11lHhub/dfAu16FTN7gFtyBQO7DmA==:J+UpNc+RvDZy1b3AWmHVQ8j4bnaus5cq0oxtpXatoGo=",
"websitenl#lang": "en",
"incap_ses_953_2897631": "YgtIC/t/FUHCZ4Onn7w5DY3pB2cAAAAAxnKQWa2wE5AAo9X3kO0Lvg==",
"ai_user": "aC3y3J5wDXc/7HPPedgOYQ|2024-10-10T14:49:50.277Z",
"SearchSite.SiteLang": "en-nl",
"df_vs": "1",
"df_ss": "1728571792077",
"spses.a620": "*",
"_pin_unauth": "dWlkPU5qSmtPV1kzTm1NdE1ERTJPQzAwTUdZMExXSmhZVFF0T0RKbE5ESXlZbUU1TkRoag",
"websiteeu#lang": "en",
"sitelang": "/en-EU/",
"df_bpln": "3",
"nlbi_2445686_2147483392": "Ga+LKRlq2WDj1A7VUVmepAAAAACIj9Wq7hOc/F7Ik3ce4UaK",
"ai_session": "6G/otGNPplDl25UYf4/f9b|1728571790282|1728571805013",
"spid.a620": "b11090db-b3bd-4bc6-9e0c-4a3c90ae8c33.1728568500.2.1728571806.1728568500.842ffefc-993c-4ee3-a856-07a6a5c5acb9.e23a5fab-266b-46a4-bf3e-6e78db2dd417.27f31914-e890-4501-8eca-2b67e1a15864.1728571794874.3",
"_rdt_uuid": "1728568500581.3003ec62-7e1b-4706-80bd-9adf80b66e74",
"tra_ga_21Q6T8Z90B": "GS1.1.1728571788.2.1.1728571806.0.0.1278265538",
"_cdi2_id": "d0370489-d37b-46cb-a4c3-b0e797ecef31.1728567492.1728571807",
"_cdi2_id_s": "d0370489-d37b-46cb-a4c3-b0e797ecef31.1728567492.1728571807",
"_uetsid": "3ee20bf0870f11efa3868f11dc766145",
"_uetvid": "3ee22c60870f11ef93d143f089fc3cbe",
"_clsk": "kf5o0m%7C1728571811556%7C6%7C0%7Cb.clarity.ms%2Fcollect"
}
url = "https://www.transavia.com/en-EU/book-a-flight/flights/multidayavailability/"
"sec-fetch-mode": "cors",
"sec-fetch-dest": "empty",
"referer": "https://www.transavia.com/en-UK/book-a-flight/flights/search/",
"accept-language": "en,en-US;q=0.9,zh-CN;q=0.8,zh;q=0.7,ru;q=0.6"
},
url = "https://www.transavia.com/en-UK/book-a-flight/flights/multidayavailability/",
data = {
"selectPassengersCount.AdultCount": "1",
"selectPassengersCount.ChildCount": "0",
"selectPassengersCount.InfantCount": "0",
"routeSelection.DepartureStation": "AHU",
"routeSelection.ArrivalStation": "RTM",
"dateSelection.OutboundDate.Day": "11",
"dateSelection.OutboundDate.Month": "10",
"routeSelection.DepartureStation": "EDI",
"routeSelection.ArrivalStation": "ORY",
"dateSelection.OutboundDate.Day": "1",
"dateSelection.OutboundDate.Month": "11",
"dateSelection.OutboundDate.Year": "2024",
"dateSelection.InboundDate.Day": "",
"dateSelection.InboundDate.Month": "",
......@@ -338,6 +312,38 @@ class Reese84ByPass(object):
"dateSelection.IsReturnFlight": "false",
"flyingBlueSearch.FlyingBlueSearch": "false",
"__RequestVerificationToken": request_token
})
print(response.text)
headers = {
"Host": "www.transavia.com",
"pragma": "no-cache",
"cache-control": "no-cache",
"sec-ch-ua": "\"Not_A Brand\";v=\"8\", \"Chromium\";v=\"120\", \"Google Chrome\";v=\"120\"",
"request-context": "appId=cid-v1:942f733a-0e08-45b5-a6e2-53089f65a4b2",
"traceparent": "00-d6847a54450e47f9888346aad52b84dd-0a171226e9824924-01",
"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/120.0.0.0 Safari/537.36",
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
"accept": "*/*",
"x-requested-with": "XMLHttpRequest",
"request-id": "|d6847a54450e47f9888346aad52b84dd.0a171226e9824924",
"sec-ch-ua-platform": "\"macOS\"",
"origin": "https://www.transavia.com",
"sec-fetch-site": "same-origin",
"sec-fetch-mode": "cors",
"sec-fetch-dest": "empty",
"referer": "https://www.transavia.com/en-UK/book-a-flight/flights/search/",
"accept-language": "en,en-US;q=0.9,zh-CN;q=0.8,zh;q=0.7,ru;q=0.6"
}
url = "https://www.transavia.com/en-UK/book-a-flight/flights/SingleDayAvailability/"
data = {
"selectSingleDayAvailability.JourneyType": "OutboundFlight",
"selectSingleDayAvailability.Date.DateToParse": "2024-11-01",
"selectSingleDayAvailability.AutoSelect": "true",
"__RequestVerificationToken": request_token
}
response = self._session.post(url, headers=headers, data=data)
print(response.text)
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -34,95 +34,82 @@ session.proxies = {
# }
# headers = {"Host": "makeabooking.flyscoot.com", "upgrade-insecure-requests": "1", "cache-control": "no-cache", "pragma": "no-cache", "sec-ch-ua": "\"Google Chrome\";v=\"117\", \"Not;A=Brand\";v=\"8\", \"Chromium\";v=\"117\"", "sec-fetch-site": "none", "sec-fetch-user": "?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": "reese84=3:VJ820WHhjme3/crOQaj78A==:eFJPEYy8XcYEaP/atv9fsT5D7ToFdNFTxaa4bwmR90dilu33beyKbfCyJnkdhT9e+5l8jAJb01h63pqt05MhGg9r/5RZejtnfIJAECMnRb6Zz7BEkeLZHIV2vSo0tb0/li9KV0/pG2fQ2hPC4Bf70WMmyNgXLCNy6+xR/VTTLuisf27xMI4qQqlwJOL4ceXIKRg9TJESeDrKT3lq+uTN/nHd5m7bMSe1jU2P7blcGFw3lCBoz9edfjoSXd2/7TxU4XcRvSz0heQxlH5afjWXEN9O/ZdR5HvbXvj8R534nWEpIlsMSF4LFm+ZtDChW+DaIXYCrON88ZAjtRRoGJD+m10v7dwIhz8GE7jqSX6w+COBRVuUw+TolSElhniGECx9ecxrDXK4lenXEBbti9c6qsUW0aDucOXJ7RuH846Cv/wHzWgxDdXfq8d48wUkWiG/CUQcWwjYUB5yQxjS+PZBHw==:199JVZOOdh33meA+GDcpO7MgGYmM8lFo8rd89zsD8XI=; incap_ses_1162_2444946=tHIUBxd4eUOf2aNY70EgEHjtb2UAAAAAV4E0WPMRva8MqaB4iKuE1g==; nlbi_2444946_2147483392=bCBsA6JgUAtev9ZQbmwDOgAAAACEAf4Pzyd7zDA/Owdy7p7I; visid_incap_2444946=yoawIYrdRCqTlkmmJjaoKHjtb2UAAAAAQUIPAAAAAADcMmrcTzpY1NPbHZffXyVR", "authority": "makeabooking.flyscoot.com", "sec-ch-ua-platform": "\"macOS\"", "sec-fetch-dest": "document", "sec-fetch-mode": "navigate", "accept-language": "en-US,en;q=0.9", "sec-ch-ua-mobile": "?0"}
headers ,cookies = ({'Host': 'makeabooking.flyscoot.com', 'accept-language': 'en-US,en;q=0.9', 'authority': 'makeabooking.flyscoot.com', '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'}, {'reese84': '3:4VO5HlaJQFzMu7zyUn+KwQ==:YQxCfIeU7Vb68mzxfd+YJRi4cPOoQ4cARU2EWlnzuQOh1g0wAve6QAKMDwdtfnK3j1OXBAUwJDAAB0GQH6RzxpZVeL+ODQNGgi3zaGxCjV4S2FjuyPdSNlhZnOEVWMcFW37CQRcgUgpMMxSCJmuq8ElkH5g+AeFhqagijk4P2zn1Uk4BQNa987XOb2Mz2F1rVokoK8x5oxevp+Y+an+QghYy2SsVCZ/WHdUQ2dr2OlRBmGldgTEGsHcdVoDJGkwrZW+GDCR6v8NZfpD/j3shpugsgHqG7dASBmblPvQj95hZ+h0+QLVNeAEEPf2kvRqXSl1rNInlIiyymCyIObXe5A1whFKpwt9udBHZzkQ5C0waaNTY1PDUjnRpR84Vve6SqUYNB75V+t1EPyhQ51ipP78303sbK6QJ55WE9NWQ62xjA7+s5MOtrdEPaiMwXFoSIdoUX/G6gQMuroq5Afx0jw==:4Tn2MNEt6I88csuHAey/NFSSbdXfvoovVjknDzxQBak=', 'incap_ses_1001_2444946': 'K3aQBv/582ntO3ynXkTkDcQqcGUAAAAAhgOults9gpnE6iK89JIRLw==', 'nlbi_2444946_2147483392': '/P2hBumSKEVFwqcUbmwDOgAAAAAAP/iwKH8x5Kb1rlNo3LB2', 'visid_incap_2444946': '13N6ErCmQOKo0CCXKgASbsQqcGUAAAAAQUIPAAAAAADMb/Rh65/VO/0hnEZBfNL+'})
cookies = {
"reese84": "3:Jj3w9QXzDbKT1TirzupAgg==:DYLq/8/43uCXwWu1kM5JWqyL0BtCSQNN9ZybTHXVvLPF57CBs3czCJWQBjMlMUGxdorTeZ448W8ME6U4D9q0vTsZMwNBO9++DhjucAPIovi+E/ZLDb/k5fMq+hcGsZm73rgck+knhW2O8J6EIkfFftSI41gQQtGFOJmqwKlbrot8B3TmvkAVVxDyAJ0W7GylTKyVjBBVQOXHA0idKHfB7nnCzg0TqZ2CmeY7dwZwuGJ61ZLAH5c9dKLNh0VFdT+JcndMWQ87pQE1jmKKXHcqsE8SlTTkfvsHp3Oi2+gds+Q2EEud8LIbbAcN1vhzr+Y7ydInRqyBzIQRvLQ60qGXAsa+NEM8XpPc1KbObc0/VXmfHkBJN5EMmYfu4K3AjXpx3H7DOXvwWzt0+4VFvpkGe6GCPARfJc/TVSWrg4iufcvGxy3FZJbUPj3nd70uLoVOSZBWFyU1tG7johTSpR5XjMFDkaeRWzito7Lb50ClIZw=:v3ujabpEMeL2XH2fp+tQzqeAjzHz2N613MlzyPtKS5Y="
}
cks = []
for k, v in cookies.items():
cks.append(f'{k}={v}')
headers['cookie'] = '; '.join(cks)
# headers['cookie'] = 'cookie: viewedOuibounceModal=true; loc=RU; hpu=/en; curr=SGD; nlbi_2444926=BQWkQzWxbCxWZUSTgG/1SgAAAADvneO8HD9YrOo1oNJVuImg; visid_incap_2444926=oJ/WridKTLa7YPrulyWXS2xclmUAAAAAQUIPAAAAAACCLIDlOz0pgeJVmV6JeY70; incap_ses_1045_2444926=C5VvLFJn5kUWZTPEGZeADm1clmUAAAAA6CxppBqZeCzHHnjiCLK+Ig==; dtCookie=v_4_srv_-2D37_sn_6V7NGQRV8VSKA62N914MSG3JHNER95LH; rxVisitor=1704352880380B4AUHHBKBA3II224RCL5E2M4ISLU4D9P; dtSa=-; _gcl_au=1.1.1950747451.1704352881; country=RU; visid_incap_3032444=sw8DCT0URdK4TEunjpR3z3BclmUAAAAAQUIPAAAAAACOiqDER1mqI5r9DeEvP3yz; nlbi_3032444=s9E9aPNzKTa4bwgL/g7ELQAAAADTWpFn8pjLhzxo15SN3oGu; incap_ses_1045_3032444=zLxGDOkwmCSZaTPEGZeADnBclmUAAAAADp4s5beS/7/dlVr0WW2gqg==; _fbp=fb.1.1704352881612.117415451; _cls_v=fcec4b38-0fef-4a64-ae2f-e7b99d7bdafd; _cls_s=bb100b55-5bc8-4163-a36b-dc4ddb9bb419:0; __clickidc=170435288295804468; _yjsu_yjad=1704352882.5a8359b1-8306-41e9-8659-21ccd5e9cc51; tfpsi=8514b406-5a16-4d57-a062-8ed6d3448376; nlbi_2444926_2147483392=rHmPdyJDdzi3Z70MgG/1SgAAAAB+QVJwR8LNw2mAp/+EQEgi; __qca=P0-1932161473-1704352882016; _gid=GA1.2.1139298275.1704352891; _ga_C8VV4V6CZR=GS1.2.1704352892.1.0.1704352892.60.0.0; rxvt=1704354693948|1704352880381; dtPC=-37$352880378_811h-vMLBDQOIICMGISGLIKHQFNHMCLPKLKKTS-0e0; ASP.NET_SessionId=pmycaztge0ad1cp2eol02nob; __RequestVerificationToken=O88IieOyYzqgySVFy9GeVXPgV-qFKDib2PXaKH3-pftDOgKPjFGfy3UKlea43Cxi_u-_3R4VG7nGStzt9O5woG5fc44gjHj8a2SXGrIzaxtrINIkigOVgBB9Q9NiZ8N2ZPjwFejyfknB6rXIELTARg2; bfSL8wt6dBrqOezhvfkdarWvtSAaQRRZDvPWtxzeQpCpSLxRnFQ9Fzd5JAsEEjp=638399496971304664; dotrez=\u0021DBwPl7vzzcSKjkj4YfoIV0iGlt0zFrBPzPGbZQw1DJzUMDET3YjABvsEIVvII8N/huRKXUDSLpvcATo=; visid_incap_2444946=1VMmQtu+R6eFhIdhNW9+HH5clmUAAAAAQUIPAAAAAAD/o+fwkbq4oWSSekAPzaRz; nlbi_2444946=sV8MarMqkFreB5ijbmwDOgAAAADZW7IjF6G6cAFibvLftHlX; incap_ses_1045_2444946=HUmKXq9LLxKgdzPEGZeADoFclmUAAAAAVlPho6ykI+keaFO/jLfjDQ==; _ga=GA1.3.2007665498.1704352881; _gid=GA1.3.1139298275.1704352891; _ga=GA1.1.2007665498.1704352881; _ga_GFV545L5B3=GS1.1.1704352880.1.1.1704352898.42.0.0; _ga_C8VV4V6CZR=GS1.3.1704352892.1.1.1704352898.54.0.0; _yoid=aa73af9f-02e3-4242-b756-8c90d4ff7723; _yosid=de340c4c-4976-46f3-9c10-8ffc3e494dc8; startTime=MjAyNC0wMS0wNCAxNToyMTozOQ==; jumpseat_uid=sMZFh4j70N0H7DOnl-nn8i; nlbi_2444946_2147483392=ZILUcBzRwnmEWqsJbmwDOgAAAAAOY9N525ciPScpDjvLyji2; reese84=3:HhrFf7gm5Fr1LQD4RgJWkg==:P5V+FQyHvjEgb9UVFqE5893ekwo34n2HRtOhI7rsuxeQgBxIzteRnRJkL2miDndwoN/9PBZZpxS5qsSzSkfa1pHNSqfmYBgk/FGpGjEIIQpTr+JJ/bjimlF3Js7AcW/TcoYUxe+KTak3zgXVDKi5ia4VET1dW6mcNtAdUqMBTBDnWdGR/sXt9RJrPT2OOu7upNOhoYSeBOZRdrWbBKcQezUn2z0DAucALlJlsk9W/SIbW63r1HgFEmbWuBtmLYO9rAkwjEYCHlZ8tvjxsgux3HsROdGhnK6jNfQD5zitrIZWq7YN+xGd8P1uawBIWe38OrM0I+ah3mNDWd7fJ7hNlOZVpndJ9ohYraa1/wyK8IbvlAUrZK+p+NBSSHD8Faq/Ky3lCceJrOp8r7t0o//nJJTZALRQmAMHBGEjm4XmcDXhf0+qvMNR9CXjQlGm5d9kodmo6+7FRsRoYkL2Uq60NA==:OXMtX3GEVY6fDr7RIS1ss/MNQ7ZuP5eUnbVJ6rV1qQ0=; QSI_HistorySession=https%3A%2F%2Fwww.flyscoot.com%2Fen~1704352895546%7Chttps%3A%2F%2Fmakeabooking.flyscoot.com%2FBook%2FFlight%3Fculture%3Den-SG%26type%3Doneway%26dst1%3DSIN%26ast1%3DADL%26dst2%3DADL%26ast2%3DSIN%26dd%3D2023-12-15%26rd%3Dnull%26adt%3D1%26chd%3D0%26inf%3D0%23~1704352910290'
print(headers)
url = "https://makeabooking.flyscoot.com/Book/Flight?culture=en-SG&type=oneway&dst1=SIN&ast1=ADL&dst2=ADL&ast2=SIN&dd=2023-12-15&rd=null&adt=1&chd=0&inf=0#"
# url = "https://makeabooking.flyscoot.com/Book/Flight"
# params = {
# "culture": "en-SG",
# "type": "oneway",
# "dst1": "SIN",
# "ast1": "ADL",
# "dst2": "ADL",
# "ast2": "SIN",
# "dd": "2023-12-15",
# "rd": "null",
# "adt": "1",
# "chd": "0",
# "inf": "0"
# }
# response = session.get(url, headers=headers, params=params, cookies=cookies)
# print(response.url)
# print(response.text)
# print(response)
url = "https://makeabooking.flyscoot.com/manage"
prox = 'http://uni00001_custom_zone_US_sid_67336726_time_5:q39CEBTs5A@us.foxyip.com:7778'
prox = 'http://user-uni007-region-us:q39CEBTs5A5YQXor@pr.roxlabs.cn:4600'
prox = 'http://unfflcc:76cc14-47b8dd-1f8ace-827836-0c740e@usa.rotating.proxyrack.net:9000'
prox = 'http://127.0.0.1:8890'
# 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=headers, method="GET", proxy=prox, debug=True
, allow_redirects=True
))
response = response.json()
print(response)
print(response['status_code'])
print(response['text'])
print('https://makeabooking.flyscoot.com/'+re.findall('(/_Incapsula_Resource\?SWUDNSA.+?)"', response['text'])[0])
# import requests
#
# request_data = {
# "service_name": "lcc-tls-forward",
# "source_url": "http://39.106.6.97:88/svn/develop/lcc-catcher/lcc-tls-forward-1.0.1.jar",
# "cur_version": "1.0.1",
# "upgrade": "ON",
# "force_upgrade": "OFF",
# "upgrade_method": "serial",
# "environment": ["prod"]
# }
# request_url = "http://47.102.111.131:8083/api/v1/service/upgrade"
#
# res = requests.post(url=request_url, json=request_data)
# print(res.text)
import requests
headers = {
"authority": "makeabooking.flyscoot.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",
"cache-control": "no-cache",
"Host": "www.transavia.com",
"pragma": "no-cache",
"cache-control": "no-cache",
"sec-ch-ua": "\"Not_A Brand\";v=\"8\", \"Chromium\";v=\"120\", \"Google Chrome\";v=\"120\"",
"request-context": "appId=cid-v1:942f733a-0e08-45b5-a6e2-53089f65a4b2",
"traceparent": "00-6fd38f0e1c05475cbcccc9237103701d-aeeb8b0612ca4459-01",
"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/120.0.0.0 Safari/537.36",
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
"accept": "*/*",
"x-requested-with": "XMLHttpRequest",
"request-id": "|6fd38f0e1c05475cbcccc9237103701d.aeeb8b0612ca4459",
"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/120.0.0.0 Safari/537.36"
"origin": "https://www.transavia.com",
"sec-fetch-site": "same-origin",
"sec-fetch-mode": "cors",
"sec-fetch-dest": "empty",
"referer": "https://www.transavia.com/en-UK/book-a-flight/flights/search/",
"accept-language": "en,en-US;q=0.9,zh-CN;q=0.8,zh;q=0.7,ru;q=0.6"
}
cookies = {
"visid_incap_2445686": "huMlpQlyQJuemtwiyyN1VD3hBWcAAAAAQUIPAAAAAABfaCn8b3c92cqBkO4125eY",
"cookies_accepted": "true",
"tmConsentLocal": "1|preferences-true|statistics-true|marketing-true",
"_gcl_au": "1.1.1869918835.1728438589",
"nlbi_2445686": "aPZJKQHy2DmRKNe/UVmepAAAAAACmiSBjp8td25ZyCrKY71c",
"websiteuk#lang": "en",
"ASP.NET_SessionId": "d0bjok4tg4bh0raisxizjwvj",
"sitelang": "/en-UK/",
"SC_ANALYTICS_GLOBAL_COOKIE": "e0a52ec1c10048a3bc163754840e27b0|False",
"__RequestVerificationToken": "6UDOzTFWk9GR0nWaFJe_YWFvhxvuRLUQ914fKkk6pfqAc8IXIDJz46chV7_-aLWTedWAK6amHLFAZH0NCgZoH_JjUsKdDsq75T8DklXChQc1",
"optimizelyEndUserId": "oeu1728438590882r0.561515830738017",
"ai_user": "a1m2PdIyVltybx6JNMhsE+|2024-10-09T01:49:50.969Z",
"tmDeviceId": "57d36a76-caf8-4e35-8275-7c16e2dd28be",
"tmId": "55e88134-e382-401c-a245-8804016f77b3",
"tra_ga": "GA1.1.57d36a76-caf8-4e35-8275-7c16e2dd28be",
"tmConsent": "1|preferences-true|statistics-true|marketing-true",
"_fbp": "fb.1.1728438593664.1607416950",
"visid_incap_2897631": "+PyW9ZfrTRKhgjo+Ov9MIkDhBWcAAAAAQUIPAAAAAADCcz+0piEnkpEExpQmRkq9",
"nlbi_2897631": "PcQhTZ8Z7m4KAjwzJWK71gAAAADzxYallNzSis6WUvkhqXMo",
"sp": "e07525ac-64c4-4091-b090-49b959fbd7f3",
"incap_ses_1787_2445686": "UYONFPNAEAwft3ZQMrPMGGnxBWcAAAAAeSWRdrkVxWWu+rGs9cRNow==",
"incap_ses_1787_2897631": "GduVJH6FnhakT5lQMrPMGO32BWcAAAAA2Kn2pODBXIS9Ed3pvGL7fQ==",
"incap_ses_1204_2445686": "6r7RRpW/BiaYftiesXe1EEeBCGcAAAAA6C6rhYSjOllzhB16VRubTg==",
"SearchSite.SiteLang": "en-uk",
"reese84": "3:UwWwAA+FjAuSbj44jGi5mw==:oFs2KsxqeNPBb/xSDCjLCOgI+OtPapOeeqMqycricPLEUInftVW2DMBGWe+bY1OehPbpy49PUAmFSvoruCH6fp/yEnQImgVssGxdvJ3Y7sqTWJmKnl2jBXQsQ4G75Zd8yi3R72AVkmw1sS3yRXkt15SQoVPDc2y4IyZjjYoAjJT6b/YOuRqOOCzZGkGykCWQN+qRdiFL2ZdKxU8W5yNVPoB4YDsl1rhRGePkbpzkj52fAWrkipz5r9ledXvELRfsvKRIk81CTF36MGbdhjwW9pZjFAac+eZ3/OXcBBwaD9ub1jbCiXIf2Fz8UfH0Su+DnT/HwHRBXXpav/bJvlXKeaW7/fouKkGVW5wxklxvBRGxW62kQbi4w47gzaeqPAdeoQlRf9VxNjuu47Q5H7MZCcqZQCfk0UNtT7GPQ5+Xx7s+ej0SvgVvU0uJHlqsoMZSW24C/sW5Lx03LpQjGgRiW/HypeytZgkteTDWxHNJZ1ZMcluYLIh+eCRm50P9TUg0Ud+QzNW65OFGJkYAiC/bww==:ZRRVoD2H5SlSTufVpjn9GmyT1lerjdeizHXTNyOzciI=",
"incap_ses_1204_2897631": "rDOkH98o1GmwgtiesXe1EE+BCGcAAAAABqdiqMWuIQknWeAiJDvfoA==",
"df_vs": "1",
"df_ss": "1728610640693",
"spses.a620": "*",
"_clck": "yn5soy%7C2%7Cfpx%7C0%7C1743",
"TransaviaFlightSearch": "%7B%22flyingBlue%22%3Afalse%2C%22flightType%22%3A%22one-way%22%2C%22passengers%22%3A%7B%22isValid%22%3Atrue%2C%22adults%22%3A1%2C%22children%22%3A0%2C%22infants%22%3A0%7D%2C%22route%22%3A%7B%22validRoute%22%3Atrue%2C%22departure%22%3A%22EDI%22%2C%22arrival%22%3A%22ORY%22%2C%22isKlm%22%3Afalse%2C%22isDohop%22%3Afalse%7D%2C%22dates%22%3A%7B%22from%22%3A%222024-10-14%22%2C%22to%22%3Anull%7D%2C%22secondRoute%22%3A%7B%22validRoute%22%3Afalse%2C%22departure%22%3Anull%2C%22arrival%22%3Anull%7D%2C%22secondDates%22%3Anull%7D",
"nlbi_2445686_2147483392": "6cBdHVRar1EnkvunUVmepAAAAACg8hTaNpeoG25AWXq9gl8P",
"df_bpln": "2",
"_rdt_uuid": "1728438591330.76c6d1eb-7721-43b3-a8ea-05890f05f612",
"spid.a620": "b53a824e-a2ca-4512-acec-14c41236e9ad.1728438591.2.1728610659.1728438598.e83f758f-a359-4a7a-a648-b019ad3031ce.618636e7-7105-4469-be19-d11c36806d03.920f5f3b-867d-4aac-8777-999cc60a7b03.1728610641333.3",
"tra_ga_21Q6T8Z90B": "GS1.1.1728610642.3.1.1728610659.0.0.1941883218",
"_cdi2_id": "2f95bdb4-882a-4418-89aa-143ee02af0a4.1721902360.1728610660",
"_cdi2_id_s": "2f95bdb4-882a-4418-89aa-143ee02af0a4.1721902360.1728610660",
"_uetsid": "5c094d40877111ef8fa167e4f44905d3",
"_uetvid": "a86014104afc11efbee417e6e3f172c4",
"_clsk": "vhczss%7C1728610661886%7C2%7C0%7Cl.clarity.ms%2Fcollect",
"ai_session": "WRg1cr4iyRxQYpNuzvZgS3|1728610636775|1728610982114"
}
url = "https://www.transavia.com/en-UK/book-a-flight/flights/SingleDayAvailability/"
data = {
"selectSingleDayAvailability.JourneyType": "OutboundFlight",
"selectSingleDayAvailability.Date.DateToParse": "2024-10-13",
"selectSingleDayAvailability.AutoSelect": "false",
"__RequestVerificationToken": "dTErC46IeiaVgjxfci6zjLQ5mfbk0XZIFGbnqCTcpyxNEC7N0foribUWCGPwilj2O3mDZf7pF5ytS_es0vB5R0wk1pu_JzMe_rEmVvg6AxU1"
}
url = "https://makeabooking.flyscoot.com/manage"
print()
\ No newline at end of file
response = session.post(url, headers=headers, cookies=cookies, data=data)
print(response.text)
print(response)
\ 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