DP_ali.py 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on 2025-08-12
  4. ---------
  5. @summary: 阿里滑块验证 acw_sc__v3
  6. ---------
  7. @author: Lzz
  8. """
  9. import re
  10. import time
  11. import execjs
  12. from feapder.utils.log import log
  13. from feapder.utils.webdriver import DrissionPageDriver
  14. import random
  15. def get_acw_sc_v2(html):
  16. arg1 = "".join(re.findall("arg1='(.*?)'", html))
  17. if not arg1:
  18. return {}
  19. try:
  20. js_script = '''
  21. function getAcw_sc__v2(obt_arg1) {
  22. String["prototype"]["hexXor"] = function (_0x4e08d8) {
  23. var _0x5a5d3b = '';
  24. for (var _0xe89588 = 0x0; _0xe89588 < this["length"] && _0xe89588 < _0x4e08d8["length"]; _0xe89588 += 2) {
  25. var _0x401af1 = parseInt(this["slice"](_0xe89588, _0xe89588 + 2), 16);
  26. var _0x105f59 = parseInt(_0x4e08d8["slice"](_0xe89588, _0xe89588 + 2), 16);
  27. var _0x189e2c = (_0x401af1 ^ _0x105f59)["toString"](16);
  28. if (_0x189e2c["length"] == 1) {
  29. _0x189e2c = '0' + _0x189e2c;
  30. }
  31. _0x5a5d3b += _0x189e2c;
  32. }
  33. return _0x5a5d3b;
  34. };
  35. String["prototype"]["unsbox"] = function () {
  36. var _0x4b082b = [15, 35,29, 24, 33, 16, 1, 38, 10, 9, 19, 31, 40, 27, 22, 23, 25, 13, 6, 11, 39, 18, 20, 8, 14, 21, 32, 26, 2, 30, 7, 4, 17, 5, 3, 28, 34, 37, 12, 36];
  37. var _0x4da0dc = [];
  38. var _0x12605e = '';
  39. for (var _0x20a7bf = 0x0; _0x20a7bf < this["length"]; _0x20a7bf++) {
  40. var _0x385ee3 = this[_0x20a7bf];
  41. for (var _0x217721 = 0; _0x217721 < _0x4b082b["length"]; _0x217721++) {
  42. if (_0x4b082b[_0x217721] == _0x20a7bf + 1) {
  43. _0x4da0dc[_0x217721] = _0x385ee3;
  44. }
  45. }
  46. }
  47. _0x12605e = _0x4da0dc["join"]('');
  48. return _0x12605e;
  49. };
  50. var _0x5e8b26 = "3000176000856006061501533003690027800375";
  51. // var arg1 = "0A5F01F50F9BC66FB28038F18B99B7B10CFF4667"
  52. var arg1 = obt_arg1
  53. var _0x23a392 = arg1["unsbox"]();
  54. arg2 = _0x23a392["hexXor"](_0x5e8b26);
  55. return arg2
  56. }
  57. '''
  58. ctx = execjs.compile(js_script)
  59. arg2 = ctx.call('getAcw_sc__v2', arg1)
  60. return {"acw_sc__v2": arg2}
  61. except:
  62. return {}
  63. def create_cookie(page_url):
  64. with DrissionPageDriver(headless=True) as driver:
  65. try:
  66. cookies = {}
  67. driver.tab.get(page_url)
  68. time.sleep(5)
  69. arg2 = get_acw_sc_v2(driver.tab.html)
  70. if arg2:
  71. cookies.update(arg2)
  72. for i in range(6):
  73. try:
  74. slider = driver.tab.ele("x://div[contains(@id, 'aliyunCaptcha-sliding-slider')]")
  75. if slider:
  76. b1 = driver.tab.actions.move_to(slider, duration=0.5).hold()
  77. time.sleep(random.random())
  78. b2 = b1.move(50, random.uniform(-6, 6), duration=0.15)
  79. time.sleep(0.02)
  80. b3 = b2.move(100, random.uniform(-8, 8), duration=round(random.random() / 10, 2))
  81. time.sleep(0.03)
  82. b4 = b3.move(30, random.uniform(-10, 10), duration=round(random.random() / 10, 2))
  83. time.sleep(0.01)
  84. b5 = b4.move(70, random.uniform(-8, 8), duration=round(random.random() / 10, 2))
  85. time.sleep(0.03)
  86. b6 = b5.move(32, random.uniform(-6, 6), duration=0.2)
  87. time.sleep(0.2)
  88. b6.release()
  89. driver.tab.wait(2)
  90. if "验证失败,请刷新重试" in driver.tab.html:
  91. sec_ = driver.tab.ele('x://span[contains(@id, "aliyunCaptcha-sliding-refresh"))]')
  92. sec_.click()
  93. time.sleep(.6)
  94. else:
  95. break
  96. else:
  97. break
  98. except Exception as e:
  99. log.error(e)
  100. break
  101. time.sleep(2)
  102. cookies.update(driver.tab.cookies().as_dict())
  103. return cookies
  104. except Exception as e:
  105. log.error(f"获取cookie失败,{e}")
  106. driver.tab.clear_cache()
  107. # if __name__ == '__main__':
  108. # cookies = create_cookie(page_url="https://fixedhall.zcygov.cn/universal/announcement-list")
  109. # log.debug(cookies)