本期任务:使用脚本借助搜索引擎搜集网站子域名信息。
准备工具:python安装包、pip、http请求库:requests库、正则库:re库。
问题引入:
1. 何为子域名?
答:子域名是相对于网站的主域名的。比如百度的主域名为:baidu.com,这是一个顶级域名,而在顶级域名前由”.”隔开加上不同的字符,比如zhidao.baidu.com,那么这就是一个二级域名,同理,继续扩展主域名的主机名,如club.user.baidu.com,这就是一个三级域名,依次类推。
2. 手动收集子域名是怎样的一种过程?
举个例子,比如我们要收集qq.com这个主域名,在百度搜索引擎能够搜索到的所有子域名。
首先,使用搜索域名的语法 搜索~
搜索域名语法:site:qq.com
然后,在搜索结果中存在我们要的子域名信息,我们可以右键,查看元素,复制出来。
3. 如何用python替代手工的繁琐操作?
其实就是将手工收集用代码来实现自动化,手工收集的步骤:
收集器制作开始:
1. 发起一个搜索的http请求
请求我们使用python的第三方http库,requests
需要额外安装,可以使用pip进行安装 pip install requests
requests 基本使用-example:
help(requests) 查看requests的帮助手册 。
dir(requests) 查看requests这个对象的所有属性和方法 。
requests.get(‘http://www.baidu.com‘)发起一个GET请求。
好了,补充基础知识,我们来发起一个请求,并获得返回包的内容。
#-*-coding:utf-8-*-
import requests #导入requests库
url=’http://www.baidu.com/s?wd=site:qq.com‘ #设定url请求
response=requests.get(url).content #get请求,content是获得返回包正文
print response
返回包的内容实在太多,我们需要找到我们想要的子域名,然后复制出来。
从查看元素我们可以发现,子域名被一段代码包裹着,如下:
style=”text-decoration:none;”>chuangshi.qq.com/ </a>
2. 正则表达式——(.*?) 闪亮登场:
正则 规则:style=”text-decoration:none;”>(.*?)/
正则表达式难吗?难。复杂吗?挺复杂的。
然而最简单的正则表达式,我们把想要的数据用(.*?)来表示即可。
re 基本使用-example:
假设我们要从一串字符串’123xxIxx123xxLikexx123xxStudyxx’取出ILike Study,我们可以这么写:
eg=’123xxIxx123xxLikexx123xxStudyxx’
print re.findall(‘xx(.*?)xx’,eg)
#打印结果
['I', 'Like', 'Study']
基于上述例子,依葫芦画瓢也可以获取子域名了。
#-*-coding:utf-8-*-
import requests #导入requests库
import re #导入re库
url=’http://www.baidu.com/s?wd=site:qq.com‘ #设定url请求
response=requests.get(url).content #get请求,content是获得返回包正文
#重点,重点,下面这段代码~
subdomain=re.findall(‘style=”text-decoration:none;”>(.*?)/’,response)
print subdomain
结果:
['www.qq.com', 'chuangshi.qq.com', '1314.qq.com', 'lol.qq.com', 'tgp.qq.com', 'open.qq.com', 'https:', 'ac.qq.com']
3. 翻页的处理
上面获得的子域名,仅仅只是返回结果的第一页内容,如何获取所有页面的结果?
key=qq.com
#为url添加页码:
url=”http://www.baidu.com.cn/s?wd=site:“+key+”&cl=3&pn=0″
url=”http://www.baidu.com.cn/s?wd=site:“+key+”&cl=3&pn=10″
url=”http://www.baidu.com.cn/s?wd=site:“+key+”&cl=3&pn=20″
……
#pn=0为第一页,pn=10为第2页,pn=20为第3页…
天啊,100页我要写100个url吗?当然不是,循环语句解决你的困扰。
for i in range(100): #假设有100页
i=i*10
url=”http://www.baidu.com.cn/s?wd=site:“+key+”&cl=3&pn=%s”%i
4. 重复项太多?想去重?
基础知识:
python的数据类型: set
set持有一系列的元素,但是set的元素没有重复项,且是无序的。
创建set的方式是调用set()并传入一个list,list的元素将作为set的元素。
sites=list(set(sites)) #用set实现去重
正则表达式匹配得到的是一个列表list,我们调用set()方法即可实现去重。
5. 完整代码&&总结
下面是百度搜索引擎爬取子域名的完整代码。
#-*-coding:utf-8-*-
import requests
import re
key=”qq.com”
sites=[]
match=’style=”text-decoration:none;”>(.*?)/’
for i in range(48):
i=i*10
url=”http://www.baidu.com.cn/s?wd=site:“+key+”&cl=3&pn=%s”%i
response=requests.get(url).content
subdomains=re.findall(match,response)
sites += list(subdomains)
site=list(set(sites)) #set()实现去重
print site
print “The number of sites is %d”%len(site)
for i in site:
print i
结果截图:
小小心得:
其实子域名挖掘就是一个小小的爬虫,只不过我们是用百度的引擎来爬取,不过呢,用bing引擎爬去的数据量会比百度更多,所以建议大家使用bing的引擎,代码的编写方法和百度的大同小异就不放代码了,给个小tip,bing搜索域名用的是domain:qq.com这个的语法哦,好了,本期的手把手教你制作信息收集器就介绍到这里,我们下期见,关于bing的脚本就请有需要的同学留言吧~
文章下载地址链接:http://pan.baidu.com/s/1dFLEAdz
密码:oykk
猜你还喜欢
- 12-09Kali Linux字典生成工具Cewl使用全指南
- 01-12开源安全情报引擎Critical Stack使用入门
- 05-02分享一款基于Pocsuite的漏洞扫描系统
- 01-04经验分享 | Burpsuite抓取非HTTP流量
- 05-02Burpsuit结合SQLMapAPI产生的批量注入插件
- 11-25工具 | 手把手教你信息收集之子域名收集器
- 11-05工具分享 | Maltego4.0.11中文汉化版
- 12-08burpsuite_pro_v1.7.11破解版(含下载地址)
- 05-30最新BurpSuite 1.7.32 破解版[注册机]下载【无后门版】
- 07-29IBM Rational AppScan 9.0.3 (含下载)
- 最新文章
- 随机文章
-
- 干货!!!图片后门
- 俄国黑客操控法国大选?马克隆团队以信息污染对抗
- WanaCrypt0r勒索蠕虫完全分析报告
- 远控木马中的VIP:盗刷网购账户购买虚拟礼品卡
- 比WannaCry还要可怕的勒索病毒UIWIX?应对措施看这里
- 暗链隐藏的N种姿势
- 没有钱的安全部之系统日志安全
- Joomla!3.7.0 SQL注入攻击漏洞分析
- 国际知名“青少年黑客”盘点
- 最全DOS的CMD命令,程序员必会
- 构建一个高交互型的难以发现的蜜罐
- PinDemonium通用动态脱壳工具
- 文件操作漏洞面面观
- 如何使用谷歌Chrome浏览器窃取Windows密码
- Web开发者安全速查表
- 网络安全-常见漏洞与分析
- 存储型XSS安全漏洞分析
- 浅谈跨站脚本攻击与防御
- 下一个“永恒之蓝”6月见?Shadow Brokers组织宣布将公开更多0day漏洞!
- 使用Python写一个转存纯真IP数据库的脚本
- 热门文章
-
- 八年专业安全团队承接渗透入侵维护服务
- Emlog黑客站模板“Milw0rm”发布
- Stuxnet纪录片-零日 Zero.Days (2016)【中文字幕】
- SQLMAP的注入命令以及使用方法
- 白帽故事汇:网络安全战士从来不是「男生」的专利
- 编辑器漏洞手册
- web安全之如何全面发现系统后台
- 常见Web源码泄露总结
- 深入理解JAVA反序列化漏洞
- cmseasy前台无需登录直接获取敏感数据的SQL注入(有POC证明)
- 网站后台登陆万能密码
- 黑麒麟2016渗透培训系列教程
- 破解emlog收费模板“Begin”
- 那些强悍的PHP一句话后门
- Android平台渗透测试套件zANTI v2.5发布(含详细说明)
- 渗透工具BackTrack与KaliLinux全套视频教程
- Python列为黑客应该学的四种编程语言之一 初学者该怎么学
- CVE-2017-11882漏洞复现和利用
- 恶意程序报告在线查询工具
- 利用Thinkphp 5缓存漏洞实现前台Getshell
- 文章标签
-