├── icon.png ├── images └── cursor-blue.cur ├── manifest.json ├── LICENSE ├── README.md ├── popup.js └── popup.html /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coffinxp/wayback-url-finder/HEAD/icon.png -------------------------------------------------------------------------------- /images/cursor-blue.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coffinxp/wayback-url-finder/HEAD/images/cursor-blue.cur -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest_version": 3, 3 | "name": "Wayback URLs Finder", 4 | "version": "1.0", 5 | "description": "Fetch archived URLs from the Wayback Machine using different match types.", 6 | "permissions": ["activeTab"], 7 | "action": { 8 | "default_popup": "popup.html" 9 | }, 10 | "icons": { 11 | "16": "icon.png", 12 | "48": "icon.png", 13 | "128": "icon.png" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 coffin 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # Wayback URL Finder 4 | 5 | A Chrome extension that helps you quickly discover archived URLs from the Wayback Machine. Perfect for bug bounty hunters, security researchers, and OSINT enthusiasts. 6 | 7 | ## Features 8 | 9 | - Instant URL Lookup – Quickly fetch archived URLs from the Wayback Machine. 10 | - Four Search Modes: 11 | 1. Main Domain URLs (`https://example.com/*`) 12 | 2. Wildcard Domain URLs (`*.example.com/*`) 13 | 3. Specific Path URLs (`https://example.com/path/*`) 14 | 4. Sensitive File Extensions (`.pdf`, `.sql`, `.json`, `.env`, `.bak`, etc.) 15 | 16 | ## Installation 17 | 18 | 1. Download or clone this repository: 19 | ```bash 20 | git clone https://github.com/coffinxp/wayback-url-finder.git 21 | ``` 22 | 23 | 2. Open Chrome and navigate to `chrome://extensions/` 24 | 25 | 3. Enable "Developer mode" in the top-right corner 26 | 27 | 4. Click "Load unpacked" and select the folder where you saved the project 28 | 29 | 5. The Wayback URL Finder icon should now appear in your Chrome toolbar 30 | 31 | ## Usage 32 | 33 | 1. Navigate to any webpage 34 | 2. Click the Wayback URL Finder icon in your Chrome toolbar 35 | 3. Choose one of the following options: 36 | - Main Domain URLs 37 | - Wildcard Domain URLs 38 | - Specific Path URLs 39 | - Sensitive File Extensions 40 | 4. The extension will open the corresponding Wayback Machine results in a new tab 41 | 42 | ## Example Queries 43 | 44 | ### Main Domain 45 | ``` 46 | https://web.archive.org/cdx/search/cdx?url=example.com/*&collapse=urlkey&output=text&fl=original 47 | ``` 48 | 49 | ### Wildcard Domain 50 | ``` 51 | https://web.archive.org/cdx/search/cdx?url=*.example.com/*&collapse=urlkey&output=text&fl=original 52 | ``` 53 | 54 | ### Specific Path 55 | ``` 56 | https://web.archive.org/cdx/search/cdx?url=https://example.com/path/*&collapse=urlkey&output=text&fl=original 57 | ``` 58 | 59 | ### Sensitive File Extensions 60 | ``` 61 | https://web.archive.org/cdx/search/cdx?url=*.example.com/*&collapse=urlkey&output=text&fl=original&filter=original:.*\.(xls|xml|xlsx|json|pdf|sql|doc|docx|pptx|txt|zip|tar\.gz|tgz|bak|7z|rar|log|cache|secret|db|backup|yml|gz|git|config|csv|yaml|md|md5|exe|dll|bin|ini|bat|sh|tar|deb|rpm|iso|img|apk|msi|env|dmg|tmp|crt|pem|key|pub|asc)$ 62 | ``` 63 | 64 | ## Screenshots 65 | 66 | Screenshot 2025-10-19 091726 67 | 68 | 69 | ## Contributing 70 | 71 | Pull requests are welcome! Feel free to suggest new features, UI improvements, or bug fixes via GitHub issues. 72 | 73 | ## Author 74 | 75 | **Coffinxp** - Bug bounty hunter & security researcher 76 | ## License 77 | 78 | This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. 79 | -------------------------------------------------------------------------------- /popup.js: -------------------------------------------------------------------------------- 1 | document.addEventListener("DOMContentLoaded", () => { 2 | const urlInput = document.getElementById("urlInput"); 3 | const domainBtn = document.getElementById("domainBtn"); 4 | const wildcardBtn = document.getElementById("wildcardBtn"); 5 | const specificBtn = document.getElementById("specificBtn"); 6 | const extensionsBtn = document.getElementById("extensionsBtn"); 7 | const toast = document.getElementById("toast"); 8 | 9 | // Set current tab URL by default 10 | chrome.tabs.query({ active: true, currentWindow: true }, (tabs) => { 11 | const currentTab = tabs[0]; 12 | if (currentTab && currentTab.url) { 13 | urlInput.value = currentTab.url; 14 | } 15 | }); 16 | 17 | // Show toast notification 18 | function showToast(message) { 19 | toast.textContent = message; 20 | toast.classList.add("show"); 21 | setTimeout(() => { 22 | toast.classList.remove("show"); 23 | }, 3000); 24 | } 25 | 26 | // Set button loading state 27 | function setButtonLoading(button, isLoading) { 28 | if (isLoading) { 29 | button.classList.add("loading"); 30 | } else { 31 | button.classList.remove("loading"); 32 | } 33 | } 34 | 35 | function openWaybackURL(type) { 36 | let urlToInsert = urlInput.value.trim(); 37 | if (!urlToInsert) { 38 | showToast("Please enter a URL"); 39 | return; 40 | } 41 | 42 | // Check if the URL has a protocol, if not add https:// 43 | if (!urlToInsert.match(/^https?:\/\//i)) { 44 | urlToInsert = "https://" + urlToInsert; 45 | } 46 | 47 | let finalURL = ""; 48 | let button; 49 | 50 | try { 51 | const parsedURL = new URL(urlToInsert); 52 | const hostname = parsedURL.hostname; 53 | const fullURL = parsedURL.origin + parsedURL.pathname; 54 | 55 | if (type === "wildcard") { 56 | // *.domain.com/* 57 | finalURL = `https://web.archive.org/cdx/search/cdx?url=*.${hostname}/*&collapse=urlkey&output=text&fl=original`; 58 | button = wildcardBtn; 59 | } else if (type === "domain") { 60 | // domain.com/* 61 | finalURL = `https://web.archive.org/cdx/search/cdx?url=${hostname}/*&collapse=urlkey&output=text&fl=original`; 62 | button = domainBtn; 63 | } else if (type === "specific") { 64 | // full path 65 | finalURL = `https://web.archive.org/cdx/search/cdx?url=${fullURL}/*&collapse=urlkey&output=text&fl=original`; 66 | button = specificBtn; 67 | } else if (type === "extensions") { 68 | // Files with specific extensions 69 | finalURL = `https://web.archive.org/cdx/search/cdx?url=*.${hostname}/*&collapse=urlkey&output=text&fl=original&filter=original:.*\.(xls|xml|xlsx|json|pdf|sql|doc|docx|pptx|txt|zip|tar\.gz|tgz|bak|7z|rar|log|cache|secret|db|backup|yml|gz|git|config|csv|yaml|md|md5|exe|dll|bin|ini|bat|sh|tar|deb|rpm|iso|img|apk|msi|env|dmg|tmp|crt|pem|key|pub|asc)$`; 70 | button = extensionsBtn; 71 | } 72 | 73 | // Set loading state 74 | setButtonLoading(button, true); 75 | 76 | // Open the URL after a short delay to show loading state 77 | setTimeout(() => { 78 | chrome.tabs.create({ url: finalURL }); 79 | setButtonLoading(button, false); 80 | showToast("Opening Wayback Machine..."); 81 | }, 500); 82 | } catch { 83 | showToast("Invalid URL format. Please enter a valid URL."); 84 | return; 85 | } 86 | } 87 | 88 | domainBtn.addEventListener("click", () => openWaybackURL("domain")); 89 | wildcardBtn.addEventListener("click", () => openWaybackURL("wildcard")); 90 | specificBtn.addEventListener("click", () => openWaybackURL("specific")); 91 | extensionsBtn.addEventListener("click", () => openWaybackURL("extensions")); 92 | }); 93 | -------------------------------------------------------------------------------- /popup.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Wayback URL Finder 6 | 7 | 8 | 432 | 433 | 434 |
435 | 436 |
437 |
438 | 439 |
440 |
441 | 442 |
443 | 444 | 445 |
446 | 447 | 451 | 452 | 456 | 457 | 461 | 462 | 466 | 467 |
468 | 469 | 472 | 473 |
474 | 475 | 476 | 477 | 478 | --------------------------------------------------------------------------------