28-python验证码识别、爬虫技术、信息收集以及python调用awvs

1、复习python如何识别验证码

环境:使用 ddddocr 库:pip install ddddocr

  • 基础ocr识别能力:

    主要用于识别单行文字,即文字部分占据图片的主体部分,例如常见的英数验证码等,本项目可以对中文、英文(随机大小写or通过设置结果范围圈定大小写)、数字以及部分特殊字符。

    # example.py
    import ddddocr
    
    ocr = ddddocr.DdddOcr()
    
    image = open("example.jpg", "rb").read()
    result = ocr.classification(image)
    print(result)
    

    对于部分透明黑色png格式图片得识别支持: classification 方法 使用 png_fix 参数,默认为False

     ocr.classification(image, png_fix=True)
    

    注意:只需初始化一次ddddocr,即执行ocr = ddddocr.DdddOcr()

  • 示例

    在根路径下准备好,要识别的验证码图片 index.png

    image-20250409122532386

    执行,成功识别

    image-20250409122857992

2、复习bs4库的常见用法,如何通过bs4库查找网页中的特定标签

概述:BeautifulSoup是Python的一个HTML/XML解析库,主要用于从网页中抓取数据。它提供简单的函数处理导航、搜索和修改解析树。

  • 使用方法

    1. 安装:pip install beautifulsoup4

    2. 导入:from bs4 import BeautifulSoup

    3. 创建对象:

      soup = BeautifulSoup(html_content, 'html.parser')
      

      常用解析器:html.parser(Python内置)、lxml(速度快)、html5lib(容错性好)

  • 查找特定标签的方法

    1. 直接访问标签

      soup.title  # 获取第一个<title>标签
      soup.head   # 获取第一个<head>标签
      soup.p      # 获取第一个<p>标签
      
    2. 查找所有特定标签

      # 查找所有<a>标签
      all_links = soup.find_all('a')
      
    3. 根据属性查找标签

      # 查找 class 为 "example" 的所有 <div> 标签
      div_tags = soup.find_all('div', class_='example')
      
    4. 查找嵌套标签

      # 查找 <div> 标签下的所有 <p> 标签
      div_tag = soup.find('div')
      p_tags = div_tag.find_all('p')
      for p in p_tags:
          print(p.text)
      
    5. 使用CSS选择器查找标签

      # 使用 CSS 选择器查找所有 class 为 "example" 的 <div> 标签
      div_tags = soup.select('div.example')
      

3、复习selenium爬虫的基本使用,复现登录dvwa的实验

概述:Selenium爬虫是一种利用 Selenium 框架模拟浏览器行为来抓取网页数据的爬虫技术。

环境:selenium 库:pip install selenium、ChromeDriver 和 Chrome 浏览器。

  • 基本使用

    • 打开百度并搜索测试

      from selenium import webdriver
      from selenium.webdriver.common.keys import Keys
      from selenium.webdriver.common.by import By
      
      driver = webdriver.Chrome()
      driver.get("http://www.baidu.com")	        #打开网站
      elem = driver.find_element(By.NAME, "wd")	#查找到输入框
      elem.clear()	         #清空输入框内容
      elem.send_keys("测试")	#输入“测试”
      elem.send_keys(Keys.RETURN)	#回车
      input("stop")	#停止关闭窗口
      

      运行结果如下图:

      image-20250409141349597

  • 复现登录 dvwa

    1. 使用小皮开启DVWA:http://localhost/dvwa/

    2. 查看 DVWA 源码 找到用户名与密码输入框的标签 name="username" ,另⼀个 name="password",xpath 地址(右键 > 检查 > copy > copy xpath)

      image-20250409142405093

    3. 代码实现

      • 通过程序定位标签

        #实现方法1:XPATH
        user_elem = driver.find_element(By.XPATH, '//*[@id="content"]/form/fieldset/input[1]')
        pass_elem = driver.find_element(By.XPATH, '//*[@id="content"]/form/fieldset/input[2]')
        #实现方法2
        user_elem = driver.find_element(By.NEAM,"username" )
        pass_elem = driver.find_element(By.XPATH,"password")                             
        
      • 入输账号密码

        # 清空节点默认值
        user_elem.clear()
        # 清空节点默认值
        pass_elem.clear()
        # 设置username标签节点内容为 admin
        user_elem.send_keys("admin")
        # 设置password标签节点内容为 password
        pass_elem.send_keys("password")
        
      • 点击登录

        # 获取登陆按钮节点 //*[@id="content"]/form/fieldset/p/input
        login_butten_elem = driver.find_element(By.XPATH, '//*[@id="content"]/form/fieldset/p/input')
        # 点击登陆按钮
        login_butten_elem.click()
        

        根据以上逻辑,完整代码如下

        from selenium import webdriver
        from selenium.webdriver.common.by import By
        print("Start Magedu Selenium Test Project....")
        driver = webdriver.Chrome()
        # 设置访问的地址
        driver.get("http://localhost/dvwa/")
        # 使⽤XPATH⽅式获取html标签节点,此处为获取 input 标签中名称为 username 的节点
        #user_elem = driver.find_element(By.XPATH, "//input[@name='username']")
        user_elem = driver.find_element(By.XPATH, '//*[@id="content"]/form/fieldset/input[1]')
        # 获取input标签,名称为password的节点
        #pass_elem = driver.find_element(By.XPATH, "//input[@name='password']")
        pass_elem = driver.find_element(By.XPATH, '//*[@id="content"]/form/fieldset/input[2]')
        # 清空节点默认值
        user_elem.clear()
        # 清空节点默认值
        pass_elem.clear()
        # 设置username标签节点内容为 admin
        user_elem.send_keys("admin")
        # 设置password标签节点内容为 password
        pass_elem.send_keys("password")
        # 获取登陆按钮节点
        login_butten_elem = driver.find_element(By.XPATH, '//*[@id="content"]/form/fieldset/p/input')
        # 点击登陆按钮
        login_butten_elem.click()
        # 打印User-Agent
        print(driver.execute_script("return navigator.userAgent"))
        print(driver.get_cookie("PHPSESSID"))
        input()
        # 关闭浏览器环境
        driver.close()
        
    4. 运行实现结果

      image-20250409144528584

      image-20250409144635311

4、了解scrapy爬虫的使用以及rad爬虫基本用法

scrapy爬虫

概述:Scrapy 是用 Python 实现的一个为了爬取网站数据、提取结构性数据而编写的应用框架。

  • 使用

    安装:pip install Scrapy

    • 示例:

      新建项目:在开始爬取之前,必须创建⼀个新的Scrapy项目。进入自定义的项目录中,运行下列命令:scrapy startproject mySpider

      其中, mySpider 为项目名称,可以看到将会创建一个 mySpider 文件夹,目录结构如下:

      image-20250409153916265

      创建完成后便可以开始编写爬虫项目

rad爬虫

概述:rad,全名 Radium ,名字来源于放射性元素——镭, 从一个URL开始,辐射到一整个站点空间。

环境:下载rad、新版本的chrome

  • 基本用法

    rad -t http://example.com
    

    需要手动登录的情况

    rad -t http://example.com -wait-login
    

    将爬取基本结果导出为文件

    rad -t http://example.com -text-output result.txt
    

    以上命令会将爬取到的URL输出到result.txt中 格式为 Method URL 例:GET http://example.com

    导出完整请求

    rad -t http://example.com -full-text-output result.txt
    

    导出完整请求为JSON

    rad -t http://example.com -json result.json
    

    与xray联动

    • 社区版:设置上级代理为xray监听地址 运行xray:

      xray webscan --listen 127.0.0.1:7777 --html-output proxy.html
      

      运行rad:

      rad -t http://example.com -http-proxy 127.0.0.1:7777
      
    • 高级版对 rad 进行了深度融合,下载后可以一键使用:

      xray webscan --browser-crawler http://example.com --html-output vuln.html
      

5、复习httpx工具、指纹识别工具的具体用法,识别出magedu.com采用的建站模板

httpx 工具

概述:httpx 是一个高效的 HTTP 工具包,支持多线程探测(如 Web 服务器、URL 等测试),在保证结果可靠性的同时提升速度。

  • 使用方法(安装 httpx

    httpx -h:查看所有参数用法

    • 基本探测

      httpx -title -status-code -tech-detect -u www.baidu.com
      

      -title:显示网站标题

      -sc-status-code:显示网站状态码

      -td-tech-detect :显示基于 wappalyzer 的探测网站指纹

      -u:检测目标URL地址

    • 端口探测

      httpx -title -status-code -tech-detect -p 80,443,8080 -probe -u www.baidu.com
      

      -probe:显示探测状态

    • C段探测

      httpx -u 192.168.153.1/24 -mc 200 -sc -title 1
      

      -mc-match-code:匹配返回状态码

  • 识别magedu.com采用的建站模板

    httpx -td -u magedu.com 
    

    image-20250410134302269

指纹识别工具
  • TideFinger

    概述:TideFinger,一个开源的指纹识别小工具,使用了传统和现代检测技术相结合的指纹检测方法,让指纹检测更快捷、准确

    • 使用方法(安装TideFinger

      • 安装第三方依赖 pip install -r requirements.txt

      • 使用 python TideFinger.py

        image-20250410141835527

    • 识别magedu.com采用的建站模板

      python TideFinger.py -u https://www.magedu.com -d 1
      

      image-20250410142538388

  • xapp

    • 使用方法(下载xapp

    • 下载指纹规则集

    • 识别magedu.com采用的建站模板

      xapp -r "./finger/**/*.yml" -t https://www.magedu.com
      

      image-20250410144013682

6、复习使用python调用awvs的方法及代码实现

  1. 安装启动awvs

    docker pull secfa/docker-awvs
    docker run -d -p 3443:3443 --cap-add LINUX_IMMUTABLE --name awvs secfa/docker-awvs
    
  2. 下载调用awvs的python源码

  3. 对源码进行基础配置

    # api
    api_key = "xxxxxxxxxxxxxxx"
    #下面信息在Administrator > Profile 模块可以看见
    # 填写 AWVS 主⻚ URL
    awvs_url = "https://10.0.0.151:13443/"
    # 填写 AWVS 登陆账户 email
    awvs_email = "admin@admin.com"
    
  4. 运行脚本,测试选择模式3

    image-20250410170615391

    回到awvs,发现添加成功,代码实现成功

    image-20250410170528276

posted @ 2025-04-10 17:20  荔枝在敲诈  阅读(59)  评论(0)    收藏  举报