Explorar o código

instagram spider

xubo hai 1 ano
pai
achega
9405681cac
Modificáronse 3 ficheiros con 73 adicións e 8 borrados
  1. 1 1
      .idea/misc.xml
  2. 27 0
      instagram/spider_poc.py
  3. 45 7
      livepocket/operator_poc.py

+ 1 - 1
.idea/misc.xml

@@ -3,5 +3,5 @@
   <component name="Black">
     <option name="sdkName" value="Python 3.12" />
   </component>
-  <component name="ProjectRootManager" version="2" project-jdk-name="awesome-python" project-jdk-type="Python SDK" />
+  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.11" project-jdk-type="Python SDK" />
 </project>

+ 27 - 0
instagram/spider_poc.py

@@ -0,0 +1,27 @@
+import os
+import sys
+import time
+
+import uiautomator2 as u2
+
+
+def spider_poc(serial):
+    d = u2.connect(serial)
+    d.uiautomator.start()
+    d.screen_on()
+    d.unlock()
+    d.debug = False
+
+    d.app_stop("com.instagram.android")
+    d.app_start("com.instagram.android", use_monkey=True)
+
+    time.sleep(3)
+
+    root_dir = os.path.dirname(sys.argv[0])
+    screenshot_dir = os.path.join(root_dir, "screenshots")
+    d.screenshot().save(screenshot_dir)
+
+
+if __name__ == '__main__':
+    spider_poc("5D7HSG5XXCKVBI85")
+

+ 45 - 7
livepocket/operator_poc.py

@@ -9,7 +9,7 @@ import requests
 from lxml import html
 
 
-def operator_poc():
+def operator_poc(account, passwd):
     """
     模拟登录
     """
@@ -24,10 +24,10 @@ def operator_poc():
                }
 
     # 通过字典方式定义请求body
-    form_data = {"login": 'n7094@huatcn.com',
-                 "password": 'panyue666',
+    form_data = {"login": account,
+                 "password": passwd,
                  "auto_login": "on",
-                 "login_password": "n7094@huatcn.com&panyue666"
+                 "login_password": f"{account}&{passwd}"
                  }
 
     data = parse.urlencode(form_data)
@@ -46,11 +46,16 @@ def operator_poc():
         'https': 'https://' + proxy,
     }
 
-    content = requests.post(url=login_url, headers=headers, data=data).text
+    session = requests.session()
+    content = session.post(url=login_url, headers=headers, data=data).text
+    cookie = session.cookies
+    response_cookie = cookie.get_dict()
     login_resp = json.loads(content)
-    print(f"token: {login_resp['result']['token']}")
+    print(f"token: {login_resp['result']['token']}, response_cookie:{response_cookie}")
     # print(login_resp)
+    token = login_resp['result']['token']
 
+    event_id = 0
     # 跳转到抢券
     target_url = 'https://t.livepocket.jp/e/4gbm0'
     response = requests.get(target_url)
@@ -70,7 +75,40 @@ def operator_poc():
     else:
         print('Failed to fetch the page. Status code:', response.status_code)
 
+
+
+    # 预购
+    prepare_url = 'https://t.livepocket.jp/purchase?type=new'
+
+
+
     # reserved_session_id 6位随机整数
+    buy_url = 'https://t.livepocket.jp/api/tickets/purchase?mytimestamp=' + str(int(time.time()))
+
+    reserved_session_id = random.randint(100000, 600000)
+    ci_session = json.dumps(session.cookies.get_dict())
+    print(ci_session)
+    common_cookies = {"ci_session": ci_session}
+    # 通过字典方式定义请求body
+    form_buy = {"utoken": token,
+                "onetime_token_name": 'buy_ticket',
+                "onetime_token_value": "GZhM2MyODg2OTYwMmRlMmM3NjNjOWYxMDExMG",
+                "url": "https://t.livepocket.jp/purchase/confirm?id=" + str(event_id) + f"&reserved_session_id={reserved_session_id}",
+                "reserved_session_id": reserved_session_id,
+                "event_id": str(event_id),
+                "payment_type": "credit",
+                "payment_method": 0,
+                # "enquete[q_id]": 44196,
+                # "enquete[99063_]": 327196
+                }
+
+    data = parse.urlencode(form_buy)
+
+    buy_session = requests.session()
+    buy_content = buy_session.post(url=buy_url, headers=headers, data=data, cookies=common_cookies).text
+    print(buy_content)
+    response_content = json.loads(buy_content)
+    print(f"buy_content:{response_content['errmsg']}")
 
 
 # 返回一个随机的请求头 headers
@@ -102,4 +140,4 @@ def get_headers():
 
 
 if __name__ == '__main__':
-    operator_poc()
+    operator_poc("no2es@huatcn.com", "panyue666")