├── run.bat ├── README.md └── main.py /run.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | D: 3 | cd D:\smzdm 4 | start pythonw main.py 5 | exit 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SMZDM_check_in 2 | 3 | ## 功能介绍 4 | 1、什么值得买每日自动签到 5 | 2、签到成功后通过邮件进行提醒当前签到的天数 6 | 7 | ## chromedriver下载地址 8 | https://chromedriver.storage.googleapis.com/index.html 9 | https://npm.taobao.org/mirrors/chromedriver 10 | 11 | ## 安装 12 | 1、install python3 13 | 2、install pip 14 | 3、pip install selenium 15 | 4、根据部署的环境不同,下载安装不同的chrome 16 | 5、安装Chromedriver驱动,同样参考安装的环境去下载 17 | 18 | ## 使用方法 19 | 在对应的操作系统上配置定时任务来运行 `python main.py` 20 | 21 | by windows 22 | run.bat文件是为Windows的任务计划设置而准备的 23 | 可以使用windows的任务计划来自动每天定时来完成签到 24 | 25 | by linux 26 | crontab -e 27 | 30 0 * * * python ..../main.py 28 | 29 | ## 效果预览 30 | ![](https://ws2.sinaimg.cn/large/006tNc79gy1fop166qxxrj30yi1pc1l3.jpg) 31 | 32 | ## 免责说明 33 | - 本项目仅供个人学习RPA技术参考使用。用户明确同意其使用本开源项目所存在的风险将完全由其自己承担;因其使用本项目而产生的一切后果也由其自己承担,开源作者对用户不承担任何责任。 34 | - 任何由于使用本开源项目而造成的个人资料泄露、丢失、被盗用或被窜改及由此而导致的任何法律争议和后果等,本开源均得免责。 35 | - 开源使用者因使用本项目而触犯中华人民共和国法律的,一切后果自己负责,开源作者不承担任何责任。 36 | - 凡以任何方式获取本开源项目代码或直接、间接使用本开源资料者,视为自愿接受本开源声明的约束。 37 | - 声明未涉及的问题参见国家有关法律法规,当本声明与国家法律法规冲突时,以国家法律法规为准。 38 | -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from email.header import Header 3 | from email.utils import parseaddr, formataddr 4 | from selenium import webdriver 5 | from time import sleep 6 | import os 7 | 8 | # ===============================修改下面的内容=================================== 9 | # 发送邮箱地址 10 | sendmailAddress = 'address' 11 | # 发送邮箱密码(如果邮箱提供授权码,那么密码就填写授权码即可,例如qq、163都提供授权码) 12 | sendmailUserPasswd = 'password' 13 | # smtp服务器地址和端口 14 | smtpServer = 'smtp.163.com' 15 | smtpPort = 25 16 | 17 | # 接收邮箱地址 18 | acceptmailAddress = ['username@qq.com'] 19 | 20 | # smzdm用户名 21 | smzdm_username = 'username' 22 | # smzdm密码 23 | smzdm_userpasswd = 'password' 24 | 25 | # chromedriver文件路径 26 | CHROME_DRIVER_PATH="....../chromedriver" 27 | 28 | # ============================================================================== 29 | print("开始加载驱动及配置浏览器参数") 30 | chrome_opt = webdriver.ChromeOptions() 31 | prefs = {"profile.managed_default_content_settings.images": 2} 32 | chrome_opt.add_argument('--headless') 33 | chrome_opt.add_argument('--disable-gpu') 34 | chrome_opt.add_argument("--no-sandbox") 35 | chrome_opt.add_argument("test-type") 36 | chrome_opt.add_argument('--ignore-certificate-errors') 37 | chrome_opt.add_argument('--dns-prefetch-disable') 38 | chrome_opt.add_experimental_option("prefs", prefs) 39 | dr = webdriver.Chrome(executable_path=CHROME_DRIVER_PATH, chrome_options=chrome_opt) 40 | 41 | # 签到地址 42 | homePageUrl = 'https://www.smzdm.com/' 43 | logoutUrl = 'https://zhiyou.smzdm.com/user/logout/' 44 | 45 | print("访问什么值得买网站") 46 | dr.get(homePageUrl) 47 | dr.implicitly_wait(30) 48 | 49 | print("点击登录,打开登录界面") 50 | sleep(5) 51 | # dr.find_element_by_class_name('J_login_trigger').click() 52 | dr.execute_script("$('.J_login_trigger').click()") 53 | 54 | print("激活登录界面") 55 | sleep(5) 56 | dr.switch_to.frame('J_login_iframe') 57 | 58 | print("输入用户名密码") 59 | # smzdm的用户名密码 60 | dr.find_element_by_id('username').send_keys(smzdm_username) 61 | dr.find_element_by_id('password').send_keys(smzdm_userpasswd) 62 | 63 | print("点击确定,完成登录") 64 | dr.find_element_by_class_name('login_submit').click() 65 | 66 | print("点击签到") 67 | sleep(5) 68 | dr.find_element_by_xpath('//*[@id="index-head"]/div[3]/div[2]/a').click() 69 | 70 | print("读取签到天数") 71 | sleep(5) 72 | # 获取签到天数 73 | mailTxt = dr.find_element_by_xpath('//*[@id="index-head"]/div[3]/div[2]/a').text 74 | # 邮件标题(正文) 75 | mailTxt = u"什么值得买——" + mailTxt 76 | 77 | dr.get(logoutUrl) 78 | 79 | print("关闭浏览器") 80 | dr.close() 81 | 82 | print("发送邮件通知") 83 | from email.mime.text import MIMEText 84 | import smtplib 85 | 86 | msg = MIMEText(mailTxt, 'plain', 'utf-8') 87 | # 邮箱的发送和接收地址 88 | msg['From'] = "{}".format(sendmailAddress) 89 | msg['To'] = ",".join(acceptmailAddress) 90 | msg['Subject'] = Header(mailTxt, 'utf-8') 91 | 92 | # 填写smtp服务器地址和端口 93 | server = smtplib.SMTP(smtpServer, smtpPort) # SMTP协议默认端口是25 94 | server.set_debuglevel(1) 95 | server.login(sendmailAddress, sendmailUserPasswd) 96 | # 发送邮件, 发送邮件地址、接收邮件地址 97 | server.sendmail(sendmailAddress, acceptmailAddress, msg.as_string()) 98 | server.quit() 99 | print("签到完成") 100 | 101 | --------------------------------------------------------------------------------