# !/usr/bin/env python3
# -*- coding: UTF-8 -*-
"""
@des     :"""
import requests
from lxml import etree
import re
import datetimedef get_standard_html(retry_times=3):"""网络获取标准北京时间HTML:param retry_times::return:"""flag = Falseresponse = ""while not flag and retry_times > 0:try:headers = {"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9","Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7","Cache-Control": "no-cache","Connection": "keep-alive","DNT": "1","Pragma": "no-cache","Referer": "https://www.baidu.com/link?url=P5aQMA4XN6hQMNXgWTAKtPCSGG52KlhztMU78ERAT3KS3pixUFfh2loQ4dUgCQZ0&wd=&eqid=d2bcf4ac0001cb160000000263295be3","Upgrade-Insecure-Requests": "1","User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"}url = "http://time.tianqi.com/"response = requests.get(url, headers=headers, verify=False)comp = re.compile("charset=(.*)")encod = re.search(comp, response.text)response.encoding = encodflag = Trueexcept Exception as e:retry_times -= 1return responsedef parse_text(res):"""解析标准北京时间:param res::return:"""tree = etree.HTML(res)lis = tree.xpath('//div[@class="time_box_detailinfo"]')for li in lis:net_time_lis = li.xpath('./div[@class="time_date"]/div[1]/p/text()')computer_time = li.xpath('./div[@class="detail_info"]/p[5]/span[@class="computed_time"]/text()')if len(computer_time) == 1:computer_time = computer_time[0]net_time_head = computer_time.split(" ")[0]if len(net_time_lis) == 3:net_time = "{} {}:{}:{}".format(net_time_head, net_time_lis[0], net_time_lis[1], net_time_lis[2])return net_time, computer_timedef time_str_datatime_obj(time_str: str):"""字符串形式时间转换成datetime.datetime:param time_str::return:"""return datetime.datetime.strptime(time_str, "%Y-%m-%d %H:%M:%S")def match_time(register_time: str, net_time_now: str,local_time=datetime.datetime.now(),TrialTime=30):"""计算时间差:param register_time::param net_time_now::param local_time::return:"""# 校验网络时间和本地时间if local_time.strftime("%Y-%m-%d %H:%M:%S") == net_time_now:register_time_obj = time_str_datatime_obj(register_time)net_time_now_obj = time_str_datatime_obj(net_time_now)# 计算时间差值diff_days_net = (net_time_now_obj - register_time_obj).daysif diff_days_net > TrialTime:flag = 2elif diff_days_net < 0:flag = 3else:flag = 0else:flag = 4return flagif __name__ == '__main__':match_dic = {0: "试用期内",2: "试用过期",3: "注册时间大于当前时间",4: "网络时间获取异常/本地时间不正确"}res_txt = get_standard_html()if res_txt != "":net_time, computer_time = parse_text(res_txt.text)register_time = "2022-7-01 19:01:00"status_code = match_time(register_time, net_time)print(match_dic[status_code])else:print("网络错误")

python实现软件登陆过程中的试用时间校验(网络时间和本地时间双校验)相关推荐

  1. 常用软件-安装过程中的小常识

    常用软件-安装过程中的小常识 主要通过安装金山打字通软件,来讲解我自己安装程序中用到的小技巧. (只适用于电脑小白奥) 完整安装过程 如下是安装金山打字通的完整过程,讲解了我自己的常用小技巧. 1. ...

  2. 软件重构过程中的思维转换: 遗留代码如何变废为宝

    "我开始收到各式各样的邮件,人们都表示'天呐!我也是这样!'."她说,"我开始去传播这条信息,告诉大家重新建构遗留代码这件事其实非常有价值,凭此来吸引合适的人." ...

  3. 我们编写的python代码在运行过程中_在Rust代码中编写Python是种怎样的体验?

    原标题:在Rust代码中编写Python是种怎样的体验? 作者 | Mara Bos,Rust资深工程师 译者 | Arvin,编辑 | 屠敏 来源 | CSDN(ID:CSDNnews) 大约一年前 ...

  4. 软件设计过程中的诱惑

    在软件设计的过程中,我们经常会面临这样的诱惑: 在工作过程中,突然出现了一个问题如鲠在喉,阻塞住了当前整个的工作进度, 而同时,你立刻能够想到一个快速搞定该问题的方案,这种情形下开发人员,很 容易就会 ...

  5. html判断cookies ph,【教程】如何利用IE9的F12去分析网站登陆过程中的复杂的(参数,cookie等)值(的来源)...

    在抓取网站内容,模拟网站登陆等过程中: 往往要去分析某些变量,参数,某cookie的值的来源. 而想要分析单个的值,相对于从F12所抓取到的海量信息,即N多条的记录,且每天记录中有N多数据信息,来说, ...

  6. Python入门--函数传递过程中实参的变化

    def fun(arg1,arg2):print('arg1=',arg1)print('arg2=', arg2)arg1=100;arg2.append(10)print('arg1=', arg ...

  7. python获取本地时间_Python实例讲解 -- 获取本地时间日期(日期计算)

    #! /usr/bin/env python #coding=utf-8 import time print time.strftime('%Y-%m-%d %A %X %Z',time.localt ...

  8. Python Pycharm在运行过程中,查看每个变量(show variables)

    MATLAB里面有一个很贴心的功能就是你可以随时查看变量的值,以及变量的类型是什么: 在进行代码调试的时候,可以清楚的看到是哪些值出现了问题,但是由于MATLAB的深度学习生态环境还是没有Python ...

  9. 1-1 软件构造过程中的多维视图

    本节目标: 本节大纲: 随着时间的推移,人们对软件的认识的变化: 软件不能脱离外部环境: 软件构造的多个维度: 时间:瞬时(某一天某个时间点).周期(变化情况) 编码:构建开发(代码的结构.多少类.类 ...

最新文章

  1. 如何在不增加人员的情况下自动化API安全程序
  2. Flask框架——ORM数据库
  3. 七、配置ssh keys连通github跟ssh-agent
  4. Thrift实现C#调用Java开发步骤详解
  5. 查看有哪些表被锁住 如何杀死oracle死锁进程
  6. ASP.NET MVC 小小总结
  7. 性能测试负载模型(八)
  8. 自定义Promise
  9. 5分钟实现微信云小程序支付功能(含源码)
  10. Python ADF 单位根检验 如何查看结果
  11. 计算机基础——4.1 数字通信入门
  12. doors需求管理导入HTML,如何利用doors进行需求管理
  13. 先决条件(一)问题定义和需求分析
  14. laydate时间控件 (开始日期、结束日期)
  15. html5网页制作心得体会,网页设计课程学习心得总结
  16. 乔治亚大学计算机科学,乔治亚大学的计算机科学排名,真得稳重考察
  17. Bluetooth core 5.0 Generic Access Profile ---------- 模式 - BR/EDR 物理传输(physical transport)
  18. 浅谈程序环境和预处理
  19. ART/Dalvik,JVM/Dalvik 虚拟机的区别
  20. jlink 固件升级

热门文章

  1. 如何在 Linux 下安装及使用 CD-ROM
  2. iview 级联选择组件_iviewui级联选择 如何自定义?
  3. 弘辽科技:淘宝平台如何处理商家sku作弊问题?有哪些处罚?
  4. Visa和Planeta Informatica开拓新技术,助力全球交通运输运营商实现快速、安全、便捷的非接触式支付
  5. php java内存占用_PHP内存溢出优化代码详解
  6. 微信小程序——weapp-qrcode.js生成二维码、海报二维码、核销码
  7. 麦积机器人_智能机器人到来,这一批会计人员即将下岗!
  8. 如何找到英文文档读懂英文文档
  9. 对于一个字符串,找到第一次重复出现的字符
  10. 员工一言不合就离职怎么办?我用 Python 写了个员工流失预测模型