View_user_home/访问首页.py

319 lines
19 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import re
import random
import requests
import pickle
requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS = 'DH+AESGCM:DH+HIGH:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+HIGH:RSA+3DES:!aNULL:!eNULL:!MD5'
def zhengchang_ua(i):
# return 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.42'
if i == 0:
first_num = random.randint(55, 62)
third_num = random.randint(0, 3200)
fourth_num = random.randint(0, 140)
os_type = [
'(Linux; Android 10; MI 9 Build/QKQ1.190825.002; wv)',
'(Linux; Android 8.1.0; PBCM30 Build/OPM1.171019.011; wv)',
'(Linux; Android 6.0; HUAWEI MLA-AL10 Build/HUAWEIMLA-AL10; wv)',
'(Linux; Android 6.0.1; OPPO A57t Build/MMB29M; wv)',
'(iPhone; CPU iPhone OS 10_3_3 like Mac OS X)',
'(Linux; U; Android 9; zh-cn; Redmi 7 Build/PKQ1.181021.001)',
'(Linux; Android 9; V1914A Build/PKQ1.181016.001; wv)',
'(Linux; U; Android 10; zh-CN; ALP-AL00 Build/HUAWEIALP-AL00)',
'(Linux; Android 10; VOG-TL00 Build/HUAWEIVOG-TL00; wv)',
'(Linux; Android 9; Nokia X7 Build/PPR1.180610.011; wv)',
'(Linux; Android 9.0; S5 Build/PKQ1.190319.001; wv)',
'(Linux; Android 10; PCT-AL10 Build/HUAWEIPCT-AL10; wv)',
'(Linux; Android 10; PCT-AL10 Build/HUAWEIPCT-AL10; wv)',
'(Linux; Android 9; Mi9 Pro 5G Build/PKQ1.190714.001; wv)',
'(iPhone; CPU iPhone OS 13_4 like Mac OS X)', '(Linux; Android 10; OXF-AN00 Build/HUAWEIOXF-AN00; wv)',
'(Linux; U; Android 9; zh-cn; V1814A Build/PKQ1.180819.001)',
'(Linux; U; Android 7.0; zh-cn; Redmi Note 4X Build/NRD90M)',
'(Linux; Android 9; RMX1991 Build/PKQ1.190630.001; wv)',
'(Linux; Android 10; JNY-AL10 Build/HUAWEIJNY-AL10; wv)',
'(Linux; Android 10; ELE-AL00 Build/HUAWEIELE-AL00; wv)',
'(Linux; Android 9; RMX1991 Build/PKQ1.190630.001; wv)',
'(Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002)',
'(Linux; Android 10; VCE-AL00 Build/HUAWEIVCE-AL00; wv)',
'(Linux; Android 8.0.0; AUM-TL20 Build/HONORAUM-TL20; wv)',
'(Linux; Android 10; ALP-AL00 Build/HUAWEIALP-AL00; wv)',
'(Linux; U; Android 10; zh-cn; MI 8 SE Build/QKQ1.190828.002)',
'(Linux; Android 7.1.1; OPPO A83 Build/N6F26Q; wv)',
'(Linux; Android 10; VOG-AL10 Build/HUAWEIVOG-AL10; wv)', '(iPhone; CPU iPhone OS 13_3_1 like Mac OS X)',
'(Linux; U; Android 10; zh-cn; MI 9 Build/QKQ1.190825.002)',
'(Linux; Android 9; INE-TL00 Build/HUAWEIINE-TL00; wv)',
'(Linux; Android 9; ONEPLUS A6000 Build/PKQ1.180716.001; wv)',
'(Linux; U; Android 9; zh-cn; Mi9 Pro 5G Build/PKQ1.190714.001)',
'(Linux; Android 8.1.0; OPPO R11 Plus Build/OPM1.171019.011; wv)',
'(Linux; Android 8.1.0; COR-AL00 Build/HUAWEICOR-AL00; wv)',
'(Linux; Android 7.1.2; M15 Build/N2G47H; wv)', '(Linux; arm_64; Android 7.0; LG-H870DS)',
'(Linux; U; Android 9; zh-cn; MI CC9 Pro Build/PKQ1.190302.001)',
'(Linux; Android 10; SM-G9730 Build/QP1A.190711.020; wv)',
'(Linux; Android 7.1.2; Hisense A2T Build/N2G47H; wv)',
'(Linux; U; Android 8.1.0; zh-CN; 16th Plus Build/OPM1.171019.026)',
'(Linux; U; Android 9; zh-cn; MI 8 Lite Build/PKQ1.181007.001)',
'(Linux; Android 9; PAAM00 Build/PKQ1.190414.001; wv)',
'(iPhone; CPU iPhone OS 10_1_1 like Mac OS X)', '(iPhone; CPU iPhone OS 11_4_1 like Mac OS X)',
'(Linux; Android 9; V1914A Build/PKQ1.181016.001; wv)',
'(Linux; Android 10; PCT-AL10 Build/HUAWEIPCT-AL10; wv)',
]
chrome_version = 'Chrome/{}.0.{}.{}'.format(first_num, third_num, fourth_num)
ua = ' '.join(['Mozilla/5.0', random.choice(os_type), 'AppleWebKit/537.36',
'(KHTML, like Gecko)', chrome_version, 'Safari/537.36']
)
return ua
elif i == 1:
os_type = [
'(Windows NT 6.1; WOW64)', '(Windows NT 6.0; WOW64)',
'(Windows NT 6.2; WOW64)', '(Windows NT 6.3; WOW64)',
'(Windows NT 5.1; WOW64)', '(Windows NT 5.0; WOW64)',
'(Windows NT 5.2; WOW64)', '(Windows NT 5.3; WOW64)',
'(Windows NT 10.1; WOW64)', '(Windows NT 10.0; WOW64)',
'(Windows NT 10.2; WOW64)', '(Windows NT 10.3; WOW64)',
'(Windows NT 6.1; WOW64; X64)', '(Windows NT 6.0; WOW64; X64)',
'(Windows NT 6.2; WOW64; X64)', '(Windows NT 6.3; WOW64; X64)',
'(Windows NT 5.1; WOW64; X64)', '(Windows NT 5.0; WOW64; X64)',
'(Windows NT 5.2; WOW64; X64)', '(Windows NT 5.3; WOW64; X64)',
'(Windows NT 10.1; WOW64; X64)', '(Windows NT 10.0; WOW64; X64)',
'(Windows NT 10.2; WOW64; X64)', '(Windows NT 10.3; WOW64; X64)',
'(Windows NT 6.1)', '(Windows NT 6.0)',
'(Windows NT 6.2)', '(Windows NT 6.3)',
'(Windows NT 5.1)', '(Windows NT 5.0)',
'(Windows NT 5.2)', '(Windows NT 5.3)',
'(Windows NT 10.1)', '(Windows NT 10.0)',
'(Windows NT 10.2)', '(Windows NT 10.3)',
]
banben = str(random.randint(47, 170)) + '.0.' + str(random.randint(2000, 2755)) + '.' + str(
random.randint(0, 25))
ua = ' '.join(['Mozilla/5.0', random.choice(os_type), 'AppleWebKit/537.36',
'(KHTML, like Gecko)', 'Chrome/' + banben, 'Safari/537.36'])
return ua
elif i == 2:
os_type = [
'(Macintosh; U; PPC Mac OS X 10_5_8; ja-jp)', '(Windows; U; Windows NT 6.1; cs-CZ)',
'(Windows; U; Windows NT 6.0; tr-TR)', '(Windows; U; Windows NT 5.1; ru-RU)',
'(Windows; U; Windows NT 6.0; tr-TR)', '(Macintosh; Intel Mac OS X 10_6_8)',
'(Windows; U; Windows NT 6.1; zh-HK)', '(Windows; U; Windows NT 6.0; ja-JP)',
'(Windows; U; Windows NT 6.0; hu-HU)', '(Macintosh; U; Intel Mac OS X 10_6_6; de-de)',
'(Windows; U; Windows NT 6.1; ko-KR)', '(Macintosh; Intel Mac OS X 10_7_3)',
'(Macintosh; U; PPC Mac OS X 10_5_8; ja-jp)', '(Windows; U; Windows NT 6.1; sv-SE)',
'(Macintosh; U; Intel Mac OS X 10_6_6; fr-ch)', '(Windows; U; Windows NT 6.1; de-DE)',
'(Windows; U; Windows NT 6.0; de-DE)', '(Macintosh; U; Intel Mac OS X 10_5_8; zh-cn)',
'(Macintosh; U; Intel Mac OS X 10_6_6; ja-jp)', '(Windows; U; Windows NT 6.0; en-US)',
]
banben = str(random.randint(533, 534)) + '.' + str(random.randint(18, 21)) + '.' + str(random.randint(1, 27))
chrome_version = ['Version/5.0.3', 'Version/5.0.4', 'Version/5.0.2', 'Version/7.0.3',
'Version/6.0 Mobile/10A5355d', 'Version/5.1.7', 'Version/5.1.6',
'Version/5.1.3', 'Version/5.1.4', 'Version/5.1.2', 'Version/5.1.3', ]
ua = ' '.join(['Mozilla/5.0', random.choice(os_type), 'AppleWebKit/' + banben,
'(KHTML, like Gecko)', random.choice(chrome_version), 'Safari/' + banben]
)
return ua
elif i == 3:
os_type = [
'(Windows NT 10.0; Win64; x64; rv:', '(Windows NT 6.3; Win64; x64; rv:',
'(Windows NT 6.2; Win64; x64; rv:', '(Windows NT 10; rv:',
'(Windows NT 6.3; rv:', '(Windows NT 6.2; rv:',
'(Windows NT 6.1; rv:', '(Windows NT 6.1; Win64; x64; rv:',
'(X11; Linux i586; rv:', '(Windows NT 10.0; Win64; x64; rv:',
]
banben = str(random.randint(20, 50)) + '.0'
chrome_version = ['Gecko/20100101 Firefox/', 'Gecko/20130405 Firefox/', 'Gecko/20130330 Firefox/',
'Gecko/20130430 Firefox/', 'Gecko/20140230 Firefox/',
'Gecko/20140630 Firefox/', 'Gecko/20140512 Firefox/', 'Gecko/20140712 Firefox/',
'Gecko/20100502 Firefox/']
ua = ' '.join(['Mozilla/5.0', random.choice(os_type) + banben + ')', random.choice(chrome_version) + banben])
return ua
elif i == 4:
os_type = [
'(Macintosh; U; Intel Mac OS X 10_6_7; ', '(Macintosh; U; Intel Mac OS X 10_6_5; ',
'(Windows; U; Windows NT 6.1; ', '(Macintosh; U; Intel Mac OS X 10_6_6; ',
'(Windows; U; Windows NT 6.0; ', '(Windows; U; Windows NT 6.1; ',
'(Windows; U; Windows NT 5.1; ', '(Macintosh; U; Intel Mac OS X 10_6_6; ',
'(Macintosh; U; PPC Mac OS X 10_5_8;', '(Macintosh; U; Intel Mac OS X 10_6_7;',
'(Macintosh; U; Intel Mac OS X 10_6_5;', '(Macintosh; U; Intel Mac OS X 10_6_6;',
]
diqu = ['ja-jp)', 'de-de)', 'de-DE)', 'fr-ch)', 'en-US)', 'cs-CZ)', 'it-it)', 'ko-kr)', 'da-dk)', 'ar)',
'hu-HU)',
'ko-KR)', 'es-es)', 'zh-HK)', 'en-gb)'
]
banben = str(random.randint(532, 535)) + '.' + str(random.randint(19, 55)) + '.' + str(random.randint(1, 25))
ua = ' '.join(['Mozilla/5.0', random.choice(os_type) + random.choice(diqu), 'AppleWebKit/' + banben,
'(KHTML, like Gecko)', 'Version/5.0.' + str(random.randint(1, 5)), 'Safari/' + banben])
return ua
elif i == 5:
os_type = [
'(Windows; U; Windows NT 5.1', '(Macintosh; U; Intel Mac OS X 10_6_6',
'(Macintosh; U; PPC Mac OS X 10_5_8', '(Macintosh; U; Intel Mac OS X 10_6_7',
'(Macintosh; U; Intel Mac OS X 10_6_5', '(Macintosh; U; Intel Mac OS X 10_6_6',
'(Macintosh; AMD Mac OS X 10_8_2', '(Macintosh; Intel Mac OS X 10_10_1',
'(Macintosh; Intel Mac OS X 10_5_8', '(Macintosh; Intel Mac OS X 10_6_0',
'(Macintosh; Intel Mac OS X 10_6_2', '(Macintosh; Intel Mac OS X 10_6_3',
'(Macintosh; Intel Mac OS X 10_6_4', '(Macintosh; Intel Mac OS X 10_6_5',
'(Macintosh; Intel Mac OS X 10_6_6', '(Macintosh; Intel Mac OS X 10_6_7',
'(Macintosh; Intel Mac OS X 10_6_8', '(Macintosh; Intel Mac OS X 10_7_0',
'(Macintosh; Intel Mac OS X 10_7_1', '(Macintosh; Intel Mac OS X 10_7_2',
'(Macintosh; Intel Mac OS X 10_7_3', '(Macintosh; Intel Mac OS X 10_7_4',
'(Macintosh; Intel Mac OS X 10_7_5', '(Macintosh; Intel Mac OS X 10_8_0',
'(Macintosh; Intel Mac OS X 10_8_1', '(Macintosh; Intel Mac OS X 10_8_2',
'(Macintosh; Intel Mac OS X 10_8_3', '(Macintosh; Intel Mac OS X 10_9_0',
'(Macintosh; Intel Mac OS X 10_9_1', '(Macintosh; Intel Mac OS X 10_9_2',
'(Macintosh; Intel Mac OS X 10_9_3', '(Macintosh; PPC Mac OS X 10_6_7',
'(Macintosh; U; Intel Mac OS X 10_5_6', '(Macintosh; U; Intel Mac OS X 10_5_7',
'(Macintosh; U; Intel Mac OS X 10_5_8', '(Macintosh; U; Intel Mac OS X 10_5_9',
'(Macintosh; U; Intel Mac OS X 10_6_0', '(Macintosh; U; Intel Mac OS X 10_6_1',
'(Macintosh; U; Intel Mac OS X 10_6_2', '(Macintosh; U; Intel Mac OS X 10_6_3',
'(Macintosh; U; Intel Mac OS X 10_6_4', '(Macintosh; U; Intel Mac OS X 10_6_5',
'(Macintosh; U; Intel Mac OS X 10_6_6', '(Macintosh; U; Intel Mac OS X 10_6_7',
'(Macintosh; U; Intel Mac OS X 10_6_8', '(Macintosh; U; Intel Mac OS X 10_8',
]
diqu = ['; ja-jp)', '; e-de)', '; de-DE)', '; fr-ch)', '; en-US)', '; cs-CZ)', '; it-it)', '; ko-kr)',
'; da-dk)', '; ar)', '; hu-HU)', '; ko-KR)', '; es-es)', '; zh-HK)', '; en-gb)', '; id-ID)'
]
banben = str(random.randint(500, 535)) + '.' + str(random.randint(0, 55)) + '.' + str(random.randint(0, 25))
ua = ' '.join(['Mozilla/5.0', random.choice(os_type) + random.choice(diqu), 'AppleWebKit/' + banben,
'(KHTML, like Gecko)', 'Version/5.0.' + str(random.randint(1, 9)), 'Safari/' + banben])
return ua
else:
os_type = [
'(iPhone; U; CPU iPhone OS 4_3_1 like Mac OS X', '(iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X',
'(iPhone; U; CPU iPhone OS 4_3 like Mac OS X', '(iPhone; U; CPU iPhone OS 4_2_4 like Mac OS X',
'(iPhone; CPU iPhone OS 12_1_4 like Mac OS X', '(iPhone; CPU iPhone OS 12_0 like Mac OS X',
'(iPhone; CPU iPhone OS 11_2 like Mac OS X', '(iPhone 6s; CPU iPhone OS 11_4_1 like Mac OS X',
'(iPhone; CPU iPhone OS 10_1 like Mac OS X', '(iPhone; CPU iPhone OS 11_0_2 like Mac OS X',
'(iPhone; CPU iPhone OS 11_4_1 like Mac OS X', '(iPhone; CPU iPhone OS 10_1_1 like Mac OS X',
'(iPhone; CPU iPhone OS 13_5_1 like Mac OS X', '(iPhone; CPU iPhone OS 8_3 like Mac OS X',
'(iPhone; CPU iPhone OS 14_4 like Mac OS X', '(iPhone; CPU iPhone OS 13_6 like Mac OS X',
'(iPhone; CPU iPhone OS 14_1 like Mac OS X', '(iPhone; CPU iPhone OS 13_6_1 like Mac OS X'
]
diqu = ['; ja-jp)', '; e-de)', '; de-DE)', '; fr-ch)', '; en-US)', '; cs-CZ)', '; it-it)', '; ko-kr)',
'; da-dk)', '; ar)', '; hu-HU)', '; ko-KR)', '; es-es)', '; zh-HK)', '; en-gb)', '; id-ID)'
]
banben = str(random.randint(500, 535)) + '.' + str(random.randint(0, 55)) + '.' + str(random.randint(0, 25))
mobi = ['Version/6.0 Mobile/10A5355d', 'Version/5.1 Mobile/9B176', 'Version/5.0.2 Mobile/8J2',
'Version/5.0.2 Mobile/8G4',
'Version/5.0.2 Mobile/8C148', 'Version/5.0.2 Mobile/8C148a', 'Version/5.0.2 Mobile/8G4',
'Version/5.0.2 Mobile/8F190',
'Version/4.0.5 Mobile/8B5097d', 'Version/4.0.5 Mobile/8B117', 'Version/4.0.4 Mobile/7B314',
'Version/4.0.4 Mobile/7B334b', 'Version/4.0.4 Mobile/7D11', 'Version/4.0.4 Mobile/7B500',
'Version/4.0.4 Mobile/7B360', 'Version/3.1.1 Mobile/5G77']
ua = ' '.join(['Mozilla/5.0', random.choice(os_type) + random.choice(diqu), 'AppleWebKit/' + banben,
'(KHTML, like Gecko)', random.choice(mobi), 'Safari/' + banben])
return ua
def load_cookies_from_file(filename):
# 以二进制写入模式打开文件
with open(filename, "rb") as f:
return pickle.load(f)
def View_user_home(uid,Cookies):
#访问主页,获取用户信息,只有登录才能获取地区
for __ in range(10):
try:
# session = requests.Session()
# session.mount('https://www.douyin.com', DESAdapter())
url = "https://www.douyin.com/user/" + uid
headers = {
'Connection': 'keep-alive',
'Pragma': 'no-cache',
'Cache-Control': 'no-cache',
'User-Agent': zhengchang_ua(1),
'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',
'Accept-Language': 'zh-CN,zh;q=0.9',
'cookie':Cookies
}
data = {'age': None, 'awemeCount': None, 'desc': None, 'enterpriseVerifyReason': None, 'ip': None, 'mplatformFollowersCount': None,"followingCount":None}
response = requests.get(url=url,headers=headers,timeout = 1,verify=False)
# print(response.text)
rtext = response.text
if '>私密账号</p>' in rtext:
data['private'] = True
push = re.findall(f'freq_visit_msg.*secUid\\\\":\\\\"{uid}.*?redirectFrom', rtext)
if push:
ipLocation = re.findall('"ipLocation\\\\":\\\\"(.*?)\\\\"',push[0])#IP归属地
if ipLocation:
#未知是'$undefined'
if '$undefined' in ipLocation[0]:
data['ip'] = '未知'
else:
data['ipLocation'] = ipLocation[0].replace('IP属地', '')
country = re.findall('"country\\\\":\\\\"(.*?)\\\\"', push[0]) # 城市
province = re.findall('"province\\\\":\\\\"(.*?)\\\\"', push[0]) # 城市
city = re.findall('"city\\\\":\\\\"(.*?)\\\\"', push[0]) # 城市
# 未知是'$undefined'
if '$undefined' in country or not country:
data['country'] = '未知'
elif '$undefined' in province or not province:
data['country'] = country[0]
elif '$undefined' in city or not city:
data['country'] = country[0]
else:
data['country'] = city[0]
age = re.findall('"age\\\\":(.*?),', push[0]) # 年龄
if age:
#未知是['null']
if 'null' in age[0] or '-1' in age[0]:
data['age'] = '未知'
else:
data['age'] = age[0]
awemeCount = re.findall('"awemeCount\\\\":(.*?),', push[0]) # 作品数量
if awemeCount:
if awemeCount[0] != '':
data['awemeCount'] = awemeCount[0]
# followingCount = re.findall('"followingCount\\\\":(.*?),', push[0]) # 关注数量
# if followingCount:
# if followingCount[0] != '':
# data['followingCount'] = followingCount[0]
mplatformFollowersCount = re.findall('"mplatformFollowersCount\\\\":(.*?),', push[0]) # 粉丝数量
if mplatformFollowersCount:
if mplatformFollowersCount[0] != '':
data['mplatformFollowersCount'] = mplatformFollowersCount[0]
desc = re.findall('"desc\\\\":\\\\"(.*?)\\\\"', push[0]) # 简介
if desc:
if desc[0] != '':
data['desc'] = desc[0]
enterpriseVerifyReason = re.findall('"enterpriseVerifyReason\\\\":\\\\"(.*?)\\\\"', push[0]) # 有内容就是蓝V
if enterpriseVerifyReason:
if enterpriseVerifyReason[0] != '':
data['enterpriseVerifyReason'] = True
return data
except Exception as e:
pass
# print('fwzy',e)
return False
if __name__ == '__main__':
with open(r"D:\job_demo\demo\测试\cookie_name.txt", "r", encoding="utf-8") as f:
user_name = f.read().split("|")[1].strip()
Cookie = load_cookies_from_file(
r"D:\job_demo\demo\测试\MS4wLjABAAAAc9m4vmspNsSiYP348XRC-OLVqSXRn8Rdtl618fbzYag.pkl"
)
# print(Cookie)
# print(type(Cookie))
cookies_dict = {c.name: c.value for c in Cookie}
cookie_str = "; ".join(f"{k}={v}" for k, v in cookies_dict.items())
uid = 'MS4wLjABAAAA0LR2Y-2oYACSGGB16slvh8nX8Z7kZpX7D-rlXcNnoHI'
user_data = View_home(uid,cookie_str)
print(user_data)