【攻防技术】信息收集之公众号自动收集
字数 953 2025-08-10 22:08:13

微信公众号自动化信息收集技术详解

0x00 信息收集的重要性

渗透测试的本质在于信息收集,特别是在边界突破阶段,信息收集是前置条件。经过多年实战攻防积累,信息收集已形成标准化流程,自动化信息收集工具的建设成为趋势。

关键点

  • 防守方通常将主要力量集中在边界Web系统上
  • 移动端资产(如微信公众号)往往成为防守薄弱环节
  • 自动化收集能提高效率并形成系统化资产清单

0x01 企业信息查询方法

常用企业信息查询平台

  • 天眼查
  • 企查查
  • 爱企查
  • 启信宝
  • 小蓝本

数据获取方式

1. 前端爬取

  • 优点:免费
  • 缺点:
    • 反爬虫机制严格(验证码、频率限制)
    • 技术门槛较高(需绕过反爬措施)

2. API接口调用

  • 优点:
    • 使用方便
    • 免去反爬对抗
  • 缺点:需要付费(成本随查询量增加)

天眼查API示例代码

def GetWechatOfficialAccount(self, keyword, pageNum=1, pageSize=20):
    url = "http://open.api.tianyancha.com/services/open/ipr/publicWeChat/2.0?keyword=%s&pageNum=%s&pageSize=%s" % (keyword, pageNum, pageSize)
    headers = {'Authorization': {天眼查Token}}
    try:
        response = requests.get(url, headers=headers)
    except Exception as err:
        logger.error(str(err))
        return None
    data = response.json()

0x02 搜索引擎收集方法

搜狗微信搜索特点

  • 与微信有合作关系,可直接搜索公众号
  • 结果数量通常比企业信息平台更多
  • 基础搜索URL:
    https://weixin.sogou.com/weixin?type=1&s_from=input&query={关键字}&ie=utf8&_sug_=n&_sug_type_=&page={页数}
    

反爬虫机制与绕过方法

常见反爬对抗策略

  1. 硬钢验证码(OCR识别等)
  2. 更换IP(代理池)
  3. 修改请求cookie绕过

搜狗反爬特点

  • 通过HTTP请求头中的特殊cookie字段实现频率检测
  • 关键cookie字段:SNUID

搜狗cookie获取流程

  1. 访问搜狗视频页面(频率限制较宽松):
    https://v.sogou.com/?forceredirect=2&ie=utf8
    
  2. 从响应中提取新的SNUID
  3. 更新请求头中的cookie

完整实现代码

import urllib.parse
import requests
from lxml import etree
from fake_useragent import UserAgent
import time, sys, os, math, json, random

# 生成随机UA
ua = UserAgent(browsers=["chrome", "edge", "internet explorer", "firefox", "safari"])

global_headers = {
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
    # ...其他标准请求头...
    "Cookie": "SUID=10800C75492CA20A000000006145E582; SUV=1641002706609755; ssuid=8628497906; IPLOC=CN1200; cuid=AAERmghDQwAAAAqgHl6xlgAASQU=; ABTEST=0|1684314665|v1; JSESSIONID=aaaXmp_IROcwx7NZRDDEy; PHPSESSID=snjidnapfi0p1lsac6jgb8huu1; SNUID=8A0A5AACD7DD2C295C858FD2D8397552; ariaDefaultTheme=undefined",
    # ...其他标准请求头...
    "User-Agent": ua.random
}

def Chinese2Url(chinese_context):
    return urllib.parse.quote(chinese_context)

def GetWechatofficialAccount(keyword_url, headers=global_headers, page=1):
    url = "https://weixin.sogou.com/weixin?query="+keyword_url+"&_sug_type_=&s_from=input&_sug_=n&type=1&ie=utf8&page=" + str(page)
    xpath_get_official_account = "//li/div/div[2]/p[1]/a/text()"
    
    rep = requests.get(url, headers=headers)
    if "请输入验证码" in rep.text:
        headers = GetNewCookieHeaders()
        rep = requests.get(url, headers=headers)
    
    global global_headers
    global_headers = headers
    
    response = rep.text.replace("<em><!--red_beg-", "").replace("<!--red_end--></em>", "")
    etree_obj = etree.HTML(response)
    wechat_official_account = etree_obj.xpath(xpath_get_official_account)
    
    if(' 1:
        page = 2
        while (page <= page_num):
            wechat_official_account = sum([wechat_official_account, GetWechatofficialAccount(keyword_url, headers=global_headers, page=page)], [])
            print("page = %s" % page)
            page += 1
    
    wechat_official_account = list(set(wechat_official_account))
    print(wechat_official_account)

0x03 技术要点总结

  1. 随机User-Agent:使用fake_useragent库生成多样化请求头
  2. 中文编码处理:使用urllib.parse.quote进行URL编码
  3. XPath解析:精准定位页面中的公众号名称
  4. 反爬绕过机制
    • 检测"请输入验证码"提示
    • 自动获取新SNUID并更新请求头
  5. 分页处理:自动计算总页数并遍历所有结果
  6. 结果去重:使用set()去除重复公众号名称

0x04 优化建议

  1. 代理池集成:结合IP代理服务增强反爬能力
  2. 验证码识别:作为SNUID失效的备用方案
  3. 结果存储:将收集结果保存到数据库或文件
  4. 异常处理:增强对各种网络异常和反爬措施的容错能力
  5. 性能优化:引入异步请求提高收集效率

通过以上方法,可以构建一个稳定高效的微信公众号自动化收集工具,为渗透测试和信息收集工作提供有力支持。

微信公众号自动化信息收集技术详解 0x00 信息收集的重要性 渗透测试的本质在于信息收集,特别是在边界突破阶段,信息收集是前置条件。经过多年实战攻防积累,信息收集已形成标准化流程,自动化信息收集工具的建设成为趋势。 关键点 : 防守方通常将主要力量集中在边界Web系统上 移动端资产(如微信公众号)往往成为防守薄弱环节 自动化收集能提高效率并形成系统化资产清单 0x01 企业信息查询方法 常用企业信息查询平台 天眼查 企查查 爱企查 启信宝 小蓝本 数据获取方式 1. 前端爬取 优点:免费 缺点: 反爬虫机制严格(验证码、频率限制) 技术门槛较高(需绕过反爬措施) 2. API接口调用 优点: 使用方便 免去反爬对抗 缺点:需要付费(成本随查询量增加) 天眼查API示例代码 0x02 搜索引擎收集方法 搜狗微信搜索特点 与微信有合作关系,可直接搜索公众号 结果数量通常比企业信息平台更多 基础搜索URL: 反爬虫机制与绕过方法 常见反爬对抗策略 硬钢验证码(OCR识别等) 更换IP(代理池) 修改请求cookie绕过 搜狗反爬特点 通过HTTP请求头中的特殊cookie字段实现频率检测 关键cookie字段: SNUID 搜狗cookie获取流程 访问搜狗视频页面(频率限制较宽松): 从响应中提取新的 SNUID 值 更新请求头中的cookie 完整实现代码 0x03 技术要点总结 随机User-Agent :使用fake_ useragent库生成多样化请求头 中文编码处理 :使用urllib.parse.quote进行URL编码 XPath解析 :精准定位页面中的公众号名称 反爬绕过机制 : 检测"请输入验证码"提示 自动获取新SNUID并更新请求头 分页处理 :自动计算总页数并遍历所有结果 结果去重 :使用set()去除重复公众号名称 0x04 优化建议 代理池集成 :结合IP代理服务增强反爬能力 验证码识别 :作为SNUID失效的备用方案 结果存储 :将收集结果保存到数据库或文件 异常处理 :增强对各种网络异常和反爬措施的容错能力 性能优化 :引入异步请求提高收集效率 通过以上方法,可以构建一个稳定高效的微信公众号自动化收集工具,为渗透测试和信息收集工作提供有力支持。