Zirconium233 / yunForNewVersion

合肥工业大学云运动3.3.1版本自动跑步脚本,也可以针对接口一致的其他校区,主要解决加密问题,提供一些小工具和教程。
70 stars 18 forks source link

关于开始后输出“开始标记打卡点,第1次尝试...公里数不足2.5公里,将自动回跑” #2

Closed PapiLight closed 8 months ago

PapiLight commented 8 months ago

你好,我是外校学生,在使用过程中发现以下问题(大概率是我搞错),请指点。

在map.json里把获取到的打卡点导入,出现以下问题

确认:[Y/N]Y 快速模式:[Y/N]N 118.361094,31.284623 存在 118.359978,31.283633 存在 118.359728,31.282521 存在 118.361181,31.282576 存在 118.362422,31.284354 存在 开始标记打卡点... 第1次尝试... 公里数不足2.5公里,将自动回跑... 第2次尝试... 公里数不足2.5公里,将自动回跑... 第3次尝试... 公里数不足2.5公里,将自动回跑... 第4次尝试... 公里数不足2.5公里,将自动回跑... 第5次尝试... 公里数不足2.5公里,将自动回跑... 第6次尝试... 公里数不足2.5公里,将自动回跑... 第7次尝试... 公里数不足2.5公里,将自动回跑... 第8次尝试... 公里数不足2.5公里,将自动回跑... 第9次尝试... 公里数不足2.5公里,将自动回跑...

Zirconium233 commented 8 months ago

我忘在readme.md里面说了,晚上再去更新readme:

  1. config.ini里面还有一个参数是起始点,默认设在合工大的路边,外校只改map.json会导致路线是从合工大一路跑到其他学校导致路程超标;
  2. 这个里程不足的提示是无效的,因为我们采用了手动选点的方式,这个print是最开始那个yun项目写的,我也没删它,忽略这个提示就行,真正的问题就是这个起始点。
PapiLight commented 8 months ago

我忘在readme.md里面说了,晚上再去更新readme:

  1. config.ini里面还有一个参数是起始点,默认设在合工大的路边,外校只改map.json会导致路线是从合工大一路跑到其他学校导致路程超标;
  2. 这个里程不足的提示是无效的,因为我们采用了手动选点的方式,这个print是最开始那个yun项目写的,我也没删它,忽略这个提示就行,真正的问题就是这个起始点。

感谢你的答复,我删除了关于 “开始处理第 n 个点”和“开始标记打卡点...”两段代码,正常运行并且有轨迹。但是跑步轨迹看着是一条直线,害怕人工检查发现,请问有什么方法可以对路线加干扰

Zirconium233 commented 8 months ago

问题: 路线逆天是高德导航导致的,导航喜欢把你往路上导,至于直线问题,原因是原项目作者采用了等比分隔法,高德给你返回2个点,这2个点会被切分成20个,2次提交,所以直线就出来了。

解决方案

  1. 打表:自己跑一次步,全程抓包,回头把包的信息保存下来,通过写程序分隔或者自己手动分隔的方法创建出tasklist,然后generate_task方法就可以不用了。好处是路径好看,坏处是不通用了,而且每次一样的路线也不太好。
  2. 算法偏移:如果只是嫌弃直线,你给分隔的代码加随机偏移就行,别直接d_x = (b_x - a_x) / split_count了,加一点扰动,只不过你要对偏移的距离有方寸,别偏移到逆天的地方去了,特别是直接改经纬度。
  3. 自己选点:manager_list是学校要求的打卡点,但服务器不会看你到底过没过打卡点,你说你过了,你就是过了。所以可以直接不管,在操场上围着跑到点一圈控制点,用这些控制点生成路径。具体到代码上就是把map.json的点改成你自己在操场上面点的一圈点(顺序别乱了,要不然会往回跑),不用改成学校要求的打卡点。距离短高德地图的导航就不会把你扔到路上去了。当然你要觉得没过打卡点但是打卡点是绿的也很逆天,你可以把学校要求的打卡点在适当的位置嵌入你的控制点,不影响的。

最后: 如果只是想路径不太逆天,别被一眼看出来,上面方法都可以。但是如果想实现理论上没法区分的伪装,utc是时间生成,cipherKey的变动,finish信息的完善都要改。实话说这个项目可以吐槽的地方有点多,只不过学校大概率不会看你的哪些。

不要把你的对手想象的很认真,写后端的也不想加班,学校服务器也支撑不起实时防伪。云运动绝大多数的代码针对的都是软件作弊,模拟器,虚拟GPS等,针对脚本的就一个加密,这个一破,其实后面连第二道防线都没有了。