首页 > 其他分享 >使用无头浏览器脚本能处理动态加载的JS文件

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

时间:2025-01-23 16:10:57浏览次数:1  
标签:webdriver 浏览器 url js import JS options 加载

无头浏览器
爬虫
需求:
信息搜集,获取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)
  1. 从中提取接口
    过滤chunk

标签:webdriver,浏览器,url,js,import,JS,options,加载
From: https://www.cnblogs.com/NBeveryday/p/18687945/jspachong

相关文章

  • YOLO训练自己的分割数据集,使用labelme标注的分割数据集产生的.json文件转化为YOLOv8识
    将labelme标注的分割数据集,转化为YOLOv8识别的.txt文件数据集分为两部分,第一部分先将labelme标注的分割数据集转化为coco格式的文件,第二步,在将coco格式的JSON文件转化为yolo格式的txt文件第一部分:将labelme标注的分割数据集转化为coco格式的文件第一步首先建立一个文件夹myd......
  • 如何在谷歌浏览器中实现电子邮件整合
    在谷歌浏览器中实现电子邮件整合的方法多种多样,以下是一些具体方法:1.使用Gmail作为主要邮箱工具登录与使用:在谷歌浏览器中输入“gmail.com”,登录自己的Gmail账号,即可直接利用浏览器界面查看、发送和回复邮件。标签页管理:打开多个标签页,通过不同标签页切换不同的邮箱账户或......
  • vue template 转 jsx 写法及TS类型应用
    vue的响应式数据+jsx开发体验简直不要太好,心智负担确实小,简直完爆react(纯属个人暴论),不足的地方就是生态了,这点确实比不过react。本文更侧重于TS类型的写法,毕竟初次接触vuejsx时,实在对其TS类型声明很不顺手。要说vue模板语法哪些API不能在jsx中使用,也就是一些......
  • 【Html.js——功能实现】为图片添加景深效果(蓝桥杯真题-2161)【合集】
    目录......
  • JSP拼车系统1fxmu(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景与意义随着城市化进程的加快和交通拥堵问题的日益严重,拼车作为一种共享出行的方式,逐渐成为缓解交通压力、降低出行成本的有效途径。拼......
  • JSP暖暖猫窝系统a856q--程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景与意义随着宠物经济的兴起,宠物猫已成为许多家庭的重要成员。然而,传统的猫窝已无法满足现代宠物猫的生活需求。因此,开发一款智能、舒适......
  • JS宏进阶:协程
    在JavaScript中,协程(Coroutine)是一种特殊的函数,它能够在执行到某个点时暂停,并在以后恢复执行。协程的概念在JavaScript中主要通过生成器函数(Generator)和async/awite语法来实现。下面是这两种方式的详细阐述。一、协程的基本概述协程是一种比线程更加轻量级的存在。它允许函数......
  • JS宏进阶:模块化编程
    理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块。然而,理想很丰满,现实很骨感,特别是在WPS编辑器中,加载别人写好的模块需要用eval方法。很不安全,WPS官方又没有开发出独特的加载方式,下面是一个模块的加载示例:varCryptoJS;//.MD5(inputString).toStr......
  • ASP.NET Core 快速轻量级的浏览器检测和设备检测库
    在.NETFramework4.7中那样,通过HttpContext.Request的Browser属性轻松获取发起HTTP请求的浏览器信息,ASP.NETCore并未直接提供这一功能,现在有了BrowserDetector这个强大的NuGet包,你可以在ASP.NETCore应用中轻松实现浏览器、设备类型以及操作系统的检测。Browser......
  • JSP农副及衍生产品交易系统3qxs1--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景与意义随着互联网技术的发展,电子商务已成为推动各行各业数字化转型的重要力量。在农副产品领域,传统的交易模式存在信息不对称、交易效......