组装数据发出请求并解析返回json

本文介绍如何使用Fiddler抓取企业微信的网络请求,并利用Python进行解析,判断员工是否存在加班情况。通过抓包获取请求头、请求数据,再用Python代码分析加班时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

打开Fiddler程序,正常使用浏览器或企业微信,访问对应网址。找到对应请求URL,参照URL及请求参数,后使用程序组装请求头、请求数据。

# -*- coding: utf-8 -*-
"""
调取配置文件和屏幕分辨率的代码
"""
import json
import datetime
from common import urlRequest
from common import log_tools
from common import unixTimeConvert
from datetime import datetime
from timeDict import timeDict

VERSION = "1.1.1"


def main():
    """
    主函数
    """
    log_tools.log('info', '程序版本号:{}'.format(VERSION))
    sessionid = "o5ma7yxvl2zym0n87u0syflalw3wlgis"

    headers = {
        'Accept': "application/json, text/plain, */*",
        'Accept-Language': "zh-CN",
        'Connection': "keep-alive",
        'Host': "xxxx.com.cn:18080",
        'User-Agent': "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36 wxwork/2.7.0 (MicroMessenger/6.2) WindowsWechat QBCore/3.53.987.400 QQBrowser/9.0.2524.400",
        'Referer': "http://xxxxx.com.cn:18080/pro/m/",
        'Accept-Encoding': "gzip, deflate",
        'Cookie': "sid={}".format(sessionid)
    }
    
    
    #print(headers)
    #获取当前时间
    date = datetime.now()
    #根据当前时间构建开始时间字符
    start_time_datestr = date.strftime('%Y-%m') + "-01 00:00:01"
    #根据当前时间构建结束时间key去查询结束时间字典
    timeDictKey = date.strftime('%m') + "_end" 
    #根据结束时间key得到结束时间字符
    end_time_datestr = timeDict.get(timeDictKey)
    
    #print(start_time_datestr)
    #print(end_time_datestr)
    #print(datetime.now())
    #将时间字符转换成datetime类型
    start_time_date = datetime.strptime(start_time_datestr, '%Y-%m-%d %H:%M:%S')
    end_time_date = datetime.strptime(end_time_datestr, '%Y-%m-%d %H:%M:%S')
    #将float时间戳去掉小数后转换成字符串参数
    start_time_date_parameter = str(int(unixTimeConvert.get_convertToUnixtime(start_time_date)))
    end_time_date_parameter = str(int(unixTimeConvert.get_convertToUnixtime(end_time_date))) 
    #将时间参数添加到url中
    url = 'http://xxxxx.com.cn:18080/api/pro/checkin/detail/findByUserId?endtime={}059&starttime={}000&userid='.format(end_time_date_parameter, start_time_date_parameter)
    #print(url)
    #返回是bytes
    query_data = urlRequest.get_json(url, headers)
    #print(type(query_data))
    #将bytes转换成str
    data_list_str = str(query_data, 'utf-8')
    #print(data_list_str)
    #获取str中的list
    date_list_json = json.loads(data_list_str)['data']['data']
    #print((date_list_json))
    overtime = False;
    for j in range(len(date_list_json)):
        #list中
        if int(date_list_json[j]['day_status']['day_type']) == 1 or int(date_list_json[j]['day_status']['day_type']) == 2:
            if date_list_json[j]['down_time'] != "":
                if int(date_list_json[j]['down_time'].split(":")[0]) - int(date_list_json[j]['up_time'].split(":")[0]) >= 11:
                    overtime = True
                    print("当月加班换休 "  + date_list_json[j]['date'] + "     " + date_list_json[j]['up_time'] + "至" + date_list_json[j]['down_time'])
                if int(date_list_json[j]['down_time'].split(":")[0]) >= 21:
                    overtime = True
                    print("当月加班费 " + date_list_json[j]['date'] + "     " + date_list_json[j]['up_time'] + "至" + date_list_json[j]['down_time'])
               
    if overtime == False:
        print("当月没有加班费")
        #添加上\n是为自动换行
    


if __name__ == '__main__':
    main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值