使用无头浏览器脚本能处理动态加载的JS文件

无头浏览器
爬虫
需求:
信息搜集,获取js文件,然后寻找chunk,找到隐藏的接口
实现:

  1. 爬取站点JS脚本
    pip install selenium webdriver-manager
import os
import time
import requests
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager

def download_js_files(url, output_dir):
    # 创建输出目录
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)

    # 设置无头浏览器选项
    options = Options()
    options.add_argument('--headless')  # 无头模式
    options.add_argument('--disable-gpu')  # 禁用 GPU 加速
    options.add_argument('--no-sandbox')  # 禁用沙盒模式
    options.add_argument('--disable-dev-shm-usage')  # 禁用 /dev/shm

    # 初始化 WebDriver
    service = Service(ChromeDriverManager().install())
    driver = webdriver.Chrome(service=service, options=options)

    # 打开网页
    driver.get(url)

    # 等待页面加载完成(可以根据需要调整等待时间)
    time.sleep(5)

    # 获取所有 script 标签
    script_tags = driver.find_elements(By.TAG_NAME, 'script')

    # 下载每个 JS 文件
    for script in script_tags:
        js_url = script.get_attribute('src')
        if js_url:
            if not js_url.startswith('http'):
                # 处理相对路径
                js_url = requests.compat.urljoin(url, js_url)

            # 获取文件名
            filename = os.path.basename(js_url)
            filepath = os.path.join(output_dir, filename)

            # 下载 JS 文件
            response = requests.get(js_url)
            response.raise_for_status()

            with open(filepath, 'wb') as f:
                f.write(response.content)

            print(f"下载完成: {js_url} -> {filepath}")

    # 关闭浏览器
    driver.quit()

if __name__ == "__main__":
    url = input("请输入要爬取的网页 URL: ")
    output_dir = input("请输入保存 JS 文件的目录: ")
    download_js_files(url, output_dir)

image

  1. 从中提取接口
    过滤chunk
posted @ 2025-01-23 16:02  菜就多练forever  阅读(53)  评论(0)    收藏  举报