jsl.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on 2024-09-29
  4. ---------
  5. @summary: 加速乐
  6. ---------
  7. @author: Dzr
  8. """
  9. import json
  10. import pathlib
  11. import re
  12. import execjs
  13. import requests
  14. _cookies = {}
  15. def check_script(text):
  16. ret = re.findall('cookie=(.*?);location', text)
  17. assert len(ret) > 0
  18. def ck1(url, headers, timeout=10, proxies=None):
  19. global _cookies
  20. response = requests.get(url, headers=headers, timeout=timeout, proxies=proxies)
  21. _cookies.update(response.cookies)
  22. text = response.content.decode()
  23. check_script(text)
  24. script = re.findall('cookie=(.*?);location', text)[0]
  25. _, val = next(iter(execjs.eval(script).split(';')), '').split('=')
  26. # print(val) # jsl_clearance_s
  27. _cookies['__jsl_clearance_s'] = val
  28. # _cookies[_] = val
  29. def get_params(url, headers, timeout, proxies=None):
  30. global _cookies
  31. # 通过携带 jsluid_s 和 jsl_clearance_s 值的 cookie 获取第二层响应内容
  32. request_params = dict(cookies=_cookies, timeout=timeout, proxies=proxies)
  33. response = requests.get(url=url, headers=headers, **request_params)
  34. # 获取 go 字典参数
  35. go_params = re.findall(';go\((.*?)\)</script>', response.content.decode())[0]
  36. params = json.loads(go_params)
  37. return params
  38. def ck2(url, headers, timeout=10, proxies=None):
  39. filelib = (pathlib.Path(__file__).parent.absolute() / 'jsl.js').absolute()
  40. script = filelib.open('r', encoding='utf-8').read()
  41. params = get_params(url, headers, timeout, proxies)
  42. # 传入字典
  43. third_cookie = execjs.compile(script).call('cookies', params)
  44. _cookies.update(third_cookie)
  45. def get_jsl_cookies(url, headers, **kwargs):
  46. global _cookies
  47. ck1(url, headers, **kwargs)
  48. ck2(url, headers, **kwargs)
  49. return _cookies
  50. get_cookies = get_jsl_cookies
  51. if __name__ == '__main__':
  52. jsl_headers = {
  53. 'Referer': 'https://zjcs.cqggzy.com/cq-zjcs-pub/invalidProject/view/500103MB0T460482408210380',
  54. 'Upgrade-Insecure-Requests': '1',
  55. 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36',
  56. }
  57. jsl_url = 'https://zjcs.cqggzy.com/cq-zjcs-pub/invalidProject/view/500103MB0T460482408210380'
  58. print(get_cookies(jsl_url, jsl_headers))