🗒️py渗透脚本学习02-子域名收集
2023-10-31
| 2023-11-3
字数 895阅读时长 3 分钟
type
Post
status
Published
date
Oct 31, 2023
slug
scripts/python02
summary
python脚本爬取网站子域名
tags
脚本编程
category
网络安全
icon
password
😀
使用bing搜索,搜索baidu.com的子域名,使用python爬虫爬取关键信息
安装相关库:
pip install requests
pip install lxml

实现代码及其解释

注意:此代码不包含分页处理逻辑
使用127.0.0.1:8080的代理只是因为burpsuite好观察数据包
执行结果:
notion image
这段代码的主要目的是从给定的URL列表中提取出百度的子域名,并将它们存储在一个列表中。下面是详细的逐行解释:
  1. import requests - 导入Python的requests库,用于发送HTTP请求。
  1. from lxml import etree - 从lxml库导入ElementTree模块,用于解析HTML。
  1. import re - 导入Python的正则表达式模块。
  1. url = "https://cn.bing.com/search?pglt=41&q=domain%3Abaidu.com&cvid=33b7499764ce40b7a4de8398a5ef8852&gs_lcrp=EgZjaHJvbWUyBggAEEUYOdIBBzQ4NmowajGoAgCwAgA&FORM=ANNTA1&PC=U531" - 设置要请求的URL。
  1. hearders = {...} - 定义一个字典,包含一个"User-Agent"头部,模拟一个浏览器的请求。
  1. proxy = {"http": "127.0.0.1:8080", "https": "127.0.0.1:8080"} - 设置HTTP和HTTPS的代理服务器地址。
  1. html = requests.get(url, headers=hearders, proxies=proxy, verify=False).text - 使用requests库发送GET请求到指定的URL,并获取返回的HTML内容。
  1. subdomain_list = [] - 初始化一个空列表,用于存储提取到的子域名。
  1. e = etree.HTML(html) - 使用lxml库将获取到的HTML内容解析为一个ElementTree对象。
  1. urls = e.xpath('//*[@id="b_results"]/li/div[1]/a/div[2]/div[2]/div/cite/text()') - 使用XPath表达式从解析后的HTML中提取出所需的数据。
  1. 接下来的循环体是为了遍历上一步获取到的URL列表。
  1. subdomain = re.findall("https://(.*?.baidu.com)", url)[0] - 使用正则表达式从URL中提取出子域名,并添加到subdomain_list列表中。
  1. print(subdomain_list) - 打印存储子域名的列表。
需要注意的是,这段代码在处理异常时使用了pass语句,这意味着如果出现异常,代码不会停止执行,而是简单地忽略异常并继续执行下一个循环迭代。在实际应用中,可能需要更详细地处理异常,以便更好地管理和恢复错误情况。

脚本编写逻辑解释

  1. 在浏览器中进行bing搜索domain:baidu.com获取完整的url写入参数
    1. 这个写法是搜索域名的google hacker写法
  1. 关于是否需要cookie,referer,ua可以通过浏览器f12中的请求包慢慢试
    1. 通过burp试,全部确定后再写到代码
完成前俩步就已经获取了搜索domain:baidu.com后页面的源码
 
  1. xpath解析
    1. 浏览器自动会生成xpath,只需要懂基础的即可,一般不需要自己手动写xpath,具体是以下这样
      notion image
      这种使用的前提是响应内容必须于网站url一模一样,在f12网络的请求里自行查看
      我在此处提取了俩个url的xpath,分别是:
      //[@id="b_results"]/li[3]/div[1]/a/div[2]/div[2]/div/cite //[@id="b_results"]/li[5]/div[1]/a/div[2]/div[2]/div/cite
      所以就很简单了,xpath规则是
      //[@id="b_results"]/li/div[1]/a/div[2]/div[2]/div/cite/text()
  1. 正则处理url提取子域名
    1. 这个自己到在线正则表达式里调吧!!!!!!
       
  • 脚本编程
  • py渗透脚本学习记录01py03-文件扫描,帐密暴力破解
    Loading...