接私活必备!3种设置Python 试用期方法

Posted 程序媛秃秃

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接私活必备!3种设置Python 试用期方法相关的知识,希望对你有一定的参考价值。

程序员可能会私下给别人开发一些工具,但是通常要给别人试用一下,但是万一别人试用后,把你拉黑,那就白忙活了。今天就分享如何在 Python 里设置有效期。

为了设置有效期,首先要获取当前时间,如果获取本地时间,那么别人可以通过修改操作系统的时间来一直保持有效。最好的办法就是获取网络时间。你说他断网怎么办?

如果断网,有两种方法,要么不给用,要么再取本地时间。

1、获取网络时间

如何获取网络时间呢,可以从 HTTP 返回的 Header 里获取时间,由于这个时间是 GMT 格式的 UTC 时间,我们还需要转为本地时间,下面的脚本都考虑到了,均采用标准库。

from datetime import datetime  
from urllib.request import urlopen  
import time  
import ssl  
import sys  
  
ssl._create_default_https_context = ssl._create_unverified_context  
  
  
def get_network_time():  
    url = "https://www.baidu.com"  
    try:  
        with urlopen(url) as res:  
            utctime = gmtstr_to_localtime(res.getheader("Date"))  
            return datetime_from_utc_to_local(utctime)  
    except Exception as e:  
        print("请检查网络设置")  
        sys.exit()  
  
  
def gmtstr_to_localtime(gmtstr) -> datetime:  
    return datetime.strptime(gmtstr, "%a, %d %b %Y %H:%M:%S GMT")  
  
  
def datetime_from_utc_to_local(utc_datetime):  
    now_timestamp = time.time()  
    offset = datetime.fromtimestamp(now_timestamp) - datetime.utcfromtimestamp(  
        now_timestamp  
    )  
    return utc_datetime + offset  
  
  
if __name__ == "__main__":  
    print(get_network_time())  
    # Output:  
    # 2022-07-19 06:39:12  

2、上锁

这一步很简单,一个日期判断就搞定了:

def lock():  
    now = get_network_time()  
    end_date = datetime(2022, 8, 26)  
    if now > end_date:  
        print("试用已到期")  
        sys.exit()  

然后把上面获取网络时间的代码及 lock 函数均放在 lock.py 文件里,在我们的核心模块 core_work.py 中导入:

from lock import lock  
  
def somefunc():  
    lock()  
    # do your work  

在需要 lock() 的地方调用下 lock 函数就可以了。

你可能还需要一个 startup.py 脚本来启动整个程序:

from core_work import main  
main()  

3、编译 pyd

不编译的话,或者编译为 pyc 的话,上面的工作等于没做,pyc 可以直接反编译成 py 文件,连命名符号都不变。

编译的话,只需要需要把获取网络时间的代码,lock 函数的定义及调用 lock 的代码都编译成 pyd,本例子中就是 lock.py 和 core_work.py 编译成 lock.pyd 和 core_work.pyd,然后把源代码 lock.py 和 core_work.py 删除,其实就可以发布了,想破解只能反编译 pyd 文件,得到的是汇编代码,这个门槛已经拒绝了大多数的人。

pyd 的编译流程是 .py -> .c -> pyd,也就是说 pyd 是从 c 语言编译的,除了隐藏源代码之外,速度也会变快一些。

如果不放心的话,那就 pyinstall -k key startup.py 再加密打包一下,key 就是加密的密码,如果在 pyd 文件 import 了第三方库,那么要在 spec 文件中填写 hiddenimports。

如何编译 pyd 呢?代码如下:

from distutils.core import setup  
from Cython.Build import cythonize  
files = ["lock.py", "core_work.py"]  
  
setup(  
    name="yourapp",  
    ext_modules=cythonize(files),  
    script_args=["build_ext", "-b", "./build", "-t", "./build/temp"],  
)  

运行之前你要 pip install cython。

然后在 build 文件夹就可以看到编译好的 pyd 文件,然后把他们移动到源代码的位置,重命名为 xxx.pyd 就可以了。

接单网站有哪些?

比如:猪八戒网,一品威客,微推推等等,给大家做了一个整理。

Python怎么学?

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、全套PDF

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

这份完整版的Python全套学习资料已经上传至CSDN官方,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费获取【保证100%免费】。

接私活注意事项

1、没有第三方担保的个人对个人的尽量不要接,双方都没保障,出了问题很大的可能撕破脸皮不了了之。

2、一上来就直接说给我开发一个什么软件,不说具体需求,没有需求文档的都不靠谱,这样的项目不要接。

3、尽量442收费方式,即开工收40%项目款,项目中期收40%项目款,项目结束收20%项目款。一开始不给钱的,尽量不要接,这一点一定要记住,否则很容易付出了劳动得不到应得的收入。

4、不给完钱,不交完整代码。你的成果就是代码,如果没给完钱,就把代码交给了对方,也容易被坑到。

以上是关于接私活必备!3种设置Python 试用期方法的主要内容,如果未能解决你的问题,请参考以下文章

程序员接私活必备的10个开源项目,很多人还不知道!

一款基于 Spring Boot 的神仙接私活项目,已开源,2022 接私活必备!

SpringBoot 大屏展示,私活项目,已开源,2022 接私活必备!

一款基于 Spring Cloud 的神仙私活项目,已开源,微服务也能搞定!2022 接私活必备!...

接私活必备的 10 个开源项目

12 个开源的后台管理系统,2022 年做外包接私活必备。。