haimiandashu 发表于 2023-7-14 14:01

记录一次,小白怎么写一个网站的打卡,签到程序

本帖最后由 haimiandashu 于 2023-7-14 14:05 编辑

亲爱的论坛老哥们,大家好!
本人小白一枚,还请大佬轻点喷。
本次为记录写脚本中遇到的问题,以及解决方法。
正文如下:

如图,是一个网站的打卡页面。打卡方式点击链接就会进行打卡操作。好的,接下来我们浅浅抓一下打卡的有关信息。

如果不知道怎么用这里面的信息发送包,可以把他通过一些手段转换成py程序


拿到py程序之后,跑一下试试

发现可以跑起来,但是返回的字符是不太对的,给转换一下



可以了,这样就返回了正确的字了,但是我只想要文字部分,百度了一圈 什么截取字符串,又保留倒数几个字符什么的,操作下来 没成功,所以决定曲线救国




这样就完美解决了。
后来我就想把他打包成EXE文件,每天在电脑上运行一遍,但是觉得不方便。所以把他放在了家里的小主机的 青龙面板上
又想到这个脚本没有通知,所以一不做二不休,问GPT3.5 要了一个微信推送,带图片,文字块的企业微信应用推送

import json
import time
import requests

CORP_ID = "**************"
SECRET = "***************"

class WeChatPub:
    s = requests.session()

    def __init__(self):
      self.token = self.get_token()

    def get_token(self):
      url = f"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={CORP_ID}&corpsecret={SECRET}"
      rep = self.s.get(url)
      if rep.status_code != 200:
            print("request failed.")
            return
      return json.loads(rep.content)['access_token']

    def send_msg(self, content, image_url):
      url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + self.token
      header = {
            "Content-Type": "application/json"
      }
      form_data = {
            "touser": "********",
            "toparty": "1",
            "totag": "TagID1 | TagID2",
            "msgtype": "news",
            "agentid": 1000003,
            "news": {
                "articles": [
                  {
                        "title": "测试提醒",
                        "description": content,
                        "url": "URL",
                        "picurl": image_url
                  }
                ]
            },
            "safe": 0
      }
      rep = self.s.post(url, data=json.dumps(form_data).encode('utf-8'), headers=header)
      if rep.status_code != 200:
            print("request failed.")
            return
      return json.loads(rep.content)

if __name__ == "__main__":
    wechat = WeChatPub()
    timenow = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    image_url = "https://******.com/image.jpg"# 图片的URL
    wechat.send_msg(f"{timenow}\n注意!\n今日有新债,坚持打新!", image_url)
    print('消息已发送!')



然后就是把上面的程序放在一起,来看看最后的成果吧。

代码放在最后:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
'''
@Project :pythonproject
@file    :微信推送工控打卡1,带图片文字卡.py
@IDE   :PyCharm
@AuThor:海绵的烂笔头
@date    :2023-07-14 12:55
'''
import json
import time
import requests
#=========================================以下为工控家人园打卡程序,如果CK失效,只需要替换这部分内容=========================================
cookies = {
    #**************************保密
}

headers = {
    #**************************保密
}

response = requests.get('http://www.*******/bbs/data/q1.php', cookies=cookies, headers=headers, verify=False)
#=======================================对文件进行编码处理=====================================================
response.encoding = 'gbk'
#=======================================以下为对打印内容的处理,只保留文字=====================================================
if '签到成功' in response.text:
    t = '第一次签到成功! 您获得了10点下载积分!'
    print(t)
if '已经签到过了' in response.text:
    t = '您今天已经签到过了,请明天再来吧!'
    print(t)

#==============================================以下为企业微信推送程序=======================================================
CORP_ID = "*******"
SECRET = "********"

class WeChatPub:
    s = requests.session()

    def __init__(self):
      self.token = self.get_token()

    def get_token(self):
      url = f"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={CORP_ID}&corpsecret={SECRET}"
      rep = self.s.get(url)
      if rep.status_code != 200:
            print("request failed.")
            return
      return json.loads(rep.content)['access_token']

    def send_msg(self, content, image_url):
      url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + self.token
      header = {
            "Content-Type": "application/json"
      }
      form_data = {
            "touser": "******",
            "toparty": "1",
            "totag": "TagID1 | TagID2",
            "msgtype": "news",
            "agentid": 1000003,
            "news": {
                "articles": [
                  {
                        "title": "工控家人园第一次打卡通知",
                        "description": content,
                        "url": "URL",
                        "picurl": image_url
                  }
                ]
            },
            "safe": 0
      }
      rep = self.s.post(url, data=json.dumps(form_data).encode('utf-8'), headers=header)
      if rep.status_code != 200:
            print("request failed.")
            return
      return json.loads(rep.content)

if __name__ == "__main__":
    wechat = WeChatPub()
    timenow = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    image_url = "http://********/img/OIP-C.jpg"# 图片的URL
    wechat.send_msg(f"{timenow}\n注意!{t}", image_url)
    print('消息已发送!')

欢迎各位大佬对我批评指正,前进的路上少不了您的指点。

sensenisme 发表于 2023-7-14 15:47

你比我专业课的老师还要想教会我用python,你真的,我哭死

lcg2014 发表于 2023-7-26 16:53

curl转python失败{:1_924:}

67haha 发表于 2023-7-14 14:24

很不错的学习过程

earlc 发表于 2023-7-14 14:46

点个赞,这个教程入门看看不错

xiaoyaowolf 发表于 2023-7-14 14:55

学习能力太强了·

szwangbin001 发表于 2023-7-14 15:16

这个在线工具是哪个地址,能分享下吗

Arcticlyc 发表于 2023-7-14 16:16

本帖最后由 Arcticlyc 于 2023-7-14 16:18 编辑

请问一下企业微信推送的内容和格式有限制吗(就是要认证才能用之类的),我记得好像要什么可信ip

haimiandashu 发表于 2023-7-14 16:24

sensenisme 发表于 2023-7-14 15:47
你比我专业课的老师还要想教会我用python,你真的,我哭死

玩的就是真实

haimiandashu 发表于 2023-7-14 16:26

Arcticlyc 发表于 2023-7-14 16:16
请问一下企业微信推送的内容和格式有限制吗(就是要认证才能用之类的),我记得好像要什么可信ip

现在好像没有什么限制,我这边是个人注册 也没有绑定什么白名单 直接开袋即食

Arcticlyc 发表于 2023-7-14 16:27

haimiandashu 发表于 2023-7-14 16:26
现在好像没有什么限制,我这边是个人注册 也没有绑定什么白名单 直接开袋即食

好滴,谢谢回复
页: [1] 2 3 4
查看完整版本: 记录一次,小白怎么写一个网站的打卡,签到程序