Greasy Fork

Greasy Fork is available in English.

网页输入关键词提取链接列表

提取网页中包含指定关键词的所有链接,并提供复制功能

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         网页输入关键词提取链接列表
// @namespace    http://your-namespace/
// @version      6.0
// @description  提取网页中包含指定关键词的所有链接,并提供复制功能
// @match        *://*/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
  // 创建悬浮按钮
  const floatingButton = document.createElement('div');
  floatingButton.id = 'extractorButton';
  floatingButton.style = `
    position: fixed;
    top: 20px;
    right: 20px;
    z-index: 999999;
    background: #4CAF50;
    color: white;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    padding: 10px 20px;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
    display: flex;
    align-items: center;
    gap: 8px;
  `;
  floatingButton.innerHTML = `
    <span>🔍 提取链接</span>
  `;
  floatingButton.addEventListener('click', () => {
    // 获取关键词
    const keyword = prompt('请输入你要搜索的关键词(默认:airlift):',
      localStorage.getItem('linkKeyword') || 'airlift');
    if (!keyword) {
      alert('请输入关键词!');
      return;
    }
    localStorage.setItem('linkKeyword', keyword);

    // 提取链接
    const links = Array.from(document.querySelectorAll('a[href]'))
      .filter(link => {
        const text = link.textContent.toLowerCase();
        return text.includes(keyword.toLowerCase());
      })
      .map(link => link.href);

    // 创建结果窗口
    if (links.length > 0) {
      createOutputWindow(links);
    } else {
      alert(`未找到包含 "${keyword}" 的链接!`);
    }
  });

  // 将按钮添加到页面
  document.body.appendChild(floatingButton);

  // 创建结果窗口函数
  function createOutputWindow(links) {
    const output = document.createElement('div');
    output.id = 'extractorOutput';
    output.style = `
      position: fixed;
      top: 70px;
      right: 20px;
      background: rgba(255, 255, 255, 0.9);
      padding: 20px;
      border-radius: 8px;
      box-shadow: 0 0 10px rgba(0,0,0,0.2);
      z-index: 999999;
      width: 600px;
      height: 80vh;
      overflow: auto;
    `;
    output.innerHTML = `
      <div style="margin-bottom: 15px;">
        <h3 style="margin: 0 0 10px 0; color: #333;">
          找到 ${links.length} 个匹配的链接:
        </h3>
        <div style="float: right; margin-bottom: 10px;">
          <button
            id="copyAll"
            style="
              padding: 8px 16px;
              background: #4CAF50;
              color: white;
              border: none;
              border-radius: 4px;
              cursor: pointer;
              margin-left: 10px;
            "
          >
            全选复制
          </button>
          <button
            id="closeWindow"
            style="
              padding: 8px 16px;
              background: #f44336;
              color: white;
              border: none;
              border-radius: 4px;
              cursor: pointer;
            "
          >
            关闭
          </button>
        </div>
      </div>
      <textarea
        id="linkList"
        style="
          width: 100%;
          height: calc(100% - 120px);
          font-family: monospace;
          resize: none;
          margin-top: 10px;
        "
        readonly
      >${links.join('\n')}</textarea>
    `;

    // 绑定复制按钮
    output.querySelector('#copyAll').addEventListener('click', function() {
      const textarea = output.querySelector('#linkList');
      textarea.select();
      document.execCommand('copy');
      alert('链接已复制到剪贴板!');
    });

    // 绑定关闭按钮
    output.querySelector('#closeWindow').addEventListener('click', function() {
      output.remove();
    });

    // 将结果窗口添加到页面
    document.body.appendChild(output);
  }

  // 初始浮动按钮显示
  floatingButton.style.display = 'block';
})();