python解决GPS打卡问题解决办法

目前很多所谓的互联网公司都要搞GPS定位考勤打卡,目前所在的客户单位也要求所有厂家人员进行GPS软件打卡。除了公司的指纹打卡外,还要再打客户的卡。既然是地理定位,在android平台下之前测试过通过使用Fake GPS软件 ,开启开发者模式,允许模拟地理位置是可以实现地点任意的。不过目前用的iphone手机,又不想越狱掉,就想通过抓包,利用python向服务器定点发送伪造包的方式解决。原理和之前写的手机APP自动签到—python实现一样。

这个不同与这之前写的是,这里使用的是POST方法,相对get方法要安全一些,不过区别也并不是特别大,代码如下(由于不便于泄露一些信息,这里将重要信息隐去或修改了):

#!/usr/bin/env python
#coding=utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import string
import pycurl
import StringIO
import json
def initCurl():
        c = pycurl.Curl()
        c.setopt(pycurl.COOKIEFILE, "cookie_file_name")#把cookie保存在该文件中
        c.setopt(pycurl.COOKIEJAR, "cookie_file_name")
        c.setopt(pycurl.FOLLOWLOCATION, 1) #允许跟踪来源
        c.setopt(pycurl.MAXREDIRS, 5)
        c.setopt(pycurl.CONNECTTIMEOUT, 20)
        return c
def PostData(curl, url, data):
        head = ['Accept:*/*',
                'Content-Type:application/json;charset=utf-8',
                'render:json',
                'clientType:json',
                'Connection:close',
                'Proxy-Connection:close',
                'User-Agent:xx考勤 4.2.30 rv:102030 (iPhone; iPhone OS 8.4; zh_CN)',
                'DontTrackMeHere:gzip, deflate',
                'Authorization: 9fa1e7e454b486b9842b1aaf9b5559e3']
        buf = StringIO.StringIO()
        curl.setopt(pycurl.WRITEFUNCTION, buf.write)
        curl.setopt(pycurl.POSTFIELDS, data)
        curl.setopt(pycurl.URL, url)
        curl.setopt(pycurl.HTTPHEADER, head)
        curl.perform()
        the_page = buf.getvalue()
        #print the_page
        buf.close()
        return the_page
def PostGPS(curl, url, data):
        head = ['Accept:*/*',
                'Content-Type:application/x-www-form-urlencoded',
                'Connection:keep-alive',
                'Proxy-Connection:keep-alive',
                'User-Agent: %E6%97%BA%E8%B4%A2%E8%80%83%E5%8B%A4/102030 CFNetwork/711.4.6 Darwin/14.0.0',
                'DontTrackMeHere:gzip, deflate',
                'Accept-Language: zh-cn',]
        buf = StringIO.StringIO()
        curl.setopt(pycurl.WRITEFUNCTION, buf.write)
        curl.setopt(pycurl.POSTFIELDS, data)
        curl.setopt(pycurl.URL, url)
        curl.setopt(pycurl.HTTPHEADER, head)
        curl.perform()
        the_page = buf.getvalue()
        #print the_page
        buf.close()
        return the_page
curl = initCurl()

#地理位置数据,在分析安卓版时发现直接调用的高德地图,iphone版发现是通过第三方mob.com的api调用的

GPSdata = 'm=aB0muOxxsXgo20qSkp99jkbLias%2F8BZxj0yOoWccGlqRvWq%2FJMj1QwQKQeHRVJMtOjqFCzTdafiGQdIla75aubgWY1e9LJfn9KnYSA5WnyKriQBkExDuu9mjAtYbeTSDqewpSrLyNO%2Fsu%2FsacPJPraD6xoqIv%2BohXiF8lzcVsBXYXGtgTXJXv5FtSoNhLnPCRlGsf3vnmNoAXR4%2BtEroC6O5o%2BcZXq%2FIRAOedRnV%2F1zP0uqZ6wYF8XvTKsos91zLEf7esG8evqwW5KiRCOaYwg%3D%3D'
GPSurl = 'http://api.share.mob.com:80/data2'
GPSresult = PostGPS(curl, GPSurl, GPSdata)
print GPSresult

#该json数据里会检验token值是否发生变化,发生变化时也是无法正常打卡的,会提示手机与绑定时发生变化,需要管理员重新审核。这点做的相对还是相对牛逼的,变相的限制了通过一部手机打多人卡的问题。

jsondata = '{"id":"xxxxx","list":[{"name":"xxx路(xxx号)","aId":"1293"}],"type":"1","token":"880B2373-2272-46A7-3588-2B6E580268D2"}'
kqurl = 'http://api.iquanqin.com/kaoqin1/104001/phone/gps/clock'
result = PostData(curl, kqurl, jsondata)
print result

暂时还遗留两个问题需要后续解决:

1、是否会有安全码过期的问题,比如之前在做APP自动签到时也遇到过。由于不知道别人用的算法,算不出安全码,这就导致可能安全码在服务器端设置了10天有效,10天后需要重新抓包获取的问题;

2、crontab中配置好该任务调用后,发现/var/log/cron 日志中可以发现有执行的记录,但发现crontab调用的并不能打卡成功,而直接执行的是可以成功的。

时间: 2024-10-22 14:22:07

python解决GPS打卡问题解决办法的相关文章

Python中文乱码报错问题解决办法

最近开始从零基础学习python语言,安装配置好开发环境后打算先写个"hello word"验证是否配置成功. 发现问题 Python属于解释型脚本语言,可直接执行目标代码.于是乎,写了下面一行代码: print "Hello python!你好python!" 运行脚本,没有出现预期的输出,而是报出一个参数错误的提示: SyntaxError: Non-ASCII character '\xe4' in file G:\Eclipse\workspace\MyPy

苹果iPhone6/6plus无法读取Sim卡问题解决办法

有部分用户在使用iPhone时,碰到了无法读取Sim卡的情况,插上了Sima卡却无效,如果出现这样的问题,该怎么解决呢?   第一种方法,打开iPhone的飞行模式,等待十几秒后再关闭,看看是否能够读取Sima卡了. 第二种方法,关机重启iPhone,开机之后看Sim卡是否有效了. 第三种方法,如果上述两招都不行,那就把iPhone备份一下然后连接iTunes恢复下系统. 第四种方法,用取卡针把卡取出来,看看是不是卡偏位了,然后调整再放进去,看看效果怎么样: 第五种方法.检查运营商设置更新 运营

荣耀7i无法识别sim卡问题解决办法

答:如果您手机在插入SIM卡开机后显示无SIM卡,可按照以下步骤排查. 1.确认使用的SIM卡是否为Mini SIM卡剪卡或Nano SIM卡使用卡托所得.如无法识别此类SIM卡,建议更换标准的Micro SIM卡尝试. 2.确认插入的SIM卡网络制式是否合适. 3.进入硬件检测>>SIM卡测试查看SIM卡是否工作正常,不正常则更换其他标准Micro SIM卡尝试. 4.如果还是不行的话可以到营业厅办理新卡,如果新卡都不能识别就只能找售后服务了 拓展阅读: 华为荣耀7i无法识别SIM卡也不能上

Python的中文问题解决办法

Python的中文问题解决办法 python 的 eclips教程环境后写了一个测试程序.结果出现这样的错误: SyntaxError: Non-ASCII character 'xbd' in file E:workspacemakeUpdatafilesIndexsrcmakeIndex.py on line 12, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details 原因是它不

Android ListView与getView调用卡顿问题解决办法

Android ListView与getView调用卡顿问题解决办法 解决办法1,设置ListView高度为固定值或者match_parent/ifll_parent @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { Log.d("onMeasure", "onMeasure"); isOnMeasure = true; super.onMeasure(

iOS 9 平台上 AFNetworking 框架 3.0 版本解决的问题和问题解决

iOS 9 平台上 AFNetworking 框架 3.0 版本解决的问题和问题解决 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 再补充 此有一篇比较全面的适配 iOS 9 的文章: htt

asp.net session、登录用户、cookie常见问题解决办法

asp教程.net session.登录用户.cookie常见问题解决办法 这里主要讲了关于session缓存,失效,以及cookie无法删除等常用见的问题了. OutPutCache 自定义缓存:session.登录用户.cookie 等 其实这个也是新瓶装旧酒的问题,前段时间,把这个做了,况且效果和性能都还不错,所以记录下,希望能帮助更多的人 虽然 outputcache 很重要,但是这个功能真的不好用,很多时间不能满足需求,比如做一些自定义方面的缓存依赖,如:session.登录用户信息.

Linux系统安装NoSQL(MongoDB和Redis)步骤及问题解决办法(总结篇)_Linux

如下是我工作中的记录,介绍的是linux系统下NoSQL:MongoDB和Redis的安装过程和遇到的问题以及解决办法: 需要的朋友可以按照如下步骤进行安装,可以快速安装MongoDB和Redis,希望可以帮助大家:)! 一.MongoDB 1.MongoDB安装 (1)将安装包mongodb-linux-i686-3.0.2.tgz拷贝到要安装的服务器中 这里我用的rz命令,如果不支持需要安装yum -y install lrzsz (2)解压安装程序 tar xzvf mongodb-lin

smarty截取中文乱码问题解决办法

smarty截取中文乱码问题解决办法 本文章提供了三款smarty截取中文乱码问题解决办法,关于乱码主要是在中文汉字中的处理了,我们利用了uft-8,gb2312等字符内码机制来截取字符串. */ function smarty_modifier_utruncate($string, $length = 80, $etc = '...',                                     $break_words = false, $middle = false)   {