├── 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 |
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 |
439 |