海哥发现百度指数的加密方式又变了,修改了一下之前的代码。
完整代码如下。
import json
import requests
import urllib.request
from datetime import datetime
from datetime import timedelta
# 获取IP代理
def get_proxy():
opener = urllib.request.build_opener(
urllib.request.ProxyHandler(
{'http': 'http://brd-customer-hl_5dede465-zone-try-country-cn:pdqt396jal8m@brd.superproxy.io:22225',
'https': 'http://brd-customer-hl_5dede465-zone-try-country-cn:pdqt396jal8m@brd.superproxy.io:22225'}))
response = opener.open('http://lumtest.com/myip.json').read()
response_str = response.decode('utf-8')
ip = json.loads(response_str)['ip']
proxies = {
"http": "http://{}".format(ip),
"https": "http://{}".format(ip),
}
return proxies
# 解码函数
def decrypt(ptbk, index_data):
n = len(ptbk)//2
a = dict(zip(ptbk[:n], ptbk[n:]))
return "".join([a[s] for s in index_data])
def reCode(data, ptbk):
data = data['data']
li = data['userIndexes'][0]['all']['data']
startDate = data['userIndexes'][0]['all']['startDate']
year_str = startDate[:4] # 使用切片取前四个字符,即年份部分
try:
# 将年份字符串转换为整数
year = int(year_str)
# 根据年份判断是否为闰年
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
year = 366
else:
year = 365
except :
year =365
if li =='':
result = {}
name = data['userIndexes'][0]['word'][0]['name']
tep_all = []
while len(tep_all) < year:
tep_all.insert(0, 0)
result["name"] = name
result["data"] = tep_all
else:
ptbk = ptbk
result