zoukankan      html  css  js  c++  java
  • 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("
    ")
    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] + '
    ')
    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

  • 相关阅读:
    J2EE系列 (一) 几个技术规范
    MyEclipse 10 优化技巧
    J2EE (二) Servlet设置Session Cookies
    CSS 外层box自动计算高度的问题
    UI设计技巧Div封闭式Div导致页面显示异常
    Windows 7 IIS7 无法启动, 显示WAS & W3SVC没有启动的错误提示
    Windows 7 截图
    GridView技巧增加序号列
    ERWin & ERStudio图里的实线和虚线的含义
    [转]CSS布局口诀 CSS BUG顺口溜
  • 原文地址:https://www.cnblogs.com/hongming/p/12381316.html
Copyright © 2011-2022 走看看