deepcoin.test.js 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353
  1. const {
  2. describe,
  3. test,
  4. expect,
  5. } = require('@jest/globals')
  6. const { WebDriver } = require('../common/web_driver')
  7. const fs = require('fs')
  8. const path = require('node:path')
  9. const CryptoJS = require('crypto-js')
  10. const timeout = 9999999
  11. async function sleep (ms) {
  12. return new Promise(resolve => setTimeout(resolve, ms))
  13. }
  14. describe('deepcoin站点测试', () => {
  15. let targetInfo = {
  16. 'targetId': '',
  17. 'type': '',
  18. 'title': '',
  19. 'url': '',
  20. 'attached': true,
  21. 'canAccessOpener': false,
  22. 'browserContextId': '',
  23. }
  24. const driver = new WebDriver({
  25. // port: 23035,
  26. })
  27. const init = async () => {
  28. // await driver.setProxy('socks://localhost:8880')
  29. await driver.setProxy('socks://127.0.0.1:3128')
  30. await driver.builder()
  31. let target = await driver.cdp.Target
  32. targetInfo = await target.getTargetInfo()
  33. console.info('info>>>>', targetInfo)
  34. }
  35. //【重要】#这个网站的 入口地址一定是这个,他会往请求的地址写入cookie 并且读取验证,所以domain会变,
  36. const baseUrl = 'https://www.deepcoin.com/zh/'
  37. const prefix = 'deepcoin'
  38. let cookiesPath = path.join(__dirname, 'tmp', prefix + '_cookies')
  39. let storagePath = path.join(__dirname, 'tmp', prefix + '_storage')
  40. test('测试打开', async (done) => {
  41. await init()
  42. const page = driver.cdp.Page
  43. page.navigate({ url: baseUrl })
  44. done()
  45. }, timeout)
  46. const login = async (Storage, Runtime) => {
  47. let cookie = '', localStorage = ''
  48. if (fs.existsSync(cookiesPath)) {
  49. cookie = fs.readFileSync(cookiesPath, 'utf8')
  50. }
  51. // 借助localStorage中的jwt信息登录
  52. if (fs.existsSync(storagePath)) {
  53. localStorage = fs.readFileSync(storagePath, 'utf8')
  54. }
  55. if (cookie) {
  56. await Storage.setCookies(JSON.parse(cookie))
  57. }
  58. if (localStorage) {
  59. let storage = {}
  60. try {
  61. storage = JSON.parse(`${localStorage}`) || {}
  62. } catch (e) {
  63. console.error(e)
  64. }
  65. for (const k in storage) {
  66. await Runtime.evaluate({
  67. expression: `localStorage.setItem(\`${k}\`, \`${storage[k]}\`)`,
  68. // awaitPromise: true,
  69. })
  70. }
  71. }
  72. }
  73. test('自动登录', async (done) => {
  74. await init()
  75. const {
  76. Storage,
  77. Page,
  78. Runtime,
  79. } = driver.cdp
  80. await Runtime.enable()
  81. try {
  82. Page.navigate({ url: baseUrl })
  83. await login(Storage, Runtime)
  84. let t = Date.now()
  85. let s = setInterval(async () => {
  86. let cookies = await Storage.getCookies()
  87. fs.writeFileSync(cookiesPath, JSON.stringify(cookies), 'utf8')
  88. let localStorage = await Runtime.evaluate({
  89. expression: 'JSON.stringify(localStorage)',
  90. })
  91. fs.writeFileSync(storagePath, localStorage?.result?.value, 'utf8')
  92. if (Date.now() - t > 5 * 60 * 1000) {
  93. clearInterval(s)
  94. }
  95. }, 1000)
  96. } catch (e) {
  97. console.error(e)
  98. }
  99. await sleep(timeout)
  100. done()
  101. }, timeout)
  102. test('监听wss', async (done) => {
  103. 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}]}`
  104. await init()
  105. const {
  106. Storage,
  107. Page,
  108. Network,
  109. } = driver.cdp
  110. Network.enable()
  111. Page.navigate({ url: baseUrl })
  112. Storage.setCookies(JSON.parse(cookie))
  113. const decode = (data) => {
  114. let str = data
  115. while (/^\d/.test(str)) {
  116. str = str.substring(1)
  117. }
  118. try {
  119. return JSON.parse(str)
  120. } catch (e) {
  121. console.warn('非json格式,不用惊慌:', e)
  122. }
  123. return data
  124. }
  125. // 一个二进制数据流还原
  126. // opcode number WebSocket message opcode.
  127. // mask boolean WebSocket message mask.
  128. // payloadData string WebSocket message payload data. If the opcode is 1, this is a text message and payloadData is a UTF-8 string.
  129. // If the opcode isn't 1, then payloadData is a base64 encoded string representing binary data.
  130. const formatResponse = (params = {
  131. opcode: 1,
  132. mask: false,
  133. payloadData: '',
  134. }) => {
  135. try {
  136. if (!params.response?.opcode) {
  137. return params.response
  138. }
  139. if (params.response?.opcode === 1) {
  140. let data = params.response.payloadData
  141. return decode(data)
  142. }
  143. // const binaryData = Buffer.from(params.response.payloadData, 'base64')
  144. //数据 前缀
  145. // let type = ['open', 'close', 'ping', 'pong', 'message', 'upgrade', 'noop']
  146. // 例如 payloadData: '42["subscribe",{"channel":"spot/ticker:ALL","su...
  147. // 4开头 type[4] message
  148. console.info('结果解析:', params.response.payloadData)
  149. } catch (e) {
  150. console.error(e)
  151. }
  152. }
  153. Network.webSocketCreated(params => {
  154. console.log('WebSocket created:', params.url)
  155. })
  156. // 订阅 Network.webSocketFrameSent 和 Network.webSocketFrameReceived 事件,监听 WebSocket 帧的发送和接收:
  157. Network.webSocketFrameSent(params => {
  158. console.log('WebSocket frame sent:', params.response)
  159. // formatResponse(params)
  160. })
  161. Network.webSocketFrameReceived(params => {
  162. console.log('WebSocket frame received:', params.response)
  163. // formatResponse(params)
  164. })
  165. // 订阅 Network.webSocketClosed 事件,监听 WebSocket 连接的关闭:
  166. Network.webSocketClosed(params => {
  167. console.log('WebSocket closed:', params.closeCode, params.closeReason)
  168. // formatResponse(params)
  169. })
  170. // 订阅Network.webSocketWillSendHandshakeRequest事件,拦截WebSocket连接的握手请求:
  171. Network.webSocketWillSendHandshakeRequest(params => {
  172. console.log('WebSocket handshake request:', params.request)
  173. // formatResponse(params)
  174. })
  175. // 订阅Network.webSocketHandshakeResponseReceived事件,拦截WebSocket连接的握手响应:
  176. Network.webSocketHandshakeResponseReceived(params => {
  177. console.log('WebSocket handshake response:', params.response)
  178. let data = formatResponse(params)
  179. console.info('webSocketHandshakeResponseReceived解析结果:', data)
  180. })
  181. // 订阅Network.webSocketFrameSent和Network.webSocketFrameReceived事件,拦截WebSocket数据帧的发送和接收:
  182. Network.webSocketFrameSent(params => {
  183. console.log('WebSocket frame sent:', params.response)
  184. // formatResponse(params)
  185. })
  186. Network.webSocketFrameReceived(params => {
  187. // console.log('WebSocket frame received:', params.response)
  188. console.info('webSocketFrameReceived 回复', params.response)
  189. let data = formatResponse(params)
  190. console.info('webSocketFrameReceived解析结果:', data)
  191. })
  192. Network.webSocketFrameError(params => {
  193. console.log('WebSocket frame error:', params.response)
  194. let data = formatResponse(params)
  195. console.info('webSocketFrameError解析结果:', data)
  196. })
  197. await sleep(timeout)
  198. done()
  199. }, timeout)
  200. test('签名', (done) => {
  201. // TODO 写死的 i 是Appid s是 HmacSHA256 秘钥
  202. let info = {
  203. 'i': 547798,
  204. 's': '61dd6c49529a05569900e71f49a0cd87',
  205. }
  206. function randomStr (e) {
  207. e = e || 32
  208. var t = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'
  209. , n = ''
  210. for (let r = 0; r < e; r++) {
  211. n += t.charAt(Math.floor(48 * Math.random()))
  212. }
  213. return n
  214. }
  215. // 替换到params中
  216. let timestamp = +new Date,
  217. convertPOST = 1,
  218. randomstr = randomStr(6),
  219. appid = info.i
  220. let params = {
  221. 'ExchangeID': 'DeepCoin',
  222. 'InstrumentID': '1BTCUSD',
  223. 'MemberID': '9313134',
  224. 'ActionType': '1',
  225. 'AccountID': '9313134',
  226. 'IsCrossMargin': 1,
  227. 'TradeUnitID': '9313134',
  228. 'LongLeverage': 32,
  229. 'ShortLeverage': 32,
  230. 'UserID': '9313134',
  231. 'appid': 547798,
  232. 'randomstr': 'yw4d6k',
  233. 'timestamp': 1734787294762,
  234. 'convertPOST': convertPOST,
  235. }
  236. let CryptoJS = require('crypto-js')
  237. function toStr (e) {
  238. const t = []
  239. return Object.keys(e).forEach((n => {
  240. let r = e[n]
  241. Array.isArray(r) || '[object Object]' === Object.prototype.toString.call(r) || (void 0 !== r && '[object Null]' !== Object.prototype.toString.call(r) || (r = ''),
  242. 'object' == typeof r && (r = JSON.stringify(r)),
  243. t.push(n + '=' + r))
  244. }
  245. )), t.join('&')
  246. }
  247. let signData = {
  248. appid,
  249. convertPOST,
  250. randomstr,
  251. timestamp,
  252. ...params,
  253. }
  254. // 获取对象的所有键,将其转换为数组
  255. const keys = Object.keys(signData)
  256. keys.sort()
  257. const distData = {}
  258. keys.forEach(key => {
  259. distData[key] = signData[key]
  260. })
  261. let queryStr = toStr(distData)
  262. console.info('===>', queryStr)
  263. let sha256Str = CryptoJS.HmacSHA256(queryStr, info.s),
  264. sign = CryptoJS.MD5(sha256Str.toString())
  265. console.info('sha256Str==>', sha256Str.toString())
  266. console.info('-sign-->', sign.toString().toLocaleLowerCase())
  267. done()
  268. },
  269. )
  270. })