{"record":{"id":"0fd1c32753edd748","repo":"epi052/feroxbuster","slug":"unable-to-download-wordlist-from-url","errorCode":null,"errorMessage":"[{}] Unable to download wordlist from url: {}","messagePattern":"\\[(.+?)\\] Unable to download wordlist from url: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/main.rs","lineNumber":268,"sourceCode":"        // supplied them, so the merged ordering is deterministic.\n        let mut words = vec![String::from(\"\")];\n        let mut seen = std::collections::HashSet::new();\n        seen.insert(String::new());\n\n        let single_local_source =\n            config.wordlist.len() == 1 && !config.wordlist[0].starts_with(\"http\");\n\n        for source in &config.wordlist {\n            if source.starts_with(\"http\") {\n                // found a url scheme, attempt to download the wordlist\n                let response = config.client.get(source).send().await.context(format!(\n                    \"Unable to download wordlist from remote url: {source}\"\n                ))?;\n\n                if !response.status().is_success() {\n                    // status code isn't a 200, bail\n                    bail!(\n                        \"[{}] Unable to download wordlist from url: {}\",\n                        response.status().as_str(),\n                        source\n                    );\n                }\n\n                // attempt to get the filename from the url's path\n                let Some(mut path_segments) = response.url().path_segments() else {\n                    bail!(\"Unable to parse path from url: {}\", response.url());\n                };\n\n                let Some(filename) = path_segments.next_back() else {\n                    bail!(\n                        \"Unable to parse filename from url's path: {}\",\n                        response.url().path()\n                    );\n                };\n\n                let filename = filename.to_string();","sourceCodeStart":250,"sourceCodeEnd":286,"githubUrl":"https://github.com/epi052/feroxbuster/blob/1f595dab5c76858d5a14fbc47dabf2563d729c62/src/main.rs#L250-L286","documentation":"When a wordlist is given as a remote URL, wrapped_main downloads it via a reqwest GET; if the response status is not a success (non-2xx), it bails with this message, prefixing the HTTP status code and the source URL. The scan aborts because the wordlist could not be fetched.","triggerScenarios":"--wordlist https://... returns 404/403/500, or the hosting server requires auth, rate-limits, or blocks the client so response.status().is_success() is false.","commonSituations":"Pointing at a GitHub raw URL that moved or a private repo (404/403), a URL behind a login, a corporate proxy returning 407, or a deleted gist.","solutions":["Open the wordlist URL in a browser/curl to confirm it returns 200","Fix the URL (moved files, correct branch/tag for raw GitHub links)","Download the wordlist locally and pass a file path instead of a URL","Add required auth/headers via proxy or fetch manually if the host needs credentials"],"exampleFix":"// before\nferox -u https://t.com --wordlist https://example.com/lists/common.txt  // 404\n// after\nwget https://raw.githubusercontent.com/.../common.txt && ferox -u https://t.com --wordlist ./common.txt","handlingStrategy":"try-catch","validationCode":"const res = await fetch(wordlistUrl); if (!res.ok) throw new Error(`wordlist URL returned ${res.status}`);","typeGuard":null,"tryCatchPattern":"catch (e) { if (String(e).includes('Unable to download wordlist')) { /* verify URL manually, fall back to local wordlist */ } }","preventionTips":["Verify remote wordlist URLs return 200 before scanning","Prefer pinned raw URLs (correct branch/tag) for GitHub-hosted lists","Download wordlists locally for reproducible scans"],"tags":["http","wordlist","download","network"],"backgroundTag":"http-error-response","analyzedSha":"1f595dab5c76858d5a14fbc47dabf2563d729c62","analyzedAt":"2026-09-13T19:33:06.208Z","contentChangedAt":"2026-09-13T19:33:06.208Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}