成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

flask查詢whois信息實例

Simon_Zhou / 3110人閱讀

摘要:附錄內(nèi)建檢查器對象是否可調(diào)用對象是否已定義是否可以被整除是否已轉(zhuǎn)義是否為奇數(shù)是否可以循環(huán)是否為小寫是否為是否為數(shù)字是否為偶數(shù)是否與為同一個對象實例是否為序列是否是字符串是否未定義是否為大寫

flask基礎(chǔ)實現(xiàn)不再贅述,不了解的同學(xué)可以通過官方文檔學(xué)習(xí)
http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-iii-web-forms

Step 1 新建查詢whois信息的form類

在forms.py中添加如下代碼:

# -*- coding: utf-8 -*-
from flask.ext.wtf import Form
from wtforms import StringField
from wtforms.validators import DataRequired

class WhoisForm(Form):
    myDomain = StringField("myDomain", validators=[DataRequired()])

很簡單,跟官方教程差不多

Step 2 創(chuàng)建Whois信息模板

新建一個whois.html文件,代碼如下:




    
    GetWhois




這里只為做實例,所以沒有設(shè)置繼承模板,如果是一個整體的項目,建議通過繼承實現(xiàn),保持風(fēng)格一致。
實例通過whois模塊得到相關(guān)信息,返回的結(jié)果是一個字典,如圖所示

所以用了以下jinja2語句將信息輸出到網(wǎng)頁上


{% for key in info %}
        
{%endfor%}
{{ key }} :{{ info[key] }}

Step 3 Whois函數(shù)實現(xiàn)

在views.py中添加實現(xiàn)代碼

@app.route("/whois",methods=["GET","POST"])
def Whois():
    form = WhoisForm()
    if form.validate_on_submit():
        info_dict = GetWhois.MyWhois(form.myDomain.data)
        return render_template("whois.html",form = form, info = info_dict)
    return render_template("whois.html",form = form)

其中GetWhois.MyWhois函數(shù)的實現(xiàn),在GetWhois.py中實現(xiàn),具體為

#!/usr/bin/env python
# -*- encoding: utf-8 -*-

import whois

def MyWhois(mydomain):
    try:
        w = whois.whois(mydomain)
        return w
    except Exception,e:
        print Exception,e
        return {}

ok,程序到這里基本可以實現(xiàn)需要的內(nèi)容了,查詢效果如圖

Step 4 進(jìn)一步優(yōu)化

我們看到輸出到網(wǎng)頁時,如status、domain_name等字段的值是列表,是否可以將其進(jìn)一步分解輸出呢,答案是可行的。
我們可以利用jinja2的內(nèi)建檢查器來判斷參數(shù)是否為list,若是,則分解打印
于是將whois.html修改成

    
{% for key in info %}
        
{%endfor%}
        
{{ key }} : {% if info[key] is sequence %} {% for value in info[key] %} {{ value }}
{% endfor %} {% else %} {{ info[key] }} {% endif %}

執(zhí)行后看效果圖,What The Fuck!!!字符串也被分解打印了。

再次修改,判斷為字符串,則先打印,然后再去判斷是否為List

    
{% for key in info %}
        
{%endfor%}
        
{{ key }} : {% if info[key] is string %} {{ info[key] }} {% elif info[key] is sequence %} {% for value in info[key] %} {{ value }}
{% endfor %} {% else %} {{ info[key] }} {% endif %}

終于乖乖的出來了我們期盼的結(jié)果

小結(jié)

實例寫完后,目錄結(jié)構(gòu)為

|____app
| |______init__.py
| |____forms.py
| |____GetWhois.py
| |____static
| | |____images
| | | |____logo.png
| |____templates
| | |____whois.html
| |____views.py
|____config.py
|____run.py
|____tmp

學(xué)習(xí)了flask的form基本實現(xiàn),jinja2的部分語法。

附錄 內(nèi)建檢查器:

*"""callable(object)""" 
對象是否可調(diào)用 
*"""defined(value)""" 
對象是否已定義 
*"""divisibleby(value, num)""" 
value是否可以被num整除 
*"""escaped(value)""" 
是否已轉(zhuǎn)義 
*"""even(value)""" 
是否為奇數(shù) 
*"""iterable(value)""" 
是否可以循環(huán) 
*"""lower(value)""" 
是否為小寫 
*"""none(value)""" 
是否為None 
*"""number(value)""" 
是否為數(shù)字 
*"""odd(value)""" 
是否為偶數(shù) 
*"""sameas(value, other)""" 
value是否與other為同一個對象實例 
*"""sequence(value)""" 
是否為序列 
*"""string(value)""" 
是否是字符串 
*"""undefined(value)""" 
是否未定義 
*"""upper(value)""" 
是否為大寫 

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/38034.html

相關(guān)文章

  • Just for fun——寫個爬蟲抓取whois信息

    摘要:代碼需要的字段模仿獲取西部數(shù)碼信息域名代理模擬執(zhí)行代碼解析出錯添加代理解析出錯查詢西部數(shù)碼失敗請求西部數(shù)碼失敗生成失敗提取西部數(shù)碼數(shù)據(jù)使用結(jié)果另外這個域名是我的,有意出售。 目標(biāo)對象和過程 爬取的網(wǎng)站是西部數(shù)碼,該網(wǎng)站在https://www.west.cn/web/whois...可以查詢whois信息,通過chrome調(diào)試知道,數(shù)據(jù)是從接口:https://www.west.cn/...

    Cheng_Gang 評論0 收藏0
  • 滲透測試之全方位信息收集神器 instarecon

    摘要:功能介紹將從以下幾個方面展開滲透測試前的信息收集工作包括域名的解析結(jié)果記錄是電子郵件系統(tǒng)中的郵件交換記錄的一種另一種郵件交換記錄是記錄在協(xié)議中或記錄在協(xié)議中。的方向查詢,即通過指向的反查相關(guān)的域名信息唯一可能有點缺憾的是沒有加入暴力遍歷。 功能介紹 instarecon將從以下幾個方面展開滲透測試前的信息收集工作 1. DNS (direct, PTR, MX, NS) looku...

    DTeam 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<