世界のある工商雲の戦いの自動カードシステム
文書ディレクトリ前言 一、python接続打カードウェブサイト自動ロット打カード を実現する 1.コード 2.重要部分分析 二、タイミング起動カード打ちプログラム 1、テンセントサーバー 2、linux+crontabを使用してタイミング起動項目 を追加
三、毎日メールを成功に送る 1、メール送信機能 2、結合打卡、完成毎日打卡成功通知 三、グラフィックインターフェースの設計 最後に書いてあります: 前言
试験周间は复习したくなくて、pythonを独学して、1つの午后を见て少しも感じないで、そこで実际に操业して、云の戦いの自动的なカードを打つことができるかどうかを试みて、午前2时ごろまでpythonの大量のカードを使うことに成功して、それから绝えず机能を改善して、大体ユーザーの添加の毎日の自动的な大量のカードを打つことと毎日のカードを打つことに成功した后の情报しかし、まだ多くの不足点が改善されなければならない.
一、pythonはカードを打つウェブサイトに接続して自動ロットカードを打つことを実現する
1.コード
コードは次のとおりです(例).
2.重要部分分析
コードは次のとおりです(例).
前のコードはすべてこの部分のコードをめぐって展開されており、urlもpayloadもheadersも、適切に構築すれば所望の機能を実現することができる.例えば、前は携帯電話側でカードインタフェースにログインするしかないので、headersのuser-agentをアンドロイドのuser-agentに変更すればよい.
二、タイミングでカードを打つプログラムを起動する
1、テンセントサーバー
明らかに私のパソコンはずっとつけられないので、ルームメイトとお金を使ってテンセントサーバーを買いました.テンセントクラウドサーバー(Cloud Virtual Machine,CVM)は、クラウド上で拡張可能なコンピューティングサービスを提供しています.[1]テンセントクラウドはアジア太平洋クラウドコンピューティング市場で4位で、初めてグーグルを上回った.
2、linux+crontabを使用してタイミング起動項目を追加する
crontabが持参したかどうか忘れましたが、インストールする場合は
その後、タイミング起動項目を追加しますが、その前にcrontabの使用を熟知してcrontabを開きます.
viエディタモードに入り、新しい行に目的のタイミングタスクを追加しますが、cron式の構文を熟知しておく必要があります.例えば、毎日0時に起動します.
私のcrontabの内容は:
毎日0:02 pythonを使ってmyFirstSpideを開くことを意味します.py実行記録をEverDayに書き込む.txt
三、毎日メールを成功に送る
1、メール送信機能
ここではsmtpを利用して送信します.smtpを使用する場合は、メールボックスの設定でこの機能をオンにし、動的パスワードを取得する必要があります.
2、カードを打つことを結び付けて、毎日カードを打つ成功の通知を完成します
三、図形化インタフェースの設計
ここはあまり言わないで、自分でゆっくり描いてください.
最後に書きます.
多くの不足があり、例えば資料はtxtの中に存在し、顧客情報の伝達はメールを通じて行われている.実はデータベースでやったはずですが、时間がなくて、データベースの接続コードを添付したくなくて、縁のある人にやってほしいです.
试験周间は复习したくなくて、pythonを独学して、1つの午后を见て少しも感じないで、そこで実际に操业して、云の戦いの自动的なカードを打つことができるかどうかを试みて、午前2时ごろまでpythonの大量のカードを使うことに成功して、それから绝えず机能を改善して、大体ユーザーの添加の毎日の自动的な大量のカードを打つことと毎日のカードを打つことに成功した后の情报しかし、まだ多くの不足点が改善されなければならない.
一、pythonはカードを打つウェブサイトに接続して自動ロットカードを打つことを実現する
1.コード
コードは次のとおりです(例).
import requests
import time
url='https://nco.zjgsu.edu.cn/genqrcode/2019032'
file = open("C:/Users/Administrator/Desktop/python /spide/helloSpide.txt", "r")
file_read = file.readlines()# ( )
lenthOfFile = len(file_read)#
for i in range(0, lenthOfFile, 4):# 4 5
# for
file_read_name = file_read[i]# ( )
file_read_name = file_read_name.strip()#
file_read_pass = file_read[i+1]#
file_read_pass = file_read_pass.strip()
file_read_first_location = file_read[i+2]#
file_read_first_location = file_read_first_location.strip()
file_read_last_location = file_read[i+3]#
file_read_last_location = file_read_last_location.strip()
#
#
myHeaders_1 = {
'User-Agent': 'Opera/12.02 (Android 4.1; Linux; Opera Mobi/ADR-1111101157; U; en-US) Presto/2.9.201 Version/12.02 '# ( )
}
url = 'https://nco.zjgsu.edu.cn/genqrcode/2019032'
r3 = requests.post(url, headers=myHeaders_1) # https://nco.zjgsu.edu.cn/genqrcode/2019032 ( )
yourLocal1 = file_read_first_location # ( )
yourLocal2 = file_read_last_location #
myHeaders_2 = {
'Upgrade-Insecure-Requests': '1',
'Content-Type': 'application/x-www-form-urlencoded',
'Cookie': 'zjgsusessionsid=s%3AGSYaaVwF_2pedsizsHYTYSY64hVl3vL_.NMnLf1bV1PJSAS%2FeZXUkcyPkFpBq%2BcMVQYq4XPHXAAU; _ncov_uuid=a59e0ac8-da06-4fb1-83d8-000976c317a9; _ncov_username=1910080117; _ncov_psswd=09187X',
'User-Agent': 'Opera/12.02 (Android 4.1; Linux; Opera Mobi/ADR-1111101157; U; en-US) Presto/2.9.201 Version/12.02 '
}
myHeaders_2['Cookie'] = r3.headers['set-cookie']# cookie ( cookie )
payload = {
'name': ' ', 'psswd': ' '
}
payload['name'] = file_read_name# post
payload['psswd'] = file_read_pass# post
url = 'https://nco.zjgsu.edu.cn/login'
r=requests.post(url, data=payload, headers=myHeaders_2)#
# r.encoding='utf-8'
print(r.text)
print(r.headers)
time.sleep(10) #
myHeaders_3 = {
'Upgrade-Insecure-Requests': '1',
'Content-Type': 'application/x-www-form-urlencoded',
'Cookie': 'zjgsusessionsid=s%3AOIlBmUda3tnT-fWds6uWEKKADgTt3IAd.zQ1LcseRzDNFPv5EU1AlkyyWeSMz6424x6HK8cbov8Q; _ncov_uuid=03d31c9b-696f-4429-a0ca-6e2b7a2e10ce; _ncov_username=1910080117; _ncov_psswd=09187X',
'User-Agent': 'Opera/12.02 (Android 4.1; Linux; Opera Mobi/ADR-1111101157; U; en-US) Presto/2.9.201 Version/12.02 '
}
myHeaders_3['Cookie'] = r.headers['set-cookie']# cookie
payload2 = {
'uuid': 'a59e0ac8-da06-4fb1-83d8-000976c317a9',
'locationInfo': '%E6%B5%99%E6%B1%9F%E7%9C%81%E6%9D%AD%E5%B7%9E%E5%B8%82',
'currentResd': '%E6%B5%99%E6%B1%9F%E7%9C%81%E6%B8%A9%E5%B7%9E%E5%B8%82%E9%BE%99%E6%B8%AF%E5%B8%82%E4%B8%B4%E6%B8%AF%E8%B7%AF862%E5%8F%B7',
'fromHbToZjDate': '',
'fromHbToZj': 'C',
'fromWtToHzDate': '',
'fromWtToHz': 'B',
'meetDate': '',
'meetCase': 'C',
'travelDate': '',
'travelCase': 'D',
'medObsvReason': '',
'medObsv': 'B',
'belowCaseDesc': '',
'belowCase': 'D',
'temperature': '',
'notApplyReason': '',
'hzQRCode': 'A',
'specialDesc': ''
}
payload2['locationInfo'] = yourLocal1 #
payload2['currentResd'] = yourLocal2 #
url2 = 'https://nco.zjgsu.edu.cn/'
r2 = requests.post(url2, data=payload2, headers=myHeaders_2)#
# r.encoding='utf-8'
print(r2.text)
time.sleep(5) #
2.重要部分分析
コードは次のとおりです(例).
r=requests.post(url, data=payload, headers=myHeaders_2)
前のコードはすべてこの部分のコードをめぐって展開されており、urlもpayloadもheadersも、適切に構築すれば所望の機能を実現することができる.例えば、前は携帯電話側でカードインタフェースにログインするしかないので、headersのuser-agentをアンドロイドのuser-agentに変更すればよい.
myHeaders_1['User-Agent'] = 'xxxxxxxx'
二、タイミングでカードを打つプログラムを起動する
1、テンセントサーバー
明らかに私のパソコンはずっとつけられないので、ルームメイトとお金を使ってテンセントサーバーを買いました.テンセントクラウドサーバー(Cloud Virtual Machine,CVM)は、クラウド上で拡張可能なコンピューティングサービスを提供しています.[1]テンセントクラウドはアジア太平洋クラウドコンピューティング市場で4位で、初めてグーグルを上回った.
2、linux+crontabを使用してタイミング起動項目を追加する
crontabが持参したかどうか忘れましたが、インストールする場合は
yum install vixie-cron
yum install crontabs
その後、タイミング起動項目を追加しますが、その前にcrontabの使用を熟知してcrontabを開きます.
crontab -e
viエディタモードに入り、新しい行に目的のタイミングタスクを追加しますが、cron式の構文を熟知しておく必要があります.例えば、毎日0時に起動します.
0 0 * * * >>
私のcrontabの内容は:
2 0 * * * python /root/ShareFile/myFirstSpide.py >>/root/ShareFile/EverDay.txt
毎日0:02 pythonを使ってmyFirstSpideを開くことを意味します.py実行記録をEverDayに書き込む.txt
三、毎日メールを成功に送る
1、メール送信機能
ここではsmtpを利用して送信します.smtpを使用する場合は、メールボックスの設定でこの機能をオンにし、動的パスワードを取得する必要があります.
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
# from email.mime.image import MIMEImage
smtp = smtplib.SMTP()
smtp.connect('smtp.163.com', 25)# 163 qq smtp.qq.com
username = 'xxxxxxxx'#
password = 'xxxxxxxx'# ( 163 smtp )
smtp.login(username, password)
sender = 'xxxxxxx'#
receiver = 'xxxxxxx'#
#
subject = 'pythonmailtest'#
msg = MIMEMultipart('mixed')
msg['Subject'] = subject
msg['From'] = '[email protected] '
msg['To'] = '[email protected]'
text = 'Hello World'#
text_plain = MIMEText(text, 'plain', 'utf-8')#
msg.attach(text_plain)
smtp.sendmail(sender, receiver, msg.as_string())
smtp.quit()
2、カードを打つことを結び付けて、毎日カードを打つ成功の通知を完成します
import requests
import time
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
url='https://nco.zjgsu.edu.cn/genqrcode/2019032'
#
def sentSecessMsg(receiver):
smtp = smtplib.SMTP()
smtp.connect('smtp.qq.com', 25)
username = 'xxxxxxx'
password = 'xxxxxxx'
smtp.login(username, password)
sender = 'xxxxxxx'
#
subject = ' : '
msg = MIMEMultipart('mixed')
msg['Subject'] = subject
msg['From'] = '[email protected] '
msg['To'] = receiver
text = ' '
text_plain = MIMEText(text, 'plain', 'utf-8')
msg.attach(text_plain)
smtp.sendmail(sender, receiver, msg.as_string())
smtp.quit()
file = open("C:/Users/Administrator/Desktop/python /spide/helloSpide.txt", "r")
file_read = file.readlines()
lenthOfFile = len(file_read)
for i in range(0, lenthOfFile, 5):
# for
file_read_name = file_read[i]
file_read_name = file_read_name.strip()
file_read_pass = file_read[i+1]
file_read_pass = file_read_pass.strip()
file_read_first_location = file_read[i+2]
file_read_first_location = file_read_first_location.strip()
file_read_last_location = file_read[i+3]
file_read_last_location = file_read_last_location.strip()
#
#
myHeaders_1 = {
'User-Agent': 'Opera/12.02 (Android 4.1; Linux; Opera Mobi/ADR-1111101157; U; en-US) Presto/2.9.201 Version/12.02 '#
}
url = 'https://nco.zjgsu.edu.cn/genqrcode/2019032'
r3 = requests.post(url, headers=myHeaders_1) # https://nco.zjgsu.edu.cn/genqrcode/2019032
yourLocal1 = file_read_first_location # ( )
yourLocal2 = file_read_last_location #
myHeaders_2 = {
'Upgrade-Insecure-Requests': '1',
'Content-Type': 'application/x-www-form-urlencoded',
'Cookie': 'zjgsusessionsid=s%3AGSYaaVwF_2pedsizsHYTYSY64hVl3vL_.NMnLf1bV1PJSAS%2FeZXUkcyPkFpBq%2BcMVQYq4XPHXAAU; _ncov_uuid=a59e0ac8-da06-4fb1-83d8-000976c317a9; _ncov_username=1910080117; _ncov_psswd=09187X',
'User-Agent': 'Opera/12.02 (Android 4.1; Linux; Opera Mobi/ADR-1111101157; U; en-US) Presto/2.9.201 Version/12.02 '
}
myHeaders_2['Cookie'] = r3.headers['set-cookie']# cookie
payload = {
'name': ' ', 'psswd': ' '
}
payload['name'] = file_read_name
payload['psswd'] = file_read_pass
url = 'https://nco.zjgsu.edu.cn/login'
r=requests.post(url, data=payload, headers=myHeaders_2)
# r.encoding='utf-8'
print(r.text)
print(r.headers)
# print(r.headers['Url-Hash'])
# https://blog.csdn.net/sinat_32258909/article/details/52404305
time.sleep(10) #
myHeaders_3 = {
'Upgrade-Insecure-Requests': '1',
'Content-Type': 'application/x-www-form-urlencoded',
'Cookie': 'zjgsusessionsid=s%3AOIlBmUda3tnT-fWds6uWEKKADgTt3IAd.zQ1LcseRzDNFPv5EU1AlkyyWeSMz6424x6HK8cbov8Q; _ncov_uuid=03d31c9b-696f-4429-a0ca-6e2b7a2e10ce; _ncov_username=1910080117; _ncov_psswd=09187X',
'User-Agent': 'Opera/12.02 (Android 4.1; Linux; Opera Mobi/ADR-1111101157; U; en-US) Presto/2.9.201 Version/12.02 '
}
myHeaders_3['Cookie'] = r.headers['set-cookie']
payload2 = {
'uuid': 'a59e0ac8-da06-4fb1-83d8-000976c317a9',
'locationInfo': '%E6%B5%99%E6%B1%9F%E7%9C%81%E6%9D%AD%E5%B7%9E%E5%B8%82',
'currentResd': '%E6%B5%99%E6%B1%9F%E7%9C%81%E6%B8%A9%E5%B7%9E%E5%B8%82%E9%BE%99%E6%B8%AF%E5%B8%82%E4%B8%B4%E6%B8%AF%E8%B7%AF862%E5%8F%B7',
'fromHbToZjDate': '',
'fromHbToZj': 'C',
'fromWtToHzDate': '',
'fromWtToHz': 'B',
'meetDate': '',
'meetCase': 'C',
'travelDate': '',
'travelCase': 'D',
'medObsvReason': '',
'medObsv': 'B',
'belowCaseDesc': '',
'belowCase': 'D',
'temperature': '',
'notApplyReason': '',
'hzQRCode': 'A',
'specialDesc': ''
}
payload2['locationInfo'] = yourLocal1 #
payload2['currentResd'] = yourLocal2 #
url2 = 'https://nco.zjgsu.edu.cn/'
r2 = requests.post(url2, data=payload2, headers=myHeaders_2)
# r.encoding='utf-8'
print(r2.text)
time.sleep(5) #
#
MailAddress = file_read[i+4]
MailAddress = MailAddress.strip()
sentSecessMsg(MailAddress)
三、図形化インタフェースの設計
ここはあまり言わないで、自分でゆっくり描いてください.
import tkinter as tk
import tkinter.messagebox
from PIL import Image
from PIL import ImageTk
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import os
#
window = tk.Tk()
window.title(" ") #
window.geometry('500x300') #
#
# photo = tk.PhotoImage(file='C:/Users/Administrator/Desktop/python /spide/1.png')
# thePhotoLabel = tk.Label(window, image=photo,compound=tk.CENTER)
# thePhotoLabel.pack()
# def writeToText():
# myFile=open("C:/Users/Administrator/Desktop/python /spide/helloSpide.txt",)
# def get_image(filename,width,height):
# im = Image.open(filename).resize((width,height))
# return ImageTk.PhotoImage(im)
# #
# Dpath = os.path.abspath('.')
# canvas_root = tkinter.Canvas(window, width=500,height=300)
# im_root = get_image(Dpath+'\\picture\\k.png', 800,600)
# canvas_root.create_image(400,300, image=im_root)
# canvas_root.pack()
tk.Label(window, text=' :', font=(' ', 14)).place(x=90, y=20)
tk.Label(window, text=' :', font=(' ', 14)).place(x=90, y=60)
tk.Label(window, text=' :', font=(' ', 14)).place(x=70, y=100)
tk.Label(window, text=' :', font=(' ', 14)).place(x=90, y=140)
tk.Label(window, text=' :', font=(' ', 14)).place(x=90, y=180)
userNameEntry = tk.Entry(window)
userPasswordEntry = tk.Entry(window, show='*')
userNameEntry.place(x=170, y=25)
userPasswordEntry.place(x=170, y=65)
userFirstAddress = tk.Entry(window)
userLastAddress = tk.Entry(window)
userFirstAddress.place(x=170, y=105)
userLastAddress.place(x=170, y=145)
EmailAddress = tk.Entry(window)
EmailAddress.place(x=170, y=185)
def writeInText():
# myFile = open('C:/Users/Administrator/Desktop/python /spide/helloSpide.txt', 'a+')
# myFile.write('
'+userNameEntry.get()+'
')
# myFile.write(userPasswordEntry.get()+'
')
# myFile.write(userFirstAddress.get()+'
')
# myFile.write(userLastAddress.get())
# myFile.close()
if userNameEntry.get()=='' or userPasswordEntry.get()=='' or userFirstAddress.get()=='' or userLastAddress.get()=='' or EmailAddress.get()=='':
tkinter.messagebox.showinfo(title=' ', message=' ')
else:
AllInfo = userNameEntry.get()+'
'+userPasswordEntry.get()+'
'+userFirstAddress.get()+'
'+userLastAddress.get()+'
'+EmailAddress.get()
smtp = smtplib.SMTP()
smtp.connect('smtp.qq.com', 25)
username = '[email protected]'
password = 'xxxxxxxx'
smtp.login(username, password)
sender = '[email protected]'
receiver = '[email protected]'
#
subject = ' '
msg = MIMEMultipart('mixed')
msg['Subject'] = subject
msg['From'] = '[email protected] '
msg['To'] = '[email protected]'
# msg['Date'] = '2021-1-23'
text = AllInfo
text_plain = MIMEText(text, 'plain', 'utf-8')
msg.attach(text_plain)
# text = 'Hello World'
# text_plain = MIMEText(text, 'plain', 'utf-8')
smtp.sendmail(sender, receiver, msg.as_string())
smtp.quit()
tkinter.messagebox.showinfo(title=' ', message=' ')
def clearText():
# myFile = open('C:/Users/Administrator/Desktop/python /spide/new.txt','w')
# myFile.close()
tkinter.messagebox.showinfo(title=' ', message=' , , MyNameIsChenWenHan')
sendTotextButton = tk.Button(window, text=' ', width=20, height=2, command=writeInText)
sendTotextButton.place(x=100, y=230)
tkinter.messagebox.showinfo(title=' ', message=' : ')
clearTextButton = tk.Button(window, text=' ', width=20, height=2, command=clearText)
clearTextButton.place(x=320, y=230)
window.mainloop()
最後に書きます.
多くの不足があり、例えば資料はtxtの中に存在し、顧客情報の伝達はメールを通じて行われている.実はデータベースでやったはずですが、时間がなくて、データベースの接続コードを添付したくなくて、縁のある人にやってほしいです.
import pymysql
#
db = pymysql.connect(host="192.168.xxx.xxx",user="xxxx",password="xxxxx",database="xxxxxxx")
cursor = db.cursor()
cursor.execute("SELECT VERSION()")
data = cursor.fetchone()
print ("Database version : %s " % data)
#
db.close()