query_params.py 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. import json
  2. import time
  3. from urllib import parse
  4. import requests
  5. def query_event(account, passwd, target_url):
  6. """
  7. 模拟登录
  8. """
  9. # 定义请求地址
  10. login_url = "https://t.livepocket.jp/api/sessions/create?mytimestamp=" + str(int(time.time()))
  11. # 定义请求header
  12. headers = {'Content-Type': 'application/x-www-form-urlencoded;',
  13. 'Referer': 'https://t.livepocket.jp/login?acroot=header-new_p_u_nl',
  14. 'Sec-Ch-Ua': 'Chromium',
  15. 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36'
  16. }
  17. # 通过字典方式定义请求body
  18. form_data = {"login": account,
  19. "password": passwd,
  20. "auto_login": "on",
  21. "login_password": f"{account}&{passwd}"
  22. }
  23. data = parse.urlencode(form_data)
  24. session = requests.session()
  25. content = session.post(url=login_url, headers=headers, data=data, proxies=None).text
  26. cookie = session.cookies
  27. response_cookie = cookie.get_dict()
  28. # login_resp = json.loads(content)
  29. # token = login_resp['result']['token']
  30. # print('response cookie: ', response_cookie)
  31. print('response_cookie: ', response_cookie)
  32. # 跳转到抢券
  33. login_session = response_cookie['ci_session']
  34. event_id = 0
  35. php_session = response_cookie['PHPSESSID']
  36. response = requests.get(target_url)
  37. if response.status_code == 200:
  38. html_string = response.content.decode('utf8')
  39. start_index = html_string.find('https://t.livepocket.jp/purchase/verify?event_id=')
  40. if start_index != -1:
  41. end_index = html_string.find("'", start_index)
  42. if end_index != -1:
  43. event_id = html_string[start_index + len('https://t.livepocket.jp/purchase/verify?event_id='):end_index]
  44. print(f'event_id: {event_id}')
  45. else:
  46. print('End index not found.')
  47. else:
  48. print('Substring not found.')
  49. else:
  50. print('Failed to fetch the page. Status code:', response.status_code)
  51. return event_id, login_session, php_session
  52. def query_params_reserved_session_id(id, my_session, php_session_id, origin_url):
  53. reserved_url = f"https://t.livepocket.jp/purchase/security?id={id}&type=new"
  54. result = requests.Session()
  55. header = {
  56. 'Host': 't.livepocket.jp',
  57. 'DNT': '1',
  58. 'Upgrade-Insecure-Requests': '1',
  59. 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) '
  60. 'Chrome/124.0.0.0 Safari/537.36',
  61. 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,'
  62. 'application/signed-exchange;v=b3;q=0.7',
  63. 'Sec-Fetch-Site': 'same-origin',
  64. 'Sec-Fetch-Mode': 'navigate',
  65. 'Sec-Fetch-User': '?1',
  66. 'Referer': f'{origin_url}',
  67. 'Sec-Fetch-Dest': 'document',
  68. 'sec-ch-ua': '"Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"',
  69. 'sec-ch-ua-mobile': '?0',
  70. 'sec-ch-ua-platform': '"macOS"',
  71. 'Accept-Language': 'zh-CN,zh;q=0.9',
  72. 'Accept-Encoding': 'gzip, deflate, br, zstd',
  73. 'Cache-Control': 'max-age=0'
  74. }
  75. cookies = {
  76. 'ci_session': f'{my_session}',
  77. 'PHPSESSID': f'{php_session_id}',
  78. 'list_count': '{"success":true,"result":{"myticket_count":{"count":"1"},"today_event":{"total_count":1,"data_list":[{"id":"310461","name":"【5月5日(日・祝)】アイビー×ケンティー 着こなしと香りの完全攻略ガイド(先着受付)","artist":"アイビー, ケンティー","event_pic_url":"https://t.livepocket.jp/image/ogDi7QnoXzcjytaA6A08BX0Sezyx5XvndoMMJZiSH3LxVO6uyKHGY7KdKX6DbaAC","loc_name":"ジェイアール名古屋タカシマヤ 7階 ローズパティオ","date_info":{"startname":"開演日時","endname":"終演日時","starttime":"2024-05-05 10:15:00","endtime":"2024-05-05 18:30:00"},"order_status":""}]},"unread_count":10},"submit":true}'.encode('utf-8').decode('latin1'),
  79. 'display_init': '{"success":true,"result":{"purchased_tickets":{"total_count":0,"data_list":{"ticket_info":[]}},"lottery_tickets":{"total_count":0,"data_list":{"ticket_info":[]}},"order_limited_event_tickets":{"data_list":{"ticket_info":[]},"total_count":0},"event_order_limit":true},"submit":true}'.encode('utf-8').decode('latin1'),
  80. 'sns_status': '{"success":true,"result":{"facebook":0,"twitter":0,"mixi":0,"line":0,"yahoo":0,"plusid":1,"google":0},"submit":true}'.encode('utf-8').decode('latin1')
  81. }
  82. response = result.get(reserved_url, headers=header, cookies=cookies, allow_redirects=False)
  83. print('response.headers:', response.headers)
  84. redirect_url = response.headers['Location']
  85. print('redirect_url:', redirect_url)
  86. return redirect_url
  87. def query_params_o_token(net_url, my_session, origin_url):
  88. net_url = "https://t.livepocket.jp/purchase/confirm?id=314095&reserved_session_id=809279"
  89. result = requests.Session()
  90. header = {
  91. 'Host': 't.livepocket.jp',
  92. 'User-Agent': "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) "
  93. "Chrome/69.0.3947.100 Safari/537.36",
  94. # 'Referer': f'{origin_url}',
  95. }
  96. cookies = {
  97. 'ci_session': f'{my_session}'
  98. }
  99. response = result.get(net_url, headers=header, cookies=cookies, allow_redirects=False)
  100. print('response', response)
  101. location_url = response.headers['Location']
  102. region_string = location_url.split('?')[1]
  103. params = region_string.split('&')
  104. data = {
  105. 'id': params[0].split('=')[1],
  106. 'reserved_session_id': params[1].split('=')[1],
  107. 'otoken': params[2].split('=')[1]
  108. }
  109. return data
  110. if __name__ == '__main__':
  111. # url = 'https://t.livepocket.jp/e/55minholidays_1'
  112. #
  113. # event_id, x_session, php_session = query_event("n8vzi@huatcn.com", "panyue666", url)
  114. # x_url = query_params_reserved_session_id(event_id, x_session, php_session, url)
  115. # data = query_params_o_token(x_url, x_session, url)
  116. # print(data)
  117. my_session = {
  118. 'ci_session': 'w2uNUg2evDN3Y5p9FF6ov%2BeGbOd1bG2G6TcquqbP6s%2BS8sHGzdxFsQiX9MZfADOXtJoTezlRRTMnSHN6eKM4Jj2R9JfAqm4H5VDBp6uMnftQGB4tJLSqk6xAKRi3R9BeAwFh8KQF75VAY88apyvHXzSIr3Cbad5dS2kY4bvj3AiKORmlwm8XamH%2FRr5%2BGYVc20ci0TZ5%2FRft5%2FiU6Du3mBKVqh4wQmKezkwZd7VIWC5FaApglFF%2FNAeuBxgsCnrBEJABu734BJXqHECPiEWWhI5BYx1X2V%2BjIxUI%2Fv6%2FwLDsPPmdwq0tO3mAMHSyMfo402xjZN0iVX3ZwFby2%2Bp8VUSfJdz7DfgZO1FcC62H2n12yJUaatCcXeWn6RgykRzO04o%2BeasJVIwML215vCI6YmgvdRiwSCDlr7QB4%2F5Ae7ZByAE0qk9Ofx4yEHXfjNSlN5j1JN7iNN6NYMkc0raVsQ%3D%3D'
  119. }
  120. query_params_o_token(None, my_session, None)