摘要:附录内建检查器对象是否可调用对象是否已定义是否可以被整除是否已转义是否为奇数是否可以循环是否为小写是否为是否为数字是否为偶数是否与为同一个对象实例是否为序列是否是字符串是否未定义是否为大写
flask基础实现不再赘述,不了解的同学可以通过官方文档学习
http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-iii-web-forms
在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 创建Whois信息模板新建一个whois.html文件,代码如下:
GetWhois
这里只为做实例,所以没有设置继承模板,如果是一个整体的项目,建议通过继承实现,保持风格一致。
实例通过whois模块得到相关信息,返回的结果是一个字典,如图所示
所以用了以下jinja2语句将信息输出到网页上
{{ key }} : | {{ info[key] }} |
在views.py中添加实现代码
@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函数的实现,在GetWhois.py中实现,具体为
#!/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,程序到这里基本可以实现需要的内容了,查询效果如图
我们看到输出到网页时,如status、domain_name等字段的值是列表,是否可以将其进一步分解输出呢,答案是可行的。
我们可以利用jinja2的内建检查器来判断参数是否为list,若是,则分解打印
于是将whois.html修改成
{{ key }} : |
{% if info[key] is sequence %}
{% for value in info[key] %}
{{ value }} {% endfor %} {% else %} {{ info[key] }} {% endif %} |
执行后看效果图,What The Fuck!!!字符串也被分解打印了。
再次修改,判断为字符串,则先打印,然后再去判断是否为List
{{ key }} : |
{% if info[key] is string %}
{{ info[key] }}
{% elif info[key] is sequence %}
{% for value in info[key] %}
{{ value }} {% endfor %} {% else %} {{ info[key] }} {% endif %} |
终于乖乖的出来了我们期盼的结果
实例写完后,目录结构为
|____app | |______init__.py | |____forms.py | |____GetWhois.py | |____static | | |____images | | | |____logo.png | |____templates | | |____whois.html | |____views.py |____config.py |____run.py |____tmp
学习了flask的form基本实现,jinja2的部分语法。
附录 内建检查器:
*"""callable(object)""" 对象是否可调用 *"""defined(value)""" 对象是否已定义 *"""divisibleby(value, num)""" value是否可以被num整除 *"""escaped(value)""" 是否已转义 *"""even(value)""" 是否为奇数 *"""iterable(value)""" 是否可以循环 *"""lower(value)""" 是否为小写 *"""none(value)""" 是否为None *"""number(value)""" 是否为数字 *"""odd(value)""" 是否为偶数 *"""sameas(value, other)""" value是否与other为同一个对象实例 *"""sequence(value)""" 是否为序列 *"""string(value)""" 是否是字符串 *"""undefined(value)""" 是否未定义 *"""upper(value)""" 是否为大写
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/38034.html
摘要:代码需要的字段模仿获取西部数码信息域名代理模拟执行代码解析出错添加代理解析出错查询西部数码失败请求西部数码失败生成失败提取西部数码数据使用结果另外这个域名是我的,有意出售。 目标对象和过程 爬取的网站是西部数码,该网站在https://www.west.cn/web/whois...可以查询whois信息,通过chrome调试知道,数据是从接口:https://www.west.cn/...
摘要:功能介绍将从以下几个方面展开渗透测试前的信息收集工作包括域名的解析结果记录是电子邮件系统中的邮件交换记录的一种另一种邮件交换记录是记录在协议中或记录在协议中。的方向查询,即通过指向的反查相关的域名信息唯一可能有点缺憾的是没有加入暴力遍历。 功能介绍 instarecon将从以下几个方面展开渗透测试前的信息收集工作 1. DNS (direct, PTR, MX, NS) looku...
阅读 2478·2021-11-18 10:02
阅读 1916·2021-11-09 09:45
阅读 2285·2021-09-26 09:47
阅读 973·2021-07-23 10:26
阅读 1017·2019-08-30 15:47
阅读 3329·2019-08-30 15:44
阅读 924·2019-08-30 15:43
阅读 843·2019-08-29 13:50