{"id":19929088,"url":"https://github.com/thescriptguy/quad9-threat-intel-api","last_synced_at":"2026-05-14T10:33:08.797Z","repository":{"id":134310277,"uuid":"339963086","full_name":"TheScriptGuy/quad9-threat-intel-api","owner":"TheScriptGuy","description":"Quad9 Threat Intel API (new and improved!)","archived":false,"fork":false,"pushed_at":"2021-04-18T21:42:41.000Z","size":12,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-12T01:13:28.088Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","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/TheScriptGuy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2021-02-18T06:57:48.000Z","updated_at":"2021-04-18T21:42:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"a8348d8f-9cbc-4633-ac59-b95aafb5f7f1","html_url":"https://github.com/TheScriptGuy/quad9-threat-intel-api","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheScriptGuy%2Fquad9-threat-intel-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheScriptGuy%2Fquad9-threat-intel-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheScriptGuy%2Fquad9-threat-intel-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheScriptGuy%2Fquad9-threat-intel-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TheScriptGuy","download_url":"https://codeload.github.com/TheScriptGuy/quad9-threat-intel-api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241355201,"owners_count":19949325,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-11-12T22:41:50.779Z","updated_at":"2026-05-14T10:33:08.726Z","avatar_url":"https://github.com/TheScriptGuy.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# How to operate this heavy machinery\n\nFirst and foremost an honorary mention of the original Quad9 threat-intel-api https://github.com/Quad9DNS/threat-intel-api\n\nI used their python script as a starting point and built on from there.\n\nThe Docker container things I worked on myself.\n\nI'm open to positive feedback/input.\n\nNow onwards to the instructions! Avante!\n \n\n## First create the image from Dockerfile\n```bash\ndocker build -t \u003cREPO\u003e/quad9-threat-intel:\u003cversion\u003e -f Dockerfile .\n```\n\n## Initial setup\nCreate the directory where you want the data to be downloaded to\n```bash\nmkdir /quad9-intel-data\n```\n\nAssuming scripts directory is in /quad9-threat-intel-api\n\n\n\n## Create the container\n```bash\ndocker create -v /quad9-threat-intel-api/scripts/:/scripts/ \\\n              -v /quad9-intel-data/:/quad9-intel-data/ \\\n              \u003cREPO\u003e/quad9-threat-intel:\u003cversion\u003e /scripts/start.sh\n```\n\n## Update API Environment variables\n\nEdit the start.sh script and insert your API token and number of connections needing to be made to Quad9\n\n```bash\nQUAD9_API_TOKEN=\u003cINSERT API TOKEN\u003e\nQUAD9_CONNECTIONS=\u003cNUMBER OF CONNECETIONS\u003e\n```\n\n\n## Info to know about the python script\n\nThe python script writes the downloaded content into the /quad9-intel-data directory in the filename format of \nquad9.Year-Month-DayHHour.json\n\nExample file names:\n* quad9.2021-01-01H05.json  \n* quad9.2021-01-01H22.json  \n* quad9.2021-01-02H15.json \n\nThe python script outputs content to files in chunks of 100,000 entries. If the script crashes, or the container stops, the variables in memory are output to disk according to the format above.\n\n## To start the container\n```bash\ndocker start \u003ccontainer name\u003e\n```\n\n## To stop the container\n```bash\ndocker stop \u003ccontainer name\u003e\n```\n\n\n### Potential improvements on the horizon...who knows? ¯\\_(ツ)_/¯\n* Multiprocessing in addition to multithreading (is this worthwhile given that multiple containers can be spun up to create \"multiprocessing\"?)\n* other?\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthescriptguy%2Fquad9-threat-intel-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthescriptguy%2Fquad9-threat-intel-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthescriptguy%2Fquad9-threat-intel-api/lists"}