仅供学习与测试,不得用于任何违法违规业务,否则后果自负。
最近有朋友问如何搞快手轨迹算法,给大家分享一下这笨拙的方法。
博主生成的轨迹过不去校验,所以扣了网站的做本地轨迹库。
快手最新的滑块轨迹算法加了异步点,这个如果处理不好,肯定是无法通过的
不用每个横坐标都需要扣下来,在经常出现的坐标上多扣一些就可以了,当然越多越好。
废话不多说,直接上算法
def get_trajectory_back(x1, resdata):
global bianyidian, bianyicishu
print("a------------>", resdata['a'])
print("resdata------------>", resdata)
trajectory = ''
clientxone = 23
clientx = 23
ttime = 0
x = 0
jilucishu = 0
bianyidian = 0
bianyicishu = 0
if 'd' in resdata:
pd = 1
else:
pd = 0
print("pd---->", pd)
while x < int(x1 * 1.60):
x = clientx - clientxone
if x == 0:
x = 0
else:
x = int(x / 276 * 1000)
clientx += random.randint(0, 3)
clienty = random.randint(19, 23)
if pd:
if jilucishu == int(resdata['a']) - 1:
bianyicishu += 1 # 后加的
xx = 456 * int(resdata['sx']) + int(resdata['ix'])
clientyy = 13 * int(resdata['sy']) + int(resdata['iy'])
if pd:
bianyidian = (int(resdata['a']) - 1) + (int(resdata['d']) * bianyicishu)
else:
bianyidian = int(pow(resdata['q'], bianyicishu) + resdata['a'])
print('q1----->', bianyidian)
bianyicishu += 1
trajectory += f"{xx}|{clientyy}|{ttime},"
jilucishu += 1
continue
# else:
# if jilucishu == int(resdata['a']):
# xx = 456 * int(resdata['sx']) + int(resdata['ix'])
# clientyy = 13 * int(resdata['sy']) + int(resdata['iy'])
#
# if pd:
# bianyidian = (int(resdata['a']) - 1) + (int(resdata['d']) * bianyicishu)
# else:
# bianyidian = int(pow(resdata['q'], bianyicishu) + resdata['a'])
# print('q2----->', bianyidian)
# bianyicishu += 1
# trajectory += f"{xx}|{clientyy}|{ttime},"
# jilucishu += 1
# continue
else:
if jilucishu == int(resdata['a']):
bianyicishu += 2
xx = 456 * int(resdata['sx']) + int(resdata['ix'])
clientyy = 13 * int(resdata['sy']) + int(resdata['iy'])
if pd:
bianyidian = (int(resdata['a']) - 1) + (int(resdata['d']) * bianyicishu)
else:
bianyidian = int(pow(resdata['q'], bianyicishu) + resdata['a']) - 1
print('q3----->', bianyidian)
bianyicishu += 1
trajectory += f"{xx}|{clientyy}|{ttime},"
jilucishu += 1
continue
if bianyidian:
# print("变异点----》", bianyidian, jilucishu)
if pd:
if bianyidian == jilucishu:
xx = 456 * int(resdata['sx']) + int(resdata['ix'])
clientyy = 13 * int(resdata['sy']) + int(resdata['iy'])
if pd:
bianyidian = (int(resdata['a']) - 1) + (int(resdata['d']) * bianyicishu)
else:
bianyidian = int(pow(resdata['q'], bianyicishu) + resdata['a'])
print('q----->', bianyidian)
bianyicishu += 1
trajectory += f"{xx}|{clientyy}|{ttime},"
jilucishu += 1
continue
else:
if bianyidian == jilucishu:
xx = 456 * int(resdata['sx']) + int(resdata['ix'])
clientyy = 13 * int(resdata['sy']) + int(resdata['iy'])
if pd:
bianyidian = (int(resdata['a']) - 1) + (int(resdata['d']) * bianyicishu)
else:
bianyidian = int(pow(resdata['q'], bianyicishu) + resdata['a']) - 1
print('q4----->', bianyidian)
bianyicishu += 1
trajectory += f"{xx}|{clientyy}|{ttime},"
jilucishu += 1
continue
trajectory += f"{x}|{clienty}|{ttime},"
ttime += random.randint(10, 20)
jilucishu += 1
trajectory = trajectory[:-1]
return trajectory