python-tkinter制作小软件 腾讯域名报毒检测

之前因为看见有人需要域名检测腾讯那边是否报毒,然后自己随时练习一下,因为去买一些二手域名可能被腾讯拉入黑名单了,买多的话有个一键检测当然省不少时间,不过这个东西网上倒是有很多检测,但是!有收费的,限制检测数量的,总之完全免费并且随便用的没看见,不知道腾讯那里有多少个检测网站,有一个网站我一直抓不到包,后来在网上查到了另一个地址,简单就拿到api了。

 

tkinter的主要代码:

导入模块我尽量用了from,是为了打包exe文件后尽量减小软件大小

 1 from tkinter import W,E,N,S,Button,Label,Text,Tk
 2 from tkinter import END
 3 import tkinter.messagebox
 4 from threading import Thread
 5 from mains import txymjc
 6 from requests import get
 7 
 8 
 9 
10 def th():
11     t1 = Thread(target=ym_jc)
12     t1.start()
13 
14 def ym_jc():
15     #  读输入的域名
16     text_content = (text1.get("0.0", "end").replace(" ", "")).split("\n")
17     text_content.pop()  # 列表最后一个元素是空删除它
18 
19     if text_content[0] == '':
20         tkinter.messagebox.showinfo(title='提示', message='麻烦把域名填一下再提交!')
21     else:
22         x=0
23         for url in text_content:     # 这里对输入的域名循环检测
24             data = txymjc(url)        # 这个调用检测核心函数
25             for r in data:
26                 text2.insert(END, data[r] + '\n')
27             x = x + 1
28             if x == 10:
29                 break
30 
31 
32 def qk():  # 清空按钮
33     text1.delete(1.0, END)
34     text2.delete(1.0, END)
35 
36 
37 root=Tk() #生成root主窗口
38 root.title('域名检测')
39 root.resizable(0,0)
40 root.geometry('750x560')
41 
42 # 两个布局控件
43 frm1 = tkinter.Frame(root,height=100,width=400,).grid(row=0,column=0,columnspan=2,sticky=N+W)
44 frm2 = tkinter.Frame(root,height=380,width=400,).grid(row=2,column=0,padx=15,sticky=N+W)
45 frm3 = tkinter.Frame(root,height=380,width=260,).grid(row=2,column=1,padx=15,sticky=N+W) # background='#FFFFFF'
46 
47 # 按钮控件
48 Button(frm1,text='开始检测',height=2,width=20,fg='red',font=10,command=th).grid(row=0,columnspan=2,pady=0,padx=15,)
49 Button(frm1,text='清空',height=0,width=8,fg='red',font=10,command=qk).grid(row=0,column=1,columnspan=2,pady=0,padx=15,sticky=E)
50 
51 # 文本标签
52 Label(frm1, text="域名输入区、一行一个域名,一次最多检测10个", height=0,).grid(row=1, column=0,columnspan=1,sticky=W+E+N+S, padx=5,)
53 Label(frm1, text="域名检测结果输出区", height=0,).grid(row=1, column=1,columnspan=1,sticky=W+E+N+S, pady=5,)
54 
55 # 多行输入框
56 text1 = Text(frm1,width=40,height=20,font=10)
57 text2 = Text(frm2,width=30,height=20,font=10)
58 
59 # 布局输入框,这里单独拿出来放,不然出问题
60 text2.grid(row=2,column=1)
61 text1.grid(row=2,column=0)
62 
63 root.mainloop()             #进入消息循环(必需组件)

域名检测的核心函数代码:

其他功能可以自己拓展。

import requests
import json
from time import localtime
from time import strftime

def txymjc(url):
    api_url = "https://cgi.urlsec.qq.com/index.php?m=check&a=check&url=%s" % url

    headers = {"Host": "cgi.urlsec.qq.com",
               "Referer": "https://urlsec.qq.com",
               "Sec-Fetch-Mode": "no-cors",
               "Sec-Fetch-Site": "same-site",
               "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"}
    try:
        text = requests.get(api_url, headers=headers).text
        zidian = json.loads((text[1:-1]))
        data = (zidian['data'])

        data_xx = {}
        if data != "查询url格式不正确":
            data_xx['urls'] = ("检测URL:" + data['results']['url'])
            if data['results']['whitetype'] == 2:  # 域名不正常
                data_xx['whitetype'] = ("域名不正常")
                data_xx['WordingTitle'] = ("报毒标题:" + data['results']['WordingTitle'])
                data_xx['Wording'] = ("报毒原因:" + data['results']['Wording'])

            else:  # 域名正常
                data_xx['whitetype'] = ("域名正常")

            if data['results']['isDomainICPOk'] == 0:  # 域名没有备案
                data_xx['isDomainICPOk'] = ("域名未备案")

            if data['results']['isDomainICPOk'] == 1:  # 域名已经备案
                data_xx['isDomainICPOk'] = ("域名已备案")
                data_xx['Orgnization'] = ("备案负责人:" + data['results']['Orgnization'])
                data_xx['ICPSerial'] = ("备案号:" + data['results']['ICPSerial'])
            timeArray = localtime(int(data['results']['detect_time']))
            otherStyleTime = strftime("%Y-%m-%d %H:%M:%S", timeArray)
            data_xx['detect_time'] = "最后检出的时间:" + otherStyleTime

        else:
            data_xx['0'] = ("查询url格式不正确")
        return data_xx
    except:
        data_xx['0'] = ("查询url格式不正确")
        return data_xx
View Code

 

posted @ 2020-02-29 01:09  大铭分享  阅读(456)  评论(0编辑  收藏  举报