给平安复旦脚本随机gps坐标

发布于 2022-02-10  1674 次阅读


这里使用了fducslg版本的pafd-automated,详见github

每天给平安复旦提交相同的精确到11位小数的gps坐标也太假了,能不能随机坐标呢?

思路很简单,就是保留经纬度三位小数(大概十几米)并随机生成后面的位数。这样做的目的是防止多次随机后产生误差。(前三位总是不变的)

花絮:然而,由于本人水平零蛋且刚接触json,闹了笑话。原来python对象转化为json字符串不能用str(item)😅😅😅这样会出一系列问题导致无法被解析。。无知且胆大的我向平安复旦提交了错误的由str()生成的错误json,导致当天我的平安复旦页面无法正确加载出来😅😅😅还好没被开除🥳🥳🥳

正确的做法是json.dumps,以及为了使用双引号、避免ascii自动编码,需要指定一些参数。

代码如下

def random_geo(geo_api_info):
        """
        在上次提交位置的附近生成随机位置
        """
        geo_api_info = json.loads(geo_api_info)
        #用format防止最后几位是0被float减少位数
        lng = float('{:.5f}'.format(geo_api_info['position']['lng'])[:-2] + str(random.randint(0,99)))
        lat = float('{:.5f}'.format(geo_api_info['position']['lat'])[:-2] + str(random.randint(0,99)))
        Q = float('{:.5f}'.format(lat) + str(random.randint(0,4)) + str(random.randint(0,999999)))
        R = float('{:.5f}'.format(lng) + str(random.randint(0,4)) + str(random.randint(0,999999)))
        #让lng,lat保留三位小数(精确到大十几米),并据此随机生成精确位置(Q,R),防止多天后多次随机产生较大误差
        geo_api_info['position'].update(
            {
                'Q': Q,
                'R': R,
                'lng': lng,
                'lat': lat
            }
        )
        return json.dumps(geo_api_info,ensure_ascii=False,separators=(',',':')) #一定要dunps啊!!!

geo_api_info = Zlapp.random_geo(self.last_info["geo_api_info"])