123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- import json
- import requests
- import urllib3
- from fake_useragent import FakeUserAgent
- from requests.adapters import HTTPAdapter
- def get_did(user_agent):
- headers = {
- "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",
- "Accept-Encoding": "gzip, deflate, br",
- "Accept-Language": "zh-CN,zh;q=0.9",
- "Cache-Control": "max-age=0",
- "Connection": "keep-alive",
- "Host": "www.kuaishou.com",
- "Sec-Ch-Ua": '"Chromium";v="116", "Not)A;Brand";v="24", "Google Chrome";v="116"',
- "Sec-Ch-Ua-Mobile": "?0",
- "Sec-Ch-Ua-Platform": '"macOS"',
- "Sec-Fetch-Dest": "document",
- "Sec-Fetch-Mode": "navigate",
- "Sec-Fetch-Site": "same-origin",
- "Sec-Fetch-User": "?1",
- "Upgrade-Insecure-Requests": "1",
- "User-Agent": user_agent
- }
- response = requests.get('https://www.kuaishou.com/search/video?searchKey=', headers=headers)
- value_list = response.cookies.values()
- for v in value_list:
- if "web_" in v:
- return v
- return ""
- def get_captchaSession(did, user_agent):
- payload = {
- "operationName": "graphqlSearchUser",
- "variables": {
- "keyword": "周大爷不服老"
- },
- "query": "query graphqlSearchUser($keyword: String, $pcursor: String, $searchSessionId: String) {\n visionSearchUser(keyword: $keyword, pcursor: $pcursor, searchSessionId: $searchSessionId) {\n result\n users {\n fansCount\n photoCount\n isFollowing\n user_id\n headurl\n user_text\n user_name\n verified\n verifiedDetail {\n description\n iconType\n newVerified\n musicCompany\n type\n __typename\n }\n __typename\n }\n searchSessionId\n pcursor\n __typename\n }\n}\n"
- }
- headers = {
- 'Accept': '*/*',
- 'Accept-Encoding': 'gzip, deflate, br',
- 'Accept-Language': 'zh-CN,zh;q=0.9',
- 'Connection': 'keep-alive',
- 'Content-Length': '668',
- 'Content-Type': 'application/json',
- 'Cookie': 'did={}'.format(did),
- 'Host': 'www.kuaishou.com',
- 'Origin': 'https://www.kuaishou.com',
- # 'Referer': 'https://www.kuaishou.com/search/author?searchKey=%E5%91%A8%E5%A4%A7%E7%88%B7%E4%B8%8D%E6%9C%8D%E8%80%81',
- 'Sec-Ch-Ua': '"Chromium";v="116", "Not)A;Brand";v="24", "Google Chrome";v="116"',
- 'Sec-Ch-Ua-Mobile': '?0',
- 'Sec-Ch-Ua-Platform': '"macOS"',
- 'Sec-Fetch-Dest': 'empty',
- 'Sec-Fetch-Mode': 'cors',
- 'Sec-Fetch-Site': 'same-origin',
- 'User-Agent': user_agent
- }
- urllib3.disable_warnings()
- s = requests.session()
- # max_retries=3 重试3次
- s.mount("http://", HTTPAdapter(max_retries=3))
- s.mount("https://", HTTPAdapter(max_retries=3))
- response = s.post(
- url="https://www.kuaishou.com/graphql",
- headers=headers,
- data=json.dumps(payload),
- # proxies=Common.tunnel_proxies(),
- verify=False,
- timeout=10,
- )
- response.close()
- # print(response.json())
- return response.json()['data']['url'].split("?")[-1]
- def get_config(did, user_agent, captcha_session):
- payload = captcha_session
- headers = {
- 'Accept': 'application/json, text/plain, */*',
- 'Accept-Encoding': 'gzip, deflate, br',
- 'Accept-Language': 'zh-CN,zh;q=0.9',
- 'Connection': 'keep-alive',
- 'Content-Length': '411',
- 'Content-Type': 'application/x-www-form-urlencoded',
- 'Cookie': 'did='.format(did),
- 'Host': 'captcha.zt.kuaishou.com',
- 'Origin': 'https://captcha.zt.kuaishou.com',
- 'Referer': 'https://captcha.zt.kuaishou.com/iframe/index.html?{}'.format(captcha_session),
- 'Sec-Ch-Ua': '"Chromium";v="116", "Not)A;Brand";v="24", "Google Chrome";v="116"',
- 'Sec-Ch-Ua-Mobile': '?0',
- 'Sec-Ch-Ua-Platform': '"macOS"',
- 'Sec-Fetch-Dest': 'empty',
- 'Sec-Fetch-Mode': 'cors',
- 'Sec-Fetch-Site': 'same-origin',
- 'User-Agent': user_agent
- }
- urllib3.disable_warnings()
- s = requests.session()
- # max_retries=3 重试3次
- s.mount("http://", HTTPAdapter(max_retries=3))
- s.mount("https://", HTTPAdapter(max_retries=3))
- response = s.post(
- url="https://captcha.zt.kuaishou.com/rest/zt/captcha/sliding/config",
- headers=headers,
- data=payload,
- # proxies=Common.tunnel_proxies(),
- verify=False,
- timeout=10,
- )
- response.close()
- print(json.dumps(response.json(), ensure_ascii=False, indent=4))
- return response.json()['captchaSn']
- def check(encrypted_param, did, user_agent):
- payload = {
- "verifyParam": encrypted_param
- }
- headers = {
- 'Accept': 'application/json, text/plain, */*',
- 'Accept-Encoding': 'gzip, deflate, br',
- 'Accept-Language': 'zh-CN,zh;q=0.9',
- 'Connection': 'keep-alive',
- 'Content-Length': '9246',
- 'Content-Type': 'application/json',
- 'Cookie': 'did={}'.format(did),
- 'Host': 'captcha.zt.kuaishou.com',
- 'Origin': 'https://captcha.zt.kuaishou.com',
- 'Sec-Ch-Ua': '"Chromium";v="116", "Not)A;Brand";v="24", "Google Chrome";v="116"',
- 'Sec-Ch-Ua-Mobile': '?0',
- 'Sec-Ch-Ua-Platform': '"macOS"',
- 'Sec-Fetch-Dest': 'empty',
- 'Sec-Fetch-Mode': 'cors',
- 'Sec-Fetch-Site': 'same-origin',
- 'User-Agent': user_agent
- }
- urllib3.disable_warnings()
- s = requests.session()
- # max_retries=3 重试3次
- s.mount("http://", HTTPAdapter(max_retries=3))
- s.mount("https://", HTTPAdapter(max_retries=3))
- response = s.post(
- url="https://captcha.zt.kuaishou.com/rest/zt/captcha/sliding/kSecretApiVerify",
- headers=headers,
- data=json.dumps(payload),
- verify=False,
- timeout=10,
- )
- response.close()
- if __name__ == "__main__":
- fake_agent = FakeUserAgent().random
- fake_did = get_did(fake_agent)
- print(fake_did)
- captcha_session = get_captchaSession(did=fake_did, user_agent=fake_agent)
- print(captcha_session)
- captchaSn = get_config(did=fake_did, user_agent=fake_agent, captcha_session=captcha_session)
- print(captchaSn)
|