python信息收集之子域名

本文介绍了使用Python进行子域名收集的三种主要方法:字典爆破、搜索引擎利用及第三方网站查询。通过具体代码示例展示了如何运用百度搜索引擎API进行子域名抓取,同时涵盖了Python列表与字典的基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python信息收集之子域名

主要是以下3种思路:

  1. 字典爆破
  2. 搜索引擎
  3. 第三方网站

0x00 背景知识

list

Python内置的一种数据类型是列表:list是一种有序的集合。

>>> names = ['mark','sam','rachel']
>>> names[0]      //使用索引访问列表元素
'mark'
>>> names[1]
'sam'
>>> names[2]
'rachel'
>>> names[-1]
'rachel'
>>> names[-2]
'sam'
>>> names[-3]
'mark'
>>> names[:]
['mark', 'sam', 'rachel']
>>> names[0:3]
['mark', 'sam', 'rachel']
>>> len(names)
3
>>> list1 = [1,2,3]
>>> list2 = [4,5,6]
>>> list3 = list1 + list2
>>> list3
[1, 2, 3, 4, 5, 6]
>>> names.append('angel')    //追加元素到末尾
>>> names
['mark', 'sam', 'rachel', 'angel']
>>> names.insert(0,'insertname')    //插入元素到指定索引
>>> names
['insertname', 'mark', 'sam', 'rachel', 'angel']
>>> names.pop()     //默认删除list末尾元素
'angel'
>>> names
['insertname', 'mark', 'sam', 'rachel']
>>> names.pop(0)    //删除指定索引位置元素
'insertname'
>>> names
['mark', 'sam', 'rachel']
>>> names[0] = 'xiaoyuer'     //元素替换
>>> names
['xiaoyuer', 'sam', 'rachel']
>>>
dict

python内置了字典:dict全称dictionary,使用键-值(key-value)存储,具有极快的查找速度。

>>> d = {'name':'mark', 'age':18}
>>> d['name']
'mark'
>>> d['age']
18

操作键(key)

for key in dic.keys():

操作值(value)

for value in dic.values():

操作键(key)值(value)

for k,v in dic.items():

整数

>>> dic = {'age': 18}
>>> for i in range(5):
...         v = i
...         dic['age'] = v
...         print dic
...
{'age': 0}
{'age': 1}
{'age': 2}
{'age': 3}
{'age': 4}

字符串

>>> with open('/Users/markzhang/Desktop/user.txt','r') as f:
...     lines = f.readlines()
...     for line in lines:
...         line = line.strip('\n')
...         dic['name'] = line
...         print dic
...
{'name': 'name1'}
{'name': 'name2'}
{'name': 'name3'}
set

set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。

正则表达式
  1. 懒惰匹配
.*?    ----匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复
  1. 后向引用
()     ----匹配这个子表达式的文本

0x01 字典爆破

自定义加载字典爆破

0x02 搜索引擎

  1. 百度
# -*- coding: utf-8 -*-
import requests
import re

url = 'http://www.baidu.com/s?wd=site%3Abaidu.com'
data = {'pn':0}

for v in data.values():
    domains = []
    for i in range(4):
        i = i * 10
        v = i
        data['pn'] = v
        res = requests.get(url,params=data).text.encode('utf-8')
        #正则
        pattern = re.compile(r'style="text-decoration:none;">(.*?)/&nbsp')
        domain = re.findall(pattern,res)
        domains += set(domain)

print domains
print '\nthe number of domain is %d' %len(domains)
for num in domains:
    print num 
  1. 必应
  2. 谷歌

0x03 第三方网站

转载于:https://www.cnblogs.com/mark-zh/p/10309876.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值