{"id":27492113,"url":"https://github.com/kacakb/jsfinder","last_synced_at":"2026-01-17T21:30:31.840Z","repository":{"id":79220557,"uuid":"604778365","full_name":"kacakb/jsfinder","owner":"kacakb","description":"Fetches JavaScript files quickly and comprehensively.","archived":false,"fork":false,"pushed_at":"2023-05-08T08:25:10.000Z","size":157,"stargazers_count":114,"open_issues_count":2,"forks_count":10,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-17T09:45:31.752Z","etag":null,"topics":["bugbounty","hacking","hacking-tool","infosec","pentesting","recon"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kacakb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"kacakb"}},"created_at":"2023-02-21T19:15:18.000Z","updated_at":"2025-04-11T21:48:29.000Z","dependencies_parsed_at":null,"dependency_job_id":"39f57d52-21a7-4fbc-88d7-f6aff784dfb8","html_url":"https://github.com/kacakb/jsfinder","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/kacakb/jsfinder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kacakb%2Fjsfinder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kacakb%2Fjsfinder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kacakb%2Fjsfinder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kacakb%2Fjsfinder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kacakb","download_url":"https://codeload.github.com/kacakb/jsfinder/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kacakb%2Fjsfinder/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28518627,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T18:55:29.170Z","status":"ssl_error","status_checked_at":"2026-01-17T18:55:03.375Z","response_time":85,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bugbounty","hacking","hacking-tool","infosec","pentesting","recon"],"created_at":"2025-04-16T23:01:28.297Z","updated_at":"2026-01-17T21:30:31.814Z","avatar_url":"https://github.com/kacakb.png","language":"Go","readme":"\u003cdiv align=\"center\"\u003e\n  \u003cp\u003e\n    \u003cimg src=\"https://user-images.githubusercontent.com/64865400/223338196-d572481b-f2d3-435e-943e-fc52a8c31ecd.jpg\" alt=\"Logo\"\u003e\n  \n  \u003c/p\u003e\n  \u003cp\u003e\n    \u003ca href=\"https://golang.org/doc/go1.20\"\u003e\u003cimg src=\"https://img.shields.io/badge/Go-v1.20-blue\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/kacakb/jsfinder/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-MIT-yellow.svg\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/kacakb/jsfinder/releases\"\u003e\u003cimg src=\"https://img.shields.io/badge/Releases-View-brightgreen\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/kacakb/jsfinder/issues\"\u003e\u003cimg src=\"https://img.shields.io/badge/Issues-Welcome-blueviolet\"\u003e\u003c/a\u003e\n\n  \u003c/p\u003e\n  \u003cp\u003e\n    \u003ca href=\"#features\"\u003eFeatures\u003c/a\u003e |\n    \u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e |\n    \u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e |\n    \u003ca href=\"#demo\"\u003eDemo\u003c/a\u003e |\n    \u003ca href=\"#todos\"\u003eTODOs\u003c/a\u003e|\n    \u003ca href=\"#contact\"\u003eContact\u003c/a\u003e \n  \u003c/p\u003e\n\u003c/div\u003e\n\njsFinder is a command-line tool written in Go that scans web pages to find JavaScript files linked in the HTML source code. It searches for any attribute that can contain a JavaScript file (e.g., src, href, data-main, etc.) and extracts the URLs of the files to a text file. The tool is designed to be simple to use, and it supports reading URLs from a file or from standard input.\n\njsFinder is useful for web developers and security professionals who want to find and analyze the JavaScript files used by a web application. By analyzing the JavaScript files, it's possible to understand the functionality of the application and detect any security vulnerabilities or sensitive information leakage.\n\n\n\u003ch2 id=\"features\"\u003eFeatures\u003c/h2\u003e\n\n\u003cul\u003e\n  \u003cli\u003eReading URLs from a file or from \u003cstrong\u003estdin\u003c/strong\u003e using command line arguments.\u003c/li\u003e\n  \u003cli\u003eRunning \u003cstrong\u003emultiple\u003c/strong\u003e HTTP GET requests concurrently to each URL.\u003c/li\u003e\n  \u003cli\u003eLimiting the \u003cstrong\u003econcurrency\u003c/strong\u003e of HTTP GET requests using a  flag.\u003c/li\u003e\n  \u003cli\u003eUsing a \u003cstrong\u003eregular expression\u003c/strong\u003e to search for JavaScript files in the response body of the HTTP GET requests.\u003c/li\u003e\n  \u003cli\u003e\u003cstrong\u003eWriting the found JavaScript files\u003c/strong\u003e to a file specified in the command line arguments or to a default file named \"output.txt\".\u003c/li\u003e\n  \u003cli\u003e\u003cstrong\u003ePrinting informative messages to the console\u003c/strong\u003e indicating the status of the program's execution and the output file's location.\u003c/li\u003e\n  \u003cli\u003eAllowing the program to run in \u003cstrong\u003everbose or silent mode\u003c/strong\u003e using a flag.\u003c/li\u003e\n   \u003c/ul\u003e\n   \n   \u003ch2 id=\"installation\"\u003eInstallation\u003c/h2\u003e\n   \n   jsfinder requires Go 1.20 to install successfully.Run the following command to get the repo :\n   \n  \u003cpre\u003e\u003ccode class=\"language-go\"\u003ego install -v github.com/kacakb/jsfinder@latest\u003c/code\u003e\u003cbutton class=\"btn\" data-clipboard-text=\"go install -v github.com/kacakb/jsfinder@latest\"\u003e\u003c/button\u003e\u003c/pre\u003e\n\n\u003ch2 id=\"usage\"\u003eUsage\u003c/h2\u003e\n\n\u003cp\u003eTo see which flags you can use with the tool, use the -h flag.\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode class=\"language-go\"\u003ejsfinder -h \u003c/code\u003e\u003cbutton class=\"btn\" data-clipboard-text=\"jsfinder -h\"\u003e\u003c/button\u003e\u003c/pre\u003e\n\n| Flag | Description |\n| --- | --- |\n| -l | Specifies the filename to read URLs from.\n| -c | Specifies the maximum number of concurrent requests to be made. The default value is 20.\n| -s | Runs the program in silent mode. If this flag is not set, the program runs in verbose mode.\n| -o | Specifies the filename to write found URLs to. The default filename is output.txt.\n| -read | Reads URLs from stdin instead of a file specified by the -l flag.\n\n \u003ch2 id=\"demo\"\u003eDemo\u003c/h2\u003e\n\n## I\n\n[![Demo](https://asciinema.org/a/Ehtbcwy1IEoRqfXnROQG2brAa.svg)](https://asciinema.org/a/Ehtbcwy1IEoRqfXnROQG2brAa)\n\nIf you want to read from stdin and run the program in silent mode, use this command:\n  \u003cpre\u003e\u003ccode class=\"language-go\"\u003ecat list.txt| jsfinder -read -s -o js.txt\u003c/code\u003e\u003cbutton class=\"btn\" data-clipboard-text=\"cat list.txt| jsfinder -read -s -o js.txt\"\u003e\u003c/button\u003e\u003c/pre\u003e\n\n\u0026nbsp;\n\n## II\n\n[![Demo](https://asciinema.org/a/dOtV2XrdtsqFzkYEyqvPb9mrY.svg)](https://asciinema.org/a/dOtV2XrdtsqFzkYEyqvPb9mrY)\n\nIf you want to read from a file, you should specify it with the -l flag and use this command:\n  \u003cpre\u003e\u003ccode class=\"language-go\"\u003ejsfinder -l list.txt -s -o js.txt\u003c/code\u003e\u003cbutton class=\"btn\" data-clipboard-text=\"jsfinder -l list.txt -s -o js.txt\"\u003e\u003c/button\u003e\u003c/pre\u003e\n  You can also specify the concurrency with the -c flag.The default value is 20.\n  If you want to read from a file, you should specify it with the -l flag and use this command:\n  \u003cpre\u003e\u003ccode class=\"language-go\"\u003ejsfinder -l list.txt -c 50 -s -o js.txt\u003c/code\u003e\u003cbutton class=\"btn\" data-clipboard-text=\"jsfinder -l list.txt -c 50 -s -o js.txt\"\u003e\u003c/button\u003e\u003c/pre\u003e\n\n\u003ch2 id=\"todos\"\u003eTODOs\u003c/h2\u003e\n\n\u003cul\u003e\n  \u003cli\u003eAdding new features\u003c/li\u003e\n  \u003cli\u003eImproving performance\u003c/li\u003e\n  \u003cli\u003eAdding a cookie flag\u003c/li\u003e\n  \u003cli\u003eReading regex from a file\u003c/li\u003e\n  \u003cli\u003eIntegrating the \u003ca href=\"https://github.com/kacakb/kacak\"\u003e\u003cbutton\u003ekacak\u003c/button\u003e\u003c/a\u003e tool (coming soon)\n\u003c/li\u003e\n   \u003c/ul\u003e\n\n\u003ch2\u003eScreenshot\u003c/h2\u003e\n\n![IMG_0241 (1)](https://user-images.githubusercontent.com/64865400/223191654-00d0e2a5-01f4-4e70-bde7-7888da638c6a.JPG)\n\n\n\u003ch2 id=\"contact\"\u003eContact\u003c/h2\u003e\n\u003cp\u003eIf you have any questions, feedback or collaboration suggestions related to this project, please feel free to contact me via:\u003c/p\u003e\u003ca href=\"mailto:kacakbatuhan@protonmail.com\"\u003e\u003cbutton\u003ee-mail\u003c/button\u003e\u003c/a\u003e\n","funding_links":["https://github.com/sponsors/kacakb"],"categories":["Go","Recon"],"sub_categories":["Links"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkacakb%2Fjsfinder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkacakb%2Fjsfinder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkacakb%2Fjsfinder/lists"}