{"id":25074770,"url":"https://github.com/rix4uni/linkinspector","last_synced_at":"2026-02-17T13:31:33.574Z","repository":{"id":263097562,"uuid":"868984095","full_name":"rix4uni/linkinspector","owner":"rix4uni","description":"linkinspector is a fast command-line tool for inspecting URLs and retrieving HTTP status codes, content lengths, and content types. It supports filtering and matching responses, and can process URLs from stdin or files.","archived":false,"fork":false,"pushed_at":"2025-12-16T08:26:54.000Z","size":87,"stargazers_count":6,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-19T19:57:16.577Z","etag":null,"topics":["bug-bounty","bugbounty","bugbountytips","hacking","infosec","osint","osint-resources","osint-tool","penetration-testing","pentest-tool","pentesting","recon","reconnaissance","security","security-tools","threat-intelligence"],"latest_commit_sha":null,"homepage":"https://linkinspector.netlify.app","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rix4uni.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,"zenodo":null},"funding":{"custom":"https://www.paypal.me/rix4uni"}},"created_at":"2024-10-07T14:18:41.000Z","updated_at":"2025-12-18T16:14:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"78e537dd-8f10-4d76-afed-7f73ddf14ee6","html_url":"https://github.com/rix4uni/linkinspector","commit_stats":null,"previous_names":["rix4uni/linkinspector"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/rix4uni/linkinspector","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rix4uni%2Flinkinspector","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rix4uni%2Flinkinspector/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rix4uni%2Flinkinspector/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rix4uni%2Flinkinspector/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rix4uni","download_url":"https://codeload.github.com/rix4uni/linkinspector/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rix4uni%2Flinkinspector/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29545574,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-17T13:00:00.370Z","status":"ssl_error","status_checked_at":"2026-02-17T12:57:14.072Z","response_time":100,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["bug-bounty","bugbounty","bugbountytips","hacking","infosec","osint","osint-resources","osint-tool","penetration-testing","pentest-tool","pentesting","recon","reconnaissance","security","security-tools","threat-intelligence"],"created_at":"2025-02-07T00:18:31.596Z","updated_at":"2026-02-17T13:31:33.566Z","avatar_url":"https://github.com/rix4uni.png","language":"Go","funding_links":["https://www.paypal.me/rix4uni"],"categories":[],"sub_categories":[],"readme":"## linkinspector\n\nlinkinspector is a fast command-line tool for inspecting URLs and retrieving HTTP status codes, content lengths, and content types. It supports filtering and matching responses, and can process URLs from stdin or files.\n\n## Installation\n```\ngo install github.com/rix4uni/linkinspector@latest\n```\n\n## Download prebuilt binaries\n```\nwget https://github.com/rix4uni/linkinspector/releases/download/v0.0.5/linkinspector-linux-amd64-0.0.5.tgz\ntar -xvzf linkinspector-linux-amd64-0.0.5.tgz\nrm -rf linkinspector-linux-amd64-0.0.5.tgz\nmv linkinspector ~/go/bin/linkinspector\n```\nOr download [binary release](https://github.com/rix4uni/linkinspector/releases) for your platform.\n\n## Compile from source\n```\ngit clone --depth 1 github.com/rix4uni/linkinspector.git\ncd linkinspector; go install\n```\n\n## Configuration\n\nlinkinspector requires a `extensions.yaml` file for extension mappings. The tool automatically manages this file in your home directory.\n\n### extensions.yaml Structure\n\nThe `extensions.yaml` file must contain two main sections:\n\n- **valid_extensions**: Maps MIME content types to suffix labels (e.g., `image/jpeg: \"[jpg]\"`)\n- **passive_extensions**: Maps file extensions to suffix labels (e.g., `\".jpg\": \"[jpg]\"`)\n\n### Location\n\nThe `extensions.yaml` file is stored in `~/.config/linkinspector/extensions.yaml`. \n\n**Automatic Setup:**\n- The directory `~/.config/linkinspector` is automatically created if it doesn't exist\n- The `extensions.yaml` file is automatically downloaded from GitHub if it doesn't exist\n- The file is downloaded from: `https://raw.githubusercontent.com/rix4uni/linkinspector/refs/heads/main/extensions.yaml`\n\n### Customization\n\nYou can customize the `extensions.yaml` file in `~/.config/linkinspector/extensions.yaml` to add or modify extension mappings according to your needs. The file uses standard YAML syntax. Your customizations will persist across tool updates.\n\n## Usage\n```console\nlinkinspector is a command-line tool that analyzes URLs to retrieve HTTP status codes, content lengths, and content types.\n\nUsage:\n  linkinspector [flags]\n\nFlags:\nINPUT:\n   -u, -target string  Single URL to check\n   -l, -list string    File containing list of URLs to check\n\nPROBES:\n   -passive  Enable passive mode to skip requests for specific extensions\n\nMATCHERS:\n   -mc, -match-code string    Match response with specified status code (e.g., -mc 200,302)\n   -ml, -match-length string  Match response with specified content length (e.g., -ml 100,102)\n   -mt, -match-type string    Match response with specified content type (e.g., -mt \"application/octet-stream,text/html\")\n   -ms, -match-suffix string  Match response with specified suffix name (e.g., -ms \"ZIP,PHP,7Z\")\n\nFILTERS:\n   -fc, -filter-code string    Filter response with specified status code (e.g., -fc 403,401)\n   -fl, -filter-length string  Filter response with specified content length (e.g., -fl 23,33)\n   -ft, -filter-type string    Filter response with specified content type (e.g., -ft \"text/html,image/jpeg\")\n   -fs, -filter-suffix string  Filter response with specified suffix name (e.g., -fs \"CSS,Plain Text,html\")\n\nOUTPUT:\n   -o, -output string  File to write output results\n   -json               Output in JSON format\n   -json-type string   Output in JSON type, MarshalIndent or Marshal (default \"MarshalIndent\")\n\nRATE-LIMIT:\n   -t, -threads int  Number of threads to use (default 50)\n\nCONFIGURATIONS:\n   -H string  Custom User-Agent header for HTTP requests (default \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36\")\n\nDEBUG:\n   -verbose        Enable verbose output for debugging purposes\n   -version        Print the version of the tool and exit\n   -silent         silent mode\n   -nc, -no-color  disable colors in cli output\n\nOPTIMIZATIONS:\n   -timeout int  HTTP request timeout duration (in seconds) (default 30)\n   -insecure     Disable TLS certificate verification\n   -delay value  Duration between each HTTP request (e.g., 200ms, 1s) (default -1ns)\n```\n\n## Matchers vs Filters\n\n**Matchers** are used to **include** responses that match specific criteria:\n- If a matcher is specified, only responses matching the criteria will be shown\n- Multiple values can be specified separated by commas\n- If no matcher is specified, all responses are shown\n\n**Filters** are used to **exclude** responses that match specific criteria:\n- If a filter is specified, responses matching the filter criteria will be excluded\n- Multiple values can be specified separated by commas\n- Filters are applied after matchers\n\n**Example**: Using both matchers and filters together:\n- `-mc 200,302` (match only 200 and 302 status codes)\n- `-fc 404` (filter out 404 status codes)\n- Result: Shows only 200 and 302 responses, excluding any 404s\n\n## Usage Examples\n\n#### Single URL\n```yaml\n┌──(root㉿kali)-[/root/linkinspector]\n└─# echo \"https://linkinspector.netlify.app/nuclei-templates.zip\" | linkinspector\n```\n\n#### Multiple URLs\n```yaml\n┌──(root㉿kali)-[/root/linkinspector]\n└─# cat urls.txt | linkinspector\n```\n\n#### Using Matchers\n```yaml\n# Match only 200 and 302 status codes\n└─# echo \"https://example.com\" | linkinspector -mc 200,302\n\n# Match specific content types\n└─# cat urls.txt | linkinspector -mt \"application/pdf,application/zip\"\n\n# Match specific suffixes\n└─# cat urls.txt | linkinspector -ms \"ZIP,PDF,PHP\"\n```\n\n#### Using Filters\n```yaml\n# Filter out 403 and 401 status codes\n└─# cat urls.txt | linkinspector -fc 403,401\n\n# Filter out specific content types\n└─# cat urls.txt | linkinspector -ft \"text/html,image/jpeg\"\n\n# Filter out specific suffixes\n└─# cat urls.txt | linkinspector -fs \"CSS,Plain Text,html\"\n```\n\n#### Combining Matchers and Filters\n```yaml\n# Match 200 status codes but filter out HTML content\n└─# cat urls.txt | linkinspector -mc 200 -ft \"text/html\"\n\n# Match ZIP files but filter out small files\n└─# cat urls.txt | linkinspector -ms \"ZIP\" -fl 0,100\n```\n\n#### Passive Mode\n```yaml\n# Use passive mode to check extensions without making requests\n└─# cat urls.txt | linkinspector -passive\n```\n\n#### JSON Output\n```yaml\n# Output results in JSON format\n└─# cat urls.txt | linkinspector -json\n\n# Output in compact JSON format\n└─# cat urls.txt | linkinspector -json -json-type Marshal\n```\n\n## Supported types\n\nlinkinspector supports a wide variety of file types including images, videos, audio files, archives, documents, fonts, programming languages, and more. The complete list of supported types and their MIME type mappings can be found in the `extensions.yaml` file located at `~/.config/linkinspector/extensions.yaml`.\n\n#### Image\n\n- **jpg** - `image/jpeg`\n- **png** - `image/png`\n- **gif** - `image/gif`\n- **webp** - `image/webp`\n- **cr2** - `image/x-canon-cr2`\n- **tif** - `image/tiff`\n- **bmp** - `image/bmp`\n- **heif** - `image/heif`\n- **jxr** - `image/vnd.ms-photo`\n- **psd** - `image/vnd.adobe.photoshop`\n- **ico** - `image/vnd.microsoft.icon`\n- **dwg** - `image/vnd.dwg`\n- **avif** - `image/avif`\n\n#### Video\n\n- **mp4** - `video/mp4`\n- **m4v** - `video/x-m4v`\n- **mkv** - `video/x-matroska`\n- **webm** - `video/webm`\n- **mov** - `video/quicktime`\n- **avi** - `video/x-msvideo`\n- **wmv** - `video/x-ms-wmv`\n- **mpg** - `video/mpeg`\n- **flv** - `video/x-flv`\n- **3gp** - `video/3gpp`\n\n#### Audio\n\n- **mid** - `audio/midi`\n- **mp3** - `audio/mpeg`\n- **m4a** - `audio/mp4`\n- **ogg** - `audio/ogg`\n- **flac** - `audio/x-flac`\n- **wav** - `audio/x-wav`\n- **amr** - `audio/amr`\n- **aac** - `audio/aac`\n- **aiff** - `audio/x-aiff`\n\n#### Archive\n\n- **epub** - `application/epub+zip`\n- **zip** - `application/zip`\n- **tar** - `application/x-tar`\n- **rar** - `application/vnd.rar`\n- **gz** - `application/gzip`\n- **bz2** - `application/x-bzip2`\n- **7z** - `application/x-7z-compressed`\n- **xz** - `application/x-xz`\n- **zstd** - `application/zstd`\n- **pdf** - `application/pdf`\n- **exe** - `application/vnd.microsoft.portable-executable`\n- **swf** - `application/x-shockwave-flash`\n- **rtf** - `application/rtf`\n- **iso** - `application/x-iso9660-image`\n- **eot** - `application/octet-stream`\n- **ps** - `application/postscript`\n- **sqlite** - `application/vnd.sqlite3`\n- **nes** - `application/x-nintendo-nes-rom`\n- **crx** - `application/x-google-chrome-extension`\n- **cab** - `application/vnd.ms-cab-compressed`\n- **deb** - `application/vnd.debian.binary-package`\n- **ar** - `application/x-unix-archive`\n- **Z** - `application/x-compress`\n- **lz** - `application/x-lzip`\n- **rpm** - `application/x-rpm`\n- **elf** - `application/x-executable`\n- **dcm** - `application/dicom`\n\n#### Documents\n\n- **doc** - `application/msword`\n- **docx** - `application/vnd.openxmlformats-officedocument.wordprocessingml.document`\n- **xls** - `application/vnd.ms-excel`\n- **xlsx** - `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`\n- **ppt** - `application/vnd.ms-powerpoint`\n- **pptx** - `application/vnd.openxmlformats-officedocument.presentationml.presentation`\n\n#### Font\n\n- **woff** - `application/font-woff`\n- **woff2** - `application/font-woff`\n- **ttf** - `application/font-sfnt`\n- **otf** - `application/font-sfnt`\n\n#### Application\n\n- **wasm** - `application/wasm`\n- **dex** - `application/vnd.android.dex`\n- **dey** - `application/vnd.android.dey`\n\n## Extension Sources\n- https://gist.github.com/ppisarczyk/43962d06686722d26d176fad46879d41\n- https://github.com/github-linguist/linguist/blob/main/lib/linguist/languages.yml\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frix4uni%2Flinkinspector","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frix4uni%2Flinkinspector","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frix4uni%2Flinkinspector/lists"}