| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594 |
- const {
- describe,
- test,
- expect,
- } = require('@jest/globals')
- const { WebDriver } = require('../common/web_driver')
- const fs = require('fs')
- const path = require('node:path')
- const CryptoJS = require('crypto-js')
- const axios = require('axios')
- const timeout = 9999999
- async function sleep (ms) {
- return new Promise(resolve => setTimeout(resolve, ms))
- }
- describe('deepcoin站点测试', () => {
- let targetInfo = {
- 'targetId': '',
- 'type': '',
- 'title': '',
- 'url': '',
- 'attached': true,
- 'canAccessOpener': false,
- 'browserContextId': '',
- }
- const driver = new WebDriver({
- // port: 23035,
- })
- const init = async () => {
- // await driver.setProxy('socks://localhost:8880')
- await driver.setProxy('socks://127.0.0.1:7898')
- await driver.builder()
- let target = await driver.cdp.Target
- targetInfo = await target.getTargetInfo()
- console.info('info>>>>', targetInfo)
- }
- //【重要】#这个网站的 入口地址一定是这个,他会往请求的地址写入cookie 并且读取验证,所以domain会变,
- const baseUrl = 'https://www.deepcoin.com/zh/'
- const prefix = 'deepcoin'
- let cookiesPath = path.join(__dirname, 'tmp', prefix + '_cookies')
- let storagePath = path.join(__dirname, 'tmp', prefix + '_storage')
- test('测试打开', async (done) => {
- await init()
- const page = driver.cdp.Page
- page.navigate({ url: baseUrl })
- done()
- }, timeout)
- const login = async (Storage, Runtime) => {
- let cookie = '', localStorage = ''
- if (fs.existsSync(cookiesPath)) {
- cookie = fs.readFileSync(cookiesPath, 'utf8')
- }
- // 借助localStorage中的jwt信息登录
- if (fs.existsSync(storagePath)) {
- localStorage = fs.readFileSync(storagePath, 'utf8')
- }
- if (cookie) {
- await Storage.setCookies(JSON.parse(cookie))
- }
- if (localStorage) {
- let storage = {}
- try {
- storage = JSON.parse(`${localStorage}`) || {}
- } catch (e) {
- console.error(e)
- }
- for (const k in storage) {
- await Runtime.evaluate({
- expression: `localStorage.setItem(\`${k}\`, \`${storage[k]}\`)`,
- // awaitPromise: true,
- })
- }
- }
- }
- test('自动登录', async (done) => {
- await init()
- const {
- Storage,
- Page,
- Runtime,
- } = driver.cdp
- await Runtime.enable()
- try {
- Page.navigate({ url: baseUrl })
- await login(Storage, Runtime)
- let t = Date.now()
- let s = setInterval(async () => {
- let cookies = await Storage.getCookies()
- fs.writeFileSync(cookiesPath, JSON.stringify(cookies), 'utf8')
- let localStorage = await Runtime.evaluate({
- expression: 'JSON.stringify(localStorage)',
- })
- fs.writeFileSync(storagePath, localStorage?.result?.value, 'utf8')
- if (Date.now() - t > 5 * 60 * 1000) {
- clearInterval(s)
- }
- }, 1000)
- } catch (e) {
- console.error(e)
- }
- await sleep(timeout)
- done()
- }, timeout)
- test('监听wss', async (done) => {
- let cookie = `{"cookies":[{"name":"correction_token","value":"310E2571173CDED821B3A1AD35E9185Aweb_1732184528628_2205118","domain":"www.coinw.com","path":"/","expires":1763725752,"size":73,"httpOnly":false,"secure":false,"session":false,"sameSite":"Lax","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"correction_accessToken","value":"57e887d018f2839ae8f6aa9bcdbc913e548ee2f8d011c381862d6af44674d5e7","domain":"www.coinw.com","path":"/","expires":1763725752,"size":86,"httpOnly":false,"secure":false,"session":false,"sameSite":"Lax","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"accessToken","value":"57e887d018f2839ae8f6aa9bcdbc913e548ee2f8d011c381862d6af44674d5e7","domain":"www.coinw.com","path":"/","expires":1763725752,"size":75,"httpOnly":false,"secure":false,"session":false,"sameSite":"Lax","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"i18n_redirected","value":"zh_CN","domain":"www.coinw.com","path":"/","expires":1763726435,"size":20,"httpOnly":false,"secure":false,"session":false,"sameSite":"Lax","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"THEME","value":"LIGHT","domain":"www.coinw.com","path":"/","expires":-1,"size":10,"httpOnly":false,"secure":false,"session":true,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"i","value":"MYnbZm73hZFXKjvyuWX97J3MI7CSTu8G3SSCX5p2v1B715+g4AuaW6paCH2sx0jgBDyKw7fE8r9cqyg6/fLbN4Xq/Aw=","domain":".yandex.ru","path":"/","expires":1766314336.073629,"size":93,"httpOnly":true,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"yandexuid","value":"1082721261731754335","domain":".yandex.ru","path":"/","expires":1766314337.187696,"size":28,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"yashr","value":"9313470971731754335","domain":".yandex.ru","path":"/","expires":1763290336.073696,"size":24,"httpOnly":true,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"yabs-sid","value":"1189116901731754337","domain":"mc.yandex.ru","path":"/","expires":-1,"size":27,"httpOnly":false,"secure":true,"session":true,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"yuidss","value":"1082721261731754335","domain":".yandex.ru","path":"/","expires":1766314337.187779,"size":25,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"ymex","value":"2047114337.yrts.1731754337","domain":".yandex.ru","path":"/","expires":1763290337.187796,"size":30,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"receive-cookie-deprecation","value":"1","domain":".yandex.ru","path":"/","expires":1763365276.902871,"size":27,"httpOnly":true,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443,"partitionKey":{"topLevelSite":"https://bitget.com","hasCrossSiteAncestor":true}},{"name":"A3","value":"d=AQABBGR5OGcCECcnHnFFdVRGNZ0QidBKQzAFEgEBAQHKOWdCZ69B8HgB_eMAAA&S=AQAAArNukj6ZxkbkdIaws160s3o","domain":".yahoo.com","path":"/","expires":1763386880.032238,"size":96,"httpOnly":true,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"TapAd_TS","value":"1731754340127","domain":".tapad.com","path":"/","expires":1737013279.698306,"size":21,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"TapAd_DID","value":"80c41233-3cfb-4186-8962-ba1811cf5f58","domain":".tapad.com","path":"/","expires":1737013279.698375,"size":45,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"t_gid","value":"7407c311-7a51-438c-a550-abc4aaf1a4bb-tucte31fee4","domain":".taboola.com","path":"/","expires":1763365279.615811,"size":53,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"t_pt_gid","value":"7407c311-7a51-438c-a550-abc4aaf1a4bb-tucte31fee4","domain":".taboola.com","path":"/","expires":1763365279.615863,"size":56,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443,"partitionKey":{"topLevelSite":"https://bitget.com","hasCrossSiteAncestor":true}},{"name":"khaos","value":"M3K1TKXZ-1V-ALPN","domain":".rubiconproject.com","path":"/","expires":1763365279.086621,"size":21,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"khaos_p","value":"M3K1TKXZ-1V-ALPN","domain":".rubiconproject.com","path":"/","expires":1763365279.086649,"size":23,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443,"partitionKey":{"topLevelSite":"https://bitget.com","hasCrossSiteAncestor":true}},{"name":"receive-cookie-deprecation","value":"1","domain":".rubiconproject.com","path":"/","expires":1739605279.086703,"size":27,"httpOnly":true,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443,"partitionKey":{"topLevelSite":"https://bitget.com","hasCrossSiteAncestor":true}},{"name":"KRTBCOOKIE_10","value":"22808-NWMxZjZhNGQ5NWUxMGEyYTRlNDUxNTNjNDJjMmViNzg&KRTB&22883-NWMxZjZhNGQ5NWUxMGEyYTRlNDUxNTNjNDJjMmViNzg&KRTB&23504-NWMxZjZhNGQ5NWUxMGEyYTRlNDUxNTNjNDJjMmViNzg&KRTB&23615-NWMxZjZhNGQ5NWUxMGEyYTRlNDUxNTNjNDJjMmViNzg","domain":".pubmatic.com","path":"/","expires":1739605278.920147,"size":227,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"did","value":"fuqyP8VLZvC8paK5","domain":".pippio.com","path":"/","expires":1763290342.23782,"size":19,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"didts","value":"1731754342","domain":".pippio.com","path":"/","expires":1763290342.237877,"size":15,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"nnls","value":"","domain":".pippio.com","path":"/","expires":1736938342.237897,"size":4,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"pxrc","value":"CAA=","domain":".pippio.com","path":"/","expires":1736938342.237912,"size":8,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"CMID","value":"Zzh5ZIsFVgwAAHfXAakqjQAA","domain":".casalemedia.com","path":"/","expires":1763365278.44026,"size":28,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"CMPS","value":"4932","domain":".casalemedia.com","path":"/","expires":1739530340.008481,"size":8,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"CMPRO","value":"4932","domain":".casalemedia.com","path":"/","expires":1739605278.440373,"size":9,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"_ga","value":"GA1.1.1027142390.1731754330","domain":".bitget.com","path":"/","expires":1766389284.225349,"size":30,"httpOnly":false,"secure":false,"session":false,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"bitget_lang","value":"zh-CN","domain":"www.bitget.com","path":"/","expires":1763365280,"size":16,"httpOnly":false,"secure":false,"session":false,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"theme","value":"white","domain":"www.bitget.com","path":"/","expires":1763290333,"size":10,"httpOnly":false,"secure":false,"session":false,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"_ga_clientid","value":"1027142390.1731754330","domain":"www.bitget.com","path":"/","expires":-1,"size":33,"httpOnly":false,"secure":false,"session":true,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"_dx_kvani5r","value":"c161941072692b13cb747d61e70b7f1a16d930aa14318b52b30c8e822bf102c6fc250511","domain":"www.bitget.com","path":"/","expires":1766389188.343604,"size":83,"httpOnly":false,"secure":false,"session":false,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"_ym_uid","value":"1731754337128758006","domain":".bitget.com","path":"/","expires":1763290336,"size":26,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"_ym_d","value":"1731754337","domain":".bitget.com","path":"/","expires":1763290336,"size":15,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"__adroll_fpc","value":"aa9a3144222fd50022333b81656baf2f-1731754337129","domain":".bitget.com","path":"/","expires":1763386877,"size":58,"httpOnly":false,"secure":false,"session":false,"sameSite":"Lax","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"_cfuvid","value":"8Pnwv85lIuhfGbMBgD4CiRu22h1LcMS2xPweCtEOOFw-1731754338507-0.0.1.1-604800000","domain":".bitget.com","path":"/","expires":-1,"size":82,"httpOnly":true,"secure":true,"session":true,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"OptanonAlertBoxClosed","value":"Sat%20Nov%2016%202024%2021:05:05%20GMT+0800%20(%E4%B8%AD%E5%9B%BD%E6%A0%87%E5%87%86%E6%97%B6%E9%97%B4)","domain":"www.bitget.com","path":"/","expires":1763298305,"size":123,"httpOnly":false,"secure":false,"session":false,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"OptanonConsent","value":"isMarketing=1&isStatistic=1","domain":"www.bitget.com","path":"/","expires":1763298305,"size":41,"httpOnly":false,"secure":false,"session":false,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"tuuid","value":"65968270-018a-45e1-b2ba-8b928c0e7798","domain":".bidswitch.net","path":"/","expires":1763290339.682657,"size":41,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"c","value":"1731754339","domain":".bidswitch.net","path":"/","expires":1763290339.455306,"size":11,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"tuuid_lu","value":"1731754339","domain":".bidswitch.net","path":"/","expires":1763290339.682705,"size":18,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"TDID","value":"b415b044-15af-49ff-b3fd-6a031b39df68","domain":".adsrvr.org","path":"/","expires":1763365279.484294,"size":40,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"__adroll","value":"5c1f6a4d95e10a2a4e45153c42c2eb78-a_1731754337","domain":".d.adroll.com","path":"/","expires":1765957279.200233,"size":53,"httpOnly":true,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"receive-cookie-deprecation","value":"1","domain":".d.adroll.com","path":"/","expires":1765957279.200294,"size":27,"httpOnly":true,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443,"partitionKey":{"topLevelSite":"https://bitget.com","hasCrossSiteAncestor":true}},{"name":"receive-cookie-deprecation","value":"1","domain":".adroll.com","path":"/","expires":1765957279.200339,"size":27,"httpOnly":true,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443,"partitionKey":{"topLevelSite":"https://bitget.com","hasCrossSiteAncestor":true}},{"name":"__adroll_shared","value":"5c1f6a4d95e10a2a4e45153c42c2eb78-a_1731754337","domain":".adroll.com","path":"/","expires":1765957279.200362,"size":60,"httpOnly":true,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"ar_debug","value":"1","domain":"x.adroll.com","path":"/","expires":-1,"size":9,"httpOnly":true,"secure":true,"session":true,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"XANDR_PANID","value":"5c9IHgbUkzcItQUHc7u3UwWja6IZoCKqBKm3MoMjGq1kckhjojkTNObEglxZNtF6V5bdFtmihBTAblQOaxgqXzbzMc6kuCLe0NdYA5PNXoM.","domain":".adnxs.com","path":"/","expires":1739605280.080393,"size":119,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443,"partitionKey":{"topLevelSite":"https://bitget.com","hasCrossSiteAncestor":true}},{"name":"receive-cookie-deprecation","value":"1","domain":".adnxs.com","path":"/","expires":1766389280.080509,"size":27,"httpOnly":true,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443,"partitionKey":{"topLevelSite":"https://bitget.com","hasCrossSiteAncestor":true}},{"name":"uuid2","value":"4644616257718275807","domain":".adnxs.com","path":"/","expires":1739605280.080534,"size":24,"httpOnly":true,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"tluidp","value":"182728306274547648373","domain":".3lift.com","path":"/","expires":1739605280.202445,"size":27,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443,"partitionKey":{"topLevelSite":"https://bitget.com","hasCrossSiteAncestor":true}},{"name":"tluid","value":"182728306274547648373","domain":".3lift.com","path":"/","expires":1739605280.202537,"size":26,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"fingerprint-1731829185303-3545.7000000001863-0.7236135316236552","value":"true","domain":"www.bitget.com","path":"/","expires":-1,"size":67,"httpOnly":false,"secure":false,"session":true,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"terminalCode-1731829185304-3546.8000000000466-0.18525561286883852","value":"true","domain":"www.bitget.com","path":"/","expires":-1,"size":69,"httpOnly":false,"secure":false,"session":true,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"_ga_sessionid","value":"1731829184","domain":"www.bitget.com","path":"/","expires":-1,"size":23,"httpOnly":false,"secure":false,"session":true,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"dy_token","value":"67399dc5hiUvg4aoo4NWraanMpYDjUCvr9KiHWa1","domain":"www.bitget.com","path":"/","expires":1732433990,"size":48,"httpOnly":false,"secure":false,"session":false,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"IDSYNC","value":"1770~2lvj","domain":".analytics.yahoo.com","path":"/","expires":1763365280.032166,"size":15,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"stel_ssid","value":"031666165d33327d34_13128692807439905706","domain":"oauth.telegram.org","path":"/","expires":1763072315.19006,"size":48,"httpOnly":true,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"captcha_v4_user","value":"1c843149fb454144b41619715e45aee5","domain":"www.bitget.com","path":"/","expires":1763365217.676247,"size":47,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"bt_rtoken","value":"upex:session:id:5eb86cb5fb6aaf4270acdd3ef754eba58f0c69220ea60a6f485785a657ace4d0","domain":".bitget.com","path":"/","expires":-1,"size":89,"httpOnly":false,"secure":true,"session":true,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"bt_uid","value":"ACA75325DA2E88554EE21FFD71180F5D","domain":".bitget.com","path":"/","expires":-1,"size":38,"httpOnly":false,"secure":true,"session":true,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"bt_sessonid","value":"7681bb60-3a56-4027-9b19-29d6346e70b8","domain":"www.bitget.com","path":"/","expires":-1,"size":47,"httpOnly":true,"secure":true,"session":true,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"bt_newsessionid","value":"eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI3OThmNmE5NC04ZWQyLTRiYmItODdiNy1hNmExNDkxYzhlYWMzMjA0NjQzNTgiLCJ1aWQiOiJ3OXhvaFJFRU1iSGszOUpNZkNDT2NRPT0iLCJzdWIiOiJkb24qKipvbSIsImlwIjoiVGZ6YlllRnRHbys3WVhQS25rejlBb0UycHJNd3g5a21CZHl5RkVqKzVKST0iLCJkaWQiOiI0ZHVEMEI3K3oza0MzWEFmVzloT3J0MG5wTkhLS3VNZ04vUHg4bUJYeHhoMTJSSXNaUUtNNUhCa1M0eVRSaG5XIiwic3RzIjowLCJpYXQiOjE3MzE4MjkyNjgsImV4cCI6MTczMjI2MTI2OCwicHVzaGlkIjoiZGRrU0xHVUNqT1J3WkV1TWswWVoxZz09IiwiaXNzIjoidXBleCJ9.Eoma_kP6lz-bZC3WAbvnA0iogkLp1Tao-IoGSbvP4mQ","domain":"www.bitget.com","path":"/","expires":-1,"size":508,"httpOnly":true,"secure":true,"session":true,"sameSite":"Lax","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"BITGET_LOCAL_COOKIE","value":"{%22bitget_lang%22:%22zh-CN%22%2C%22bitget_unit%22:%22CNY%22%2C%22bitget_showasset%22:true%2C%22bitget_theme%22:%22white%22%2C%22bitget_layout%22:%22right%22%2C%22bitget_valuationunit%22:1%2C%22bitget_valuationunitandfiat%22:1%2C%22bitgt_login%22:false}","domain":"www.bitget.com","path":"/","expires":1763365282,"size":272,"httpOnly":false,"secure":false,"session":false,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"bh","value":"Ej8iR29vZ2xlIENocm9tZSI7dj0iMTMxIiwiQ2hyb21pdW0iO3Y9IjEzMSIsIk5vdF9BIEJyYW5kIjt2PSIyNCIaBSJ4ODYiIg8iMTMxLjAuNjc3OC42OSIqAj8wOgciTGludXgiQgciNi44LjAiSgQiNjQiUloiR29vZ2xlIENocm9tZSI7dj0iMTMxLjAuNjc3OC42OSIsIkNocm9taXVtIjt2PSIxMzEuMC42Nzc4LjY5IiwiTm90X0EgQnJhbmQiO3Y9IjI0LjAuMC4wIiI=","domain":".yandex.ru","path":"/","expires":1763365276.902998,"size":282,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"__ar_v4","value":"2WBEMJJKHFG5PLSUZ7B5OY%3A20241116%3A5%7CR3652JF77NH6ZC5OBZHWIH%3A20241116%3A5","domain":".www.bitget.com","path":"/","expires":1763365277,"size":84,"httpOnly":false,"secure":false,"session":false,"sameSite":"Lax","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"PugT","value":"1731762724","domain":".pubmatic.com","path":"/","expires":1734421278.920256,"size":14,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"pxrc","value":"COTy4bkGEgUI6AcQABIFCOhHEAASCAi66gEQ7sgEEggIwuoBELrJBBIHCLjrARCnBQ==","domain":".rlcdn.com","path":"/","expires":1737013279.85696,"size":72,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"audit_p","value":"1|KU3TUTGG3tk5xe39Mf6aM6EbHmL3ALMsBuG8IOzTGs0aGBMLXkl4hkBwdewdhHogrKjBDh6NdrgwHTRO1/p4iGlty70eE65yR164mUDQhphJnKuoXdYGNpSO9CBF/oObGiojn9sUFMEIMMUC6OwqjlfUnwg8qmwpwvlwdUAHMD7Fl2nkzsvwfCbyzRQDbtqQCwfRAfYnv8yyqVI1k5poNA==","domain":".rubiconproject.com","path":"/","expires":1763365279.086559,"size":225,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443,"partitionKey":{"topLevelSite":"https://bitget.com","hasCrossSiteAncestor":true}},{"name":"audit","value":"1|KU3TUTGG3tk5xe39Mf6aM6EbHmL3ALMsBuG8IOzTGs0aGBMLXkl4hkBwdewdhHogrKjBDh6NdrgwHTRO1/p4iGlty70eE65yR164mUDQhphJnKuoXdYGNpSO9CBF/oObGiojn9sUFMEIMMUC6OwqjlfUnwg8qmwpwvlwdUAHMD7Fl2nkzsvwfCbyzRQDbtqQCwfRAfYnv8yyqVI1k5poNA==","domain":".rubiconproject.com","path":"/","expires":1763365279.086677,"size":223,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"TDCPM","value":"CAESFAoFdGFwYWQSCwiS1uXIornDPRAFEhcKCGxpdmVyYW1wEgsIppusoai5wz0QBRgBIAEoAjILCPyRr86-ucM9EAU4AVoIbGl2ZXJhbXBgAg..","domain":".adsrvr.org","path":"/","expires":1763365279.484469,"size":117,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"TapAd_3WAY_SYNCS","value":"1!7735-2!7735","domain":".tapad.com","path":"/","expires":1737013279.698424,"size":29,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"rlas3","value":"+asAlsegDNqYMhMmYl+49Az7yNufyAWanBdlHRj6BdY=","domain":".rlcdn.com","path":"/","expires":1763365279.856791,"size":49,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"anj","value":"dTM7k!M4/rD>6NRF']wIg2E?cq2FwR!]tdAM\`u8]DvI[!O4]7Q=E?/X\`o!>T1e=Vvi-xc5\`+4KR\`8)Od1-)]\`\`+.O:3Cdaa2)Fp42GYiTC#!_)F37hq*bpRz*qF1\`*b\`g*-U'o[","domain":".adnxs.com","path":"/","expires":1739605280.080483,"size":138,"httpOnly":true,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"_ga_Z8Q93KHR0F","value":"GS1.1.1731829184.3.1.1731829281.49.0.0","domain":".bitget.com","path":"/","expires":1766389281.008201,"size":52,"httpOnly":false,"secure":false,"session":false,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"_ga_B8RNGYK5MS","value":"GS1.1.1731829284.1.1.1731829284.0.0.0","domain":".bitget.com","path":"/","expires":1766389284.229991,"size":51,"httpOnly":false,"secure":false,"session":false,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"ar_debug","value":"1","domain":".www.google-analytics.com","path":"/","expires":1739966444.793104,"size":9,"httpOnly":true,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"COINW_LANGUAGE","value":"zh_CN","domain":"www.coinw.com","path":"/","expires":-1,"size":19,"httpOnly":false,"secure":false,"session":true,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"_gcl_au","value":"1.1.413755305.1732189754","domain":".coinw.com","path":"/","expires":1739965754,"size":31,"httpOnly":false,"secure":false,"session":false,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"HMACCOUNT_BFESS","value":"88620D986C302A2C","domain":".hm.baidu.com","path":"/","expires":1766749754.61278,"size":31,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"Hm_lvt_525b7a4b6599566fc46ec53565d28557","value":"1732189755","domain":".coinw.com","path":"/","expires":1763726444,"size":49,"httpOnly":false,"secure":false,"session":false,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"HMACCOUNT","value":"88620D986C302A2C","domain":".coinw.com","path":"/","expires":-1,"size":25,"httpOnly":false,"secure":false,"session":true,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"selectType","value":"CNY","domain":"www.coinw.com","path":"/","expires":-1,"size":13,"httpOnly":false,"secure":false,"session":true,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"_gid","value":"GA1.2.1427289152.1732189755","domain":".coinw.com","path":"/","expires":1732276842,"size":31,"httpOnly":false,"secure":false,"session":false,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"SESSION","value":"fae4976d-c3cb-4898-82f8-44bc9873263c","domain":"www.coinw.com","path":"/","expires":-1,"size":43,"httpOnly":true,"secure":true,"session":true,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"token","value":"310E2571173CDED821B3A1AD35E9185Aweb_1732184528628_2205118","domain":"www.coinw.com","path":"/","expires":-1,"size":62,"httpOnly":false,"secure":false,"session":true,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"JSESSION","value":"4CEF8D2F89AFB90CCF5F36F3FF3D567D","domain":"www.coinw.com","path":"/","expires":-1,"size":40,"httpOnly":true,"secure":true,"session":true,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"CLID","value":"65b9dc144ffc4bb28f269e188e760058.20231210.20251121","domain":"www.clarity.ms","path":"/","expires":1763725755.368452,"size":54,"httpOnly":true,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"_clck","value":"1cvgqwo%7C2%7Cfr2%7C0%7C1786","domain":".coinw.com","path":"/","expires":1763725755,"size":33,"httpOnly":false,"secure":false,"session":false,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"_hjSession_3376431","value":"eyJpZCI6IjE0YmQzMjViLWQ4ZmQtNDQ1ZC1hYzIzLThjM2M5YjhlNTExYiIsImMiOjE3MzIxODk3NTYyMzAsInMiOjAsInIiOjAsInNiIjowLCJzciI6MCwic2UiOjAsImZzIjoxLCJzcCI6MH0=","domain":".coinw.com","path":"/","expires":1732191556,"size":166,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"MUID","value":"166EFB3BFDB56A481987EE05FCF06BF8","domain":".bing.com","path":"/","expires":1765885760.508774,"size":36,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"High","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"MR","value":"0","domain":".c.bing.com","path":"/","expires":1732794560.50884,"size":3,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"SRM_B","value":"166EFB3BFDB56A481987EE05FCF06BF8","domain":".c.bing.com","path":"/","expires":1765885760.508862,"size":37,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"SM","value":"C","domain":".c.clarity.ms","path":"/","expires":-1,"size":3,"httpOnly":false,"secure":true,"session":true,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"MUID","value":"166EFB3BFDB56A481987EE05FCF06BF8","domain":".clarity.ms","path":"/","expires":1765885761.89438,"size":36,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"High","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"MR","value":"0","domain":".c.clarity.ms","path":"/","expires":1732794561.894425,"size":3,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"__cf_bm","value":"cvKsGFgcJCbdnohzaF7JYqf4STevreKQq47BtRwUdl0-1732190432-1.0.1.1-0BN7av48B5_doq6HOkJT7i0Vdh0c601_RS7IFcdYOr5_e2hp_rFy6BvfJ8QDgybFD61l0xEujQ3j742OS2O.oA","domain":".coinw.com","path":"/","expires":1732192232.271815,"size":156,"httpOnly":true,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"deviceId","value":"9fd27bbac6284310908baac5159f69a0","domain":"www.coinw.com","path":"/","expires":1766750439.764839,"size":40,"httpOnly":false,"secure":false,"session":false,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"coinwsessionid","value":"fae4976d-c3cb-4898-82f8-44bc9873263c","domain":"www.coinw.com","path":"/","expires":-1,"size":50,"httpOnly":false,"secure":false,"session":true,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"_ga_CGPRXKB35T","value":"GS1.1.1732189754.1.1.1732190440.60.0.0","domain":".coinw.com","path":"/","expires":1766750440.481414,"size":52,"httpOnly":false,"secure":false,"session":false,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"JSESSIONID","value":"C4C687541A4CCADC7015D477144B04A5","domain":"www.coinw.com","path":"/","expires":-1,"size":42,"httpOnly":true,"secure":true,"session":true,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"_gat_UA-257710828-1","value":"1","domain":".coinw.com","path":"/","expires":1732190502,"size":20,"httpOnly":false,"secure":false,"session":false,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"_ga_BH36WRPKLN","value":"GS1.1.1732189755.1.1.1732190443.0.0.0","domain":".coinw.com","path":"/","expires":1766750443.146893,"size":51,"httpOnly":false,"secure":false,"session":false,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"_ga","value":"GA1.1.1575037858.1732189754","domain":".coinw.com","path":"/","expires":1766750444.349872,"size":30,"httpOnly":false,"secure":false,"session":false,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"Hm_lpvt_525b7a4b6599566fc46ec53565d28557","value":"1732190444","domain":".coinw.com","path":"/","expires":-1,"size":50,"httpOnly":false,"secure":false,"session":true,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"_ga_H9F6SYN3JW","value":"GS1.1.1732189756.1.1.1732190444.60.0.0","domain":".coinw.com","path":"/","expires":1766750444.339502,"size":52,"httpOnly":false,"secure":false,"session":false,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"IDE","value":"AHWqTUns-5NXb2iv2QrMAWmE4BdBrec2PKQ0-FEDWDeOSI0I5lsCM0-GD4uHo7HE","domain":".doubleclick.net","path":"/","expires":1766750445.983704,"size":67,"httpOnly":true,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"_hjSessionUser_3376431","value":"eyJpZCI6IjliZjViOTRmLWNlMGMtNTBlMC1hNGY1LTEzYjVkYTdiNDhkMCIsImNyZWF0ZWQiOjE3MzIxODk3NTYyMjksImV4aXN0aW5nIjp0cnVlfQ==","domain":".coinw.com","path":"/","expires":1763726446,"size":138,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443},{"name":"_clsk","value":"7qwymi%7C1732190448643%7C2%7C1%7Ct.clarity.ms%2Fcollect","domain":".coinw.com","path":"/","expires":1732276848,"size":60,"httpOnly":false,"secure":false,"session":false,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443}]}`
- await init()
- const {
- Storage,
- Page,
- Network,
- } = driver.cdp
- Network.enable()
- Page.navigate({ url: baseUrl })
- Storage.setCookies(JSON.parse(cookie))
- const decode = (data) => {
- let str = data
- while (/^\d/.test(str)) {
- str = str.substring(1)
- }
- try {
- return JSON.parse(str)
- } catch (e) {
- console.warn('非json格式,不用惊慌:', e)
- }
- return data
- }
- // 一个二进制数据流还原
- // opcode number WebSocket message opcode.
- // mask boolean WebSocket message mask.
- // payloadData string WebSocket message payload data. If the opcode is 1, this is a text message and payloadData is a UTF-8 string.
- // If the opcode isn't 1, then payloadData is a base64 encoded string representing binary data.
- const formatResponse = (params = {
- opcode: 1,
- mask: false,
- payloadData: '',
- }) => {
- try {
- if (!params.response?.opcode) {
- return params.response
- }
- if (params.response?.opcode === 1) {
- let data = params.response.payloadData
- return decode(data)
- }
- // const binaryData = Buffer.from(params.response.payloadData, 'base64')
- //数据 前缀
- // let type = ['open', 'close', 'ping', 'pong', 'message', 'upgrade', 'noop']
- // 例如 payloadData: '42["subscribe",{"channel":"spot/ticker:ALL","su...
- // 4开头 type[4] message
- console.info('结果解析:', params.response.payloadData)
- } catch (e) {
- console.error(e)
- }
- }
- Network.webSocketCreated(params => {
- console.log('WebSocket created:', params.url)
- })
- // 订阅 Network.webSocketFrameSent 和 Network.webSocketFrameReceived 事件,监听 WebSocket 帧的发送和接收:
- Network.webSocketFrameSent(params => {
- console.log('WebSocket frame sent:', params.response)
- // formatResponse(params)
- })
- Network.webSocketFrameReceived(params => {
- console.log('WebSocket frame received:', params.response)
- // formatResponse(params)
- })
- // 订阅 Network.webSocketClosed 事件,监听 WebSocket 连接的关闭:
- Network.webSocketClosed(params => {
- console.log('WebSocket closed:', params.closeCode, params.closeReason)
- // formatResponse(params)
- })
- // 订阅Network.webSocketWillSendHandshakeRequest事件,拦截WebSocket连接的握手请求:
- Network.webSocketWillSendHandshakeRequest(params => {
- console.log('WebSocket handshake request:', params.request)
- // formatResponse(params)
- })
- // 订阅Network.webSocketHandshakeResponseReceived事件,拦截WebSocket连接的握手响应:
- Network.webSocketHandshakeResponseReceived(params => {
- console.log('WebSocket handshake response:', params.response)
- let data = formatResponse(params)
- console.info('webSocketHandshakeResponseReceived解析结果:', data)
- })
- // 订阅Network.webSocketFrameSent和Network.webSocketFrameReceived事件,拦截WebSocket数据帧的发送和接收:
- Network.webSocketFrameSent(params => {
- console.log('WebSocket frame sent:', params.response)
- // formatResponse(params)
- })
- Network.webSocketFrameReceived(params => {
- // console.log('WebSocket frame received:', params.response)
- console.info('webSocketFrameReceived 回复', params.response)
- let data = formatResponse(params)
- console.info('webSocketFrameReceived解析结果:', data)
- })
- Network.webSocketFrameError(params => {
- console.log('WebSocket frame error:', params.response)
- let data = formatResponse(params)
- console.info('webSocketFrameError解析结果:', data)
- })
- await sleep(timeout)
- done()
- }, timeout)
- test('签名', (done) => {
- // TODO 写死的 i 是Appid s是 HmacSHA256 秘钥
- let info = {
- 'i': 547798,
- 's': '61dd6c49529a05569900e71f49a0cd87',
- }
- function randomStr (e) {
- e = e || 32
- var t = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'
- , n = ''
- for (let r = 0; r < e; r++) {
- n += t.charAt(Math.floor(48 * Math.random()))
- }
- return n
- }
- // 替换到params中
- let timestamp = +new Date,
- convertPOST = 1,
- randomstr = randomStr(6),
- appid = info.i
- let params = {
- 'ExchangeID': 'DeepCoin',
- 'InstrumentID': '1BTCUSD',
- 'MemberID': '9313134',
- 'ActionType': '1',
- 'AccountID': '9313134',
- 'IsCrossMargin': 1,
- 'TradeUnitID': '9313134',
- 'LongLeverage': 32,
- 'ShortLeverage': 32,
- 'UserID': '9313134',
- 'appid': 547798,
- 'randomstr': 'EQDcpG',
- 'timestamp': 1734795772348,
- 'convertPOST': convertPOST,
- }
- let CryptoJS = require('crypto-js')
- function toStr (e) {
- const t = []
- return Object.keys(e).forEach((n => {
- let r = e[n]
- Array.isArray(r) || '[object Object]' === Object.prototype.toString.call(r) || (void 0 !== r && '[object Null]' !== Object.prototype.toString.call(r) || (r = ''),
- 'object' == typeof r && (r = JSON.stringify(r)),
- t.push(n + '=' + r))
- }
- )), t.join('&')
- }
- let signData = {
- appid,
- convertPOST,
- randomstr,
- timestamp,
- ...params,
- }
- // 获取对象的所有键,将其转换为数组
- const keys = Object.keys(signData)
- keys.sort()
- const distData = {}
- keys.forEach(key => {
- distData[key] = signData[key]
- })
- let queryStr = toStr(distData)
- console.info('===>', queryStr)
- let sha256Str = CryptoJS.HmacSHA256(queryStr, info.s),
- sign = CryptoJS.MD5(sha256Str.toString())
- console.info('sha256Str==>', sha256Str.toString())
- console.info('-sign-->', sign.toString().toLocaleLowerCase())
- signData.sgin = sign
- axios.post('https://www.deepcoin.com/v2/public/swap/SendPositionLeverage', signData, {
- headers: {
- 'accept': 'application/json, text/plain, */*',
- 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
- 'appid': '547798',
- 'content-type': 'application/json',
- 'device': 'pc-c9cdc03711159d3e72025c1e428cd4d8',
- 'hmac': '7ca70f92ed75168a1089249efc074f02',
- 'lang': 'zh',
- 'otoken': 'TQHOtqhQqXYD2tTc/KG0KKIDoPnC861ktL8jc2bOJb3i8FF2Cz3mfwQACbSBPKk0fW1UJve4t1LjH1Uo4aHRDQ==',
- 'platform': 'pc',
- 'priority': 'u=1, i',
- 'requestid': 'f529a1eb30a2d433e6fd2db15fe6c971',
- 'sec-ch-ua': '"Microsoft Edge";v="131", "Chromium";v="131", "Not_A Brand";v="24"',
- 'sec-ch-ua-mobile': '?0',
- 'sec-ch-ua-platform': '"Linux"',
- 'sec-fetch-dest': 'empty',
- 'sec-fetch-mode': 'cors',
- 'sec-fetch-site': 'same-origin',
- 'timestamp': '1734795964022',
- 'token': 'TQHOtqhQqXYD2tTc/KG0KKIDoPnC861ktL8jc2bOJb3i8FF2Cz3mfwQACbSBPKk0fW1UJve4t1LjH1Uo4aHRDQ==',
- 'uid': '9313134',
- 'x-requested-with': 'XMLHttpRequest',
- 'cookie': 'sajssdk_2015_cross_new_user=1; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%229313134%22%2C%22first_id%22%3A%22193e8c24272581-04d378df0f85838-76574611-2073600-193e8c242731372%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E8%87%AA%E7%84%B6%E6%90%9C%E7%B4%A2%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC%22%2C%22%24latest_referrer%22%3A%22https%3A%2F%2Faccounts.google.com%2F%22%7D%2C%22identities%22%3A%22eyIkaWRlbnRpdHlfY29va2llX2lkIjoiMTkzZThjMjQyNzI1ODEtMDRkMzc4ZGYwZjg1ODM4LTc2NTc0NjExLTIwNzM2MDAtMTkzZThjMjQyNzMxMzcyIiwiJGlkZW50aXR5X2xvZ2luX2lkIjoiOTMxMzEzNCIsImlkZW50aXR5X2g1X2lkIjoicGMtYzljZGMwMzcxMTE1OWQzZTcyMDI1YzFlNDI4Y2Q0ZDgifQ%3D%3D%22%2C%22history_login_id%22%3A%7B%22name%22%3A%22%24identity_login_id%22%2C%22value%22%3A%229313134%22%7D%2C%22%24device_id%22%3A%22193e8c24272581-04d378df0f85838-76574611-2073600-193e8c242731372%22%7D',
- 'Referer': 'https://www.deepcoin.com/zh/futures/1BTCUSD',
- 'Referrer-Policy': 'strict-origin-when-cross-origin',
- },
- proxy: {
- protocol: 'socks',
- host: '127.0.0.1',
- // hostname: '127.0.0.1' // Takes precedence over 'host' if both are defined
- port: 3128,
- },
- }).then(resp => {
- console.info('11>>>', resp.data)
- done()
- }).catch(reason => {
- console.error(reason)
- done()
- })
- done()
- },
- )
- test('wss', async () => {
- const WebSocket = require('ws')
- const hpa = require('https-proxy-agent')
- const proxy = 'socks5://127.0.0.1:7899' // 替换为你的 SOCKS 代理地址
- const agent = new hpa.HttpsProxyAgent(proxy)
- const headers = {
- 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,ja;q=0.7,zh-TW;q=0.6',
- 'cache-control': 'no-cache',
- 'pragma': 'no-cache',
- 'sec-websocket-extensions': 'permessage-deflate; client_max_window_bits',
- 'sec-websocket-key': 's85PYXnHSbN6OJKSBa4qjg==',
- 'sec-websocket-version': '13',
- }
- const ws = new WebSocket('wss://net-wss.deepcoin.com/public/spotws', {
- agent: agent,
- headers: headers,
- })
- ws
- .on('open', function open () {
- console.log('已连接到 Deepcoin WebSocket 服务器')
- // 发送订阅消息(示例:订阅 BTC/USDT 市场数据)
- const subscribeMessage = {
- method: 'subscribe',
- params: ['spot/ticker:BTC-USDT'], // 订阅的具体频道
- id: 1,
- }
- ws.send(JSON.stringify(subscribeMessage))
- })
- ws
- .on('message', function incoming (data) {
- console.log('接收到消息:', data.toString())
- // 在这里处理接收到的数据
- try {
- const message = JSON.parse(data)
- if (message.result && message.result.channel === 'spot/ticker:BTC-USDT') {
- //对 BTC-USDT 的市场数据进行处理
- console.log('BTC-USDT 数据:', message.result.data)
- }
- console.info('=message==>', message)
- } catch (error) {
- console.error('解析 JSON 数据时出错:', error)
- }
- })
- ws
- .on('close', function close () {
- console.log('与 Deepcoin WebSocket 服务器断开连接')
- })
- ws
- .on('error', function error (err) {
- console.error('WebSocket 错误:', err)
- })
- // 如果需要,可以添加一个定时器来发送心跳包,以保持连接活跃
- setInterval(() => {
- if (ws.readyState === WebSocket.OPEN) {
- ws.send(JSON.stringify({ method: 'ping' }))
- }
- }
- ,
- 30000,
- ) // 每 30 秒发送一次心跳包
- await sleep(timeout)
- })
- test('wss2', async (done) => {
- await init()
- const {
- Storage,
- Page,
- Network,
- } = driver.cdp
- Network.enable()
- Page.navigate({ url: 'https://www.deepcoin.com/zh/Spot?currentId=BTC%2FUSDT' })
- const decode = (data) => {
- let str = data
- while (/^\d/.test(str)) {
- str = str.substring(1)
- }
- try {
- return JSON.parse(str)
- } catch (e) {
- console.warn('非json格式,不用惊慌:', e)
- }
- return data
- }
- // 一个二进制数据流还原
- // opcode number WebSocket message opcode.
- // mask boolean WebSocket message mask.
- // payloadData string WebSocket message payload data. If the opcode is 1, this is a text message and payloadData is a UTF-8 string.
- // If the opcode isn't 1, then payloadData is a base64 encoded string representing binary data.
- const formatResponse = (params = {
- opcode: 1,
- mask: false,
- payloadData: '',
- }) => {
- try {
- if (!params.response?.opcode) {
- return params.response
- }
- if (params.response?.opcode === 1) {
- let data = params.response.payloadData
- return decode(data)
- }
- // const binaryData = Buffer.from(params.response.payloadData, 'base64')
- //数据 前缀
- // let type = ['open', 'close', 'ping', 'pong', 'message', 'upgrade', 'noop']
- // 例如 payloadData: '42["subscribe",{"channel":"spot/ticker:ALL","su...
- // 4开头 type[4] message
- console.info('结果解析:', params.response.payloadData)
- } catch (e) {
- console.error(e)
- }
- }
- Network.webSocketCreated(params => {
- console.log('WebSocket created:', params.url)
- })
- // 订阅 Network.webSocketFrameSent 和 Network.webSocketFrameReceived 事件,监听 WebSocket 帧的发送和接收:
- Network.webSocketFrameSent(params => {
- console.log('WebSocket frame sent:', params.response)
- // formatResponse(params)
- })
- Network.webSocketFrameReceived(params => {
- console.log('WebSocket frame received:', params.response)
- // formatResponse(params)
- })
- // 订阅 Network.webSocketClosed 事件,监听 WebSocket 连接的关闭:
- Network.webSocketClosed(params => {
- console.log('WebSocket closed:', params.closeCode, params.closeReason)
- // formatResponse(params)
- })
- // 订阅Network.webSocketWillSendHandshakeRequest事件,拦截WebSocket连接的握手请求:
- Network.webSocketWillSendHandshakeRequest(params => {
- console.log('WebSocket handshake request:', params.request)
- // formatResponse(params)
- })
- // 订阅Network.webSocketHandshakeResponseReceived事件,拦截WebSocket连接的握手响应:
- Network.webSocketHandshakeResponseReceived(params => {
- console.log('WebSocket handshake response:', params.response)
- let data = formatResponse(params)
- console.info('webSocketHandshakeResponseReceived解析结果:', data)
- })
- // 订阅Network.webSocketFrameSent和Network.webSocketFrameReceived事件,拦截WebSocket数据帧的发送和接收:
- Network.webSocketFrameSent(params => {
- console.log('WebSocket frame sent:', params.response)
- // formatResponse(params)
- })
- Network.webSocketFrameReceived(params => {
- // console.log('WebSocket frame received:', params.response)
- console.info('webSocketFrameReceived 回复', params.response)
- let data = formatResponse(params)
- console.info('webSocketFrameReceived解析结果:', data)
- })
- Network.webSocketFrameError(params => {
- console.log('WebSocket frame error:', params.response)
- let data = formatResponse(params)
- console.info('webSocketFrameError解析结果:', data)
- })
- await sleep(timeout)
- done()
- }, timeout)
- })
|