• SEO文章推广! 合作联系qq:122325244 正式全面改版 !免费SEO地址:https://www.seozhan.cn/tool 站长QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏SEO站长博客吧

工具 手把手教你信息收集之子域名收集器

脚本编程 SEO站长博客 2个月前 (08-01) 47次浏览 未收录 0个评论

摘要

本期任务:使用脚本借助搜索引擎搜集网站子域名信息。

准备工具:python 安装包、pip、http 请求库:requests 库、正则库:re 库。

问题引入:

1. 何为子域名

答:子域名是相对于网站的主域名的。比如百度的主域名为:,这是一个顶级域名,而在顶级域名前由”.”隔开加上不同的字符,比如,那么这就是一个二级域名,同理,继续扩展主域名的主机名,如,这就是一个三级域名,依次类推。

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(‘‘)发起一个 GET 请求。

好了,补充基础知识,我们来发起一个请求,并获得返回包的内容。

#-*-coding:utf-8-*-

import requests #导入 requests 库

url=’‘ #设定 url 请求

print response

返回包的内容实在太多,我们需要找到我们想要的子域名,然后复制出来。

从查看元素我们可以发现,子域名被一段代码包裹着,如下:

style=”text-decoration:none;” </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=’‘ #设定 url 请求

#重点,重点,下面这段代码~

subdomain=re.findall(‘style=”text-decoration:none;”>(.*?)/’,response)

print subdomain

结果:

[

3. 翻页的处理

上面获得的子域名,仅仅只是返回结果的第一页内容,如何获取所有页面的结果?

#为 url 添加页码:

url=”“+key+”cl=3pn=0″

url=”“+key+”cl=3pn=10″

url=”“+key+”cl=3pn=20″

……

#pn=0 为第一页,pn=10 为第 2 页,pn=20 为第 3 页…

天啊,100 页我要写 100 个 url 吗?当然不是,循环语句解决你的困扰。

for i in range(100): #假设有 100 页

i=i*10

url=”“+key+”cl=3pn=%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=”

sites=[]

match=’style=”text-decoration:none;”>(.*?)/’

for i in range(48):

i=i*10

url=”“+key+”cl=3pn=%s”%i

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 搜索域名用的是个的语法哦,好了,本期的手把手教你制作信息收集器就介绍到这里,我们下期见,关于 bing 的脚本就请有需要的同学留言吧~

文章下载地址链接:

密码:oykk weinxin


SEO站长博客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:工具 手把手教你信息收集之子域名收集器
喜欢 (0)
[h4ck3st@126.com]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址