算法暴露接口(xhs、dy、ks、wx、hnw)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

161 lines
11 KiB

7 months ago
  1. import json
  2. import random
  3. from enum import Enum
  4. import requests
  5. def get_gpuInfo():
  6. """
  7. :return:
  8. """
  9. random_list = ["Intel(R) Iris(TM) Pro Graphics 5200", "Intel(R) Iris(TM) Graphics 5100",
  10. "Intel(R) Iris(TM) Graphics 5000", "Intel(R) Iris(TM) Graphics 4200",
  11. "Intel(R) Iris(TM) Graphics 4400", "Intel(R) Iris(TM) Graphics 4600",
  12. "Intel(R) Iris(TM) Pro Graphics 6200", "Intel(R) Iris(TM) Pro Graphics 6100",
  13. "Intel(R) Iris(TM) Graphics 6000", "Intel(R) Iris(TM) Graphics 5500",
  14. "Intel(R) Iris(TM) Graphics 5300", f"Intel(R) Iris(TM) Graphics {random.randint(100, 999)}"]
  15. random_list = [f"Intel(R) Iris(TM) Graphics {random.randint(100, 999)}"]
  16. gpuInfo = {"glRenderer":"WebKit WebGL","glVendor":"WebKit","unmaskRenderer":f"ANGLE (Intel, ANGLE Metal Renderer: {random.choice(random_list)} Unspecified Version)","unmaskVendor":"Google Inc. (Intel)"}
  17. return json.dumps(gpuInfo, separators=(',', ':'))
  18. class BaseHeaders(Enum):
  19. """
  20. """
  21. # 获取快手session(快手api接口) header
  22. HEADERS = {
  23. "Accept-Language": "zh-CN,zh;q=0.9",
  24. "Cache-Control": "no-cache",
  25. "Connection": "keep-alive",
  26. "Origin": "https://www.kuaishou.com",
  27. "Pragma": "no-cache",
  28. # "Referer": "https://www.kuaishou.com/profile/3xsdu49r65skedk",
  29. "Sec-Fetch-Dest": "empty",
  30. "Sec-Fetch-Mode": "cors",
  31. "Sec-Fetch-Site": "same-origin",
  32. "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36\",\"userAgent\":\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
  33. "accept": "*/*",
  34. "content-type": "application/json",
  35. "sec-ch-ua": "\"Chromium\";v=\"118\", \"Google Chrome\";v=\"118\", \"Not=A?Brand\";v=\"99\"",
  36. "sec-ch-ua-mobile": "?0",
  37. "sec-ch-ua-platform": "\"macOS\""
  38. }
  39. # 获取快手过验证码请求headers
  40. VERIFY_HEADERS = {
  41. "Accept": "application/json, text/plain, */*",
  42. "Accept-Language": "zh-CN,zh;q=0.9",
  43. "Cache-Control": "no-cache",
  44. "Connection": "keep-alive",
  45. "Content-Type": "application/x-www-form-urlencoded",
  46. "Origin": "https://captcha.zt.kuaishou.com",
  47. "Pragma": "no-cache",
  48. # "Referer": Referer,
  49. "Sec-Fetch-Dest": "empty",
  50. "Sec-Fetch-Mode": "cors",
  51. "Sec-Fetch-Site": "same-origin",
  52. "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
  53. "sec-ch-ua": "\"Chromium\";v=\"118\", \"Google Chrome\";v=\"118\", \"Not=A?Brand\";v=\"99\"",
  54. "sec-ch-ua-mobile": "?0",
  55. "sec-ch-ua-platform": "\"macOS\""
  56. }
  57. PIC_HEADERS = {
  58. "Accept": "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8",
  59. "Accept-Language": "zh-CN,zh;q=0.9",
  60. "Cache-Control": "no-cache",
  61. "Connection": "keep-alive",
  62. "Pragma": "no-cache",
  63. # "Referer": referer,
  64. "Sec-Fetch-Dest": "image",
  65. "Sec-Fetch-Mode": "no-cors",
  66. "Sec-Fetch-Site": "same-origin",
  67. "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
  68. "sec-ch-ua": "\"Chromium\";v=\"118\", \"Google Chrome\";v=\"118\", \"Not=A?Brand\";v=\"99\"",
  69. "sec-ch-ua-mobile": "?0",
  70. "sec-ch-ua-platform": "\"macOS\""
  71. }
  72. DOC_HEADERS = {
  73. "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",
  74. "Accept-Language": "zh-CN,zh;q=0.9",
  75. "Cache-Control": "no-cache",
  76. "Connection": "keep-alive",
  77. "Pragma": "no-cache",
  78. "Sec-Fetch-Dest": "document",
  79. "Sec-Fetch-Mode": "navigate",
  80. "Sec-Fetch-Site": "none",
  81. "Sec-Fetch-User": "?1",
  82. "Upgrade-Insecure-Requests": "1",
  83. "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
  84. "sec-ch-ua": "\"Chromium\";v=\"118\", \"Google Chrome\";v=\"118\", \"Not=A?Brand\";v=\"99\"",
  85. "sec-ch-ua-mobile": "?0",
  86. "sec-ch-ua-platform": "\"macOS\""
  87. }
  88. class BaseParam(Enum):
  89. VERIFY_PARAM = {
  90. "captchaSn": "",
  91. "bgDisWidth": 316, # 固定
  92. "bgDisHeight": 184, # 固定
  93. "cutDisWidth": 56, # 固定
  94. "cutDisHeight": 56, # 固定
  95. "relativeX": "", # 滑动距离 应该是缩放过了
  96. "relativeY": "", # config接口里的y 缩放 136 * 56/122 ()
  97. "trajectory": "",
  98. # "gpuInfo": "{\"glRenderer\":\"WebKit WebGL\",\"glVendor\":\"WebKit\",\"unmaskRenderer\":\"ANGLE (Apple, ANGLE Metal Renderer: Apple M1 Pro, Unspecified Version)\",\"unmaskVendor\":\"Google Inc. (Apple)\"}",
  99. # "captchaExtraParam": "{\"ua\":\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36\",\"userAgent\":\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36\",\"timeZone\":\"UTC+8\",\"language\":\"zh\",\"cpuCoreCnt\":\"8\",\"platform\":\"MacIntel\",\"riskBrowser\":\"false\",\"webDriver\":\"false\",\"exactRiskBrowser\":\"false\",\"webDriverDeep\":\"false\",\"exactRiskBrowser2\":\"false\",\"webDriverDeep2\":\"false\",\"battery\":\"1\",\"plugins\":\"1a68ba429dd293b14e41a28b6535aa590\",\"resolution\":\"1512x982\",\"pixelDepth\":\"30\",\"colorDepth\":\"30\",\"canvasGraphFingerPrint\":\"10681dead230ee9ca8e67e8ddb0a96013\",\"canvasGraph\":\"10681dead230ee9ca8e67e8ddb0a96013\",\"canvasTextFingerPrintEn\":\"11825830fcdd552d4d3e81af588208d71\",\"canvasTextEn\":\"11825830fcdd552d4d3e81af588208d71\",\"canvasTextFingerPrintZh\":\"19257bc614b1b886224a819517f0715e3\",\"canvasTextZh\":\"19257bc614b1b886224a819517f0715e3\",\"webglGraphFingerPrint\":\"19e85c5151728b98f00fc5a3c6c8bd2dd\",\"webglGraph\":\"19e85c5151728b98f00fc5a3c6c8bd2dd\",\"webglGPUFingerPrint\":\"1777f4110dd337e62088858e6e8df0288\",\"webglGpu\":\"1777f4110dd337e62088858e6e8df0288\",\"cssFontFingerPrintEn\":\"1329bb845104882a7754a3bdf007ff6fc\",\"fontListEn\":\"1329bb845104882a7754a3bdf007ff6fc\",\"cssFontFingerPrintZh\":\"11997d7fc5c7f90fad6abcbadabebb249\",\"fontListZh\":\"11997d7fc5c7f90fad6abcbadabebb249\",\"voiceFingerPrint\":\"14c6f007f1166921565a8aa1c5cfac1c6\",\"audioTriangle\":\"14c6f007f1166921565a8aa1c5cfac1c6\",\"nativeFunc\":\"1973dcbb27a04c3a2ee240d9d2549e105\",\"key1\":\"web_84547d0256a5ac1f023cf5cb911e70a8\",\"key2\":1698917540365,\"key3\":\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36\",\"key4\":\"20030107\",\"key5\":\"zh\",\"key6\":\"Gecko\",\"key7\":1512,\"key8\":982,\"key9\":1512,\"key10\":950,\"key11\":360,\"key12\":360,\"key13\":945,\"key14\":1512,\"key15\":\"00000111\",\"key16\":1,\"key17\":1,\"key18\":[],\"key19\":{},\"key20\":[],\"key21\":{},\"key22\":[],\"key23\":{},\"key24\":[],\"key25\":{},\"key26\":{\"key27\":[\"0,1,21255,58,359,prepare1\",\"1,1,21261,31,332,prepare1\",\"2,1,21268,22,324,prepare1\",\"3,1,21277,5,309,prepare1\",\"4,1,21284,1,306,prepare1\",\"5,1,21600,2,304,prepare1\",\"6,1,21608,6,305,prepare1\",\"7,1,21617,10,306,prepare1\",\"8,1,21627,14,307,prepare1\",\"9,1,21632,20,308,prepare1\",\"10,3,22111,39,307\",\"11,1,22226,39,307,prepare2\",\"12,1,22230,42,307,prepare2\",\"13,1,22239,47,307,prepare2\",\"14,1,22247,53,307,prepare2\",\"15,1,22255,62,307,prepare2\",\"16,1,22264,75,307,prepare2\",\"17,1,22272,88,307,prepare2\",\"18,1,22281,95,307,prepare2\",\"19,1,22289,99,307,prepare2\",\"20,1,22297,105,307,prepare2\",\"21,4,22356,116,307\",\"22,2,22455,116,307,prepare3\",\"23,1,22456,117,307,prepare3\"],\"key28\":[],\"key29\":[],\"key30\":[],\"key31\":{\"prepare1\":\"9,1,21632,20,308\",\"prepare2\":\"20,1,22297,105,307\",\"prepare3\":\"23,1,22456,117,307\"},\"key32\":{},\"key33\":{},\"key34\":{}},\"key35\":\"bf3957c9488bdb2a7a453824e9ee2d6a\",\"key36\":\"f22a94013fc94e90e2af2798023a1985\",\"key37\":2,\"key38\":\"not support\",\"key39\":8}"
  100. "gpuInfo": get_gpuInfo(),
  101. "captchaExtraParam": '{"ua":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36","timeZone":"UTC+8","language":"zh-CN","cpuCoreCnt":"2","platform":"MacIntel","riskBrowser":"false","webDriver":"false","exactRiskBrowser":"false","webDriverDeep":"false","exactRiskBrowser2":"false","webDriverDeep2":"false","battery":"1","plugins":"1a68ba429dd293b14e41a28b6535aa590","resolution":"1440x900","pixelDepth":"24","colorDepth":"24","canvasGraphFingerPrint":"170a0a884fada8bac5f9e42250271aaf4","canvasGraph":"170a0a884fada8bac5f9e42250271aaf4","canvasTextFingerPrintEn":"1996477fa0627ebb63c728fa32cacce79","canvasTextEn":"1996477fa0627ebb63c728fa32cacce79","canvasTextFingerPrintZh":"1528ffe56c43c1c514d0de433838f8134","canvasTextZh":"1528ffe56c43c1c514d0de433838f8134","webglGraphFingerPrint":"11a9644c09ae3fd0a918f6f6f712f43c6","webglGraph":"11a9644c09ae3fd0a918f6f6f712f43c6","webglGPUFingerPrint":"1bd896c110303ed46f715b5ac4cbf8329","webglGpu":"1bd896c110303ed46f715b5ac4cbf8329","cssFontFingerPrintEn":"1329bb845104882a7754a3bdf007ff6fc","fontListEn":"1329bb845104882a7754a3bdf007ff6fc","cssFontFingerPrintZh":"11997d7fc5c7f90fad6abcbadabebb249","fontListZh":"11997d7fc5c7f90fad6abcbadabebb249","voiceFingerPrint":"129d646e8a0c62f5c09bead9ff4a0f29d","audioTriangle":"129d646e8a0c62f5c09bead9ff4a0f29d","nativeFunc":"1973dcbb27a04c3a2ee240d9d2549e105"}'
  102. }
  103. class BaseURL(Enum):
  104. # nodejs服务
  105. NodeURL = "http://127.0.0.1:3000/kuaishou/get_verifyParam"
  106. def download_q(url, headers, cookies, data=None, is_proxy=False, timeout=10):
  107. """
  108. :param url:
  109. :param headers:
  110. :param cookies:
  111. :param data:
  112. :param is_proxy:
  113. :param timeout:
  114. :return:
  115. """
  116. proxy_list = [f"172.24.12.23:{random.randint(45001, 45250)}", f"172.18.128.225:{random.randint(45001, 45250)}",
  117. "16HFBVJC:897944@u270.40.tp.16yun.cn:6448"]
  118. # proxy = f"{random.choice(proxy_list)}:{random.randint(45001, 45250)}" # 修改代理
  119. proxy = random.choice(proxy_list)
  120. proxies = {'http': proxy, 'https': proxy} # 代理初始化
  121. if data:
  122. if is_proxy:
  123. response = requests.post(url, headers=headers, data=data, proxies=proxies, cookies=cookies, timeout=timeout)
  124. else:
  125. response = requests.post(url, headers=headers, data=data, cookies=cookies, timeout=timeout)
  126. else:
  127. if is_proxy:
  128. response = requests.get(url, headers=headers, proxies=proxies, cookies=cookies, timeout=timeout)
  129. else:
  130. response = requests.get(url, headers=headers, cookies=cookies, timeout=timeout)
  131. return response
  132. def download_pic(path, content):
  133. with open(path, "wb") as f:
  134. f.write(content)
  135. f.close()
  136. # logger.info(f"图片保存成功 》》》》{path}")
  137. return path