{"id":15007936,"url":"https://github.com/prohetamine/proxy-checker","last_synced_at":"2025-10-30T12:31:18.785Z","repository":{"id":111366773,"uuid":"374884107","full_name":"prohetamine/proxy-checker","owner":"prohetamine","description":"🦠 Proxy parser \u0026 proxy checker","archived":false,"fork":false,"pushed_at":"2022-02-08T11:26:01.000Z","size":187,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-04-25T18:42:32.597Z","etag":null,"topics":["npm","npm-package","proxy","proxy-checker","proxy-list"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/prohetamine.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-06-08T04:47:36.000Z","updated_at":"2023-08-03T11:08:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"4ef24652-9d43-4c51-84bb-15183a42e940","html_url":"https://github.com/prohetamine/proxy-checker","commit_stats":{"total_commits":41,"total_committers":1,"mean_commits":41.0,"dds":0.0,"last_synced_commit":"d00b11ea94cfd0fdabe9c89eab4c4c05bc8f559c"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prohetamine%2Fproxy-checker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prohetamine%2Fproxy-checker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prohetamine%2Fproxy-checker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prohetamine%2Fproxy-checker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prohetamine","download_url":"https://codeload.github.com/prohetamine/proxy-checker/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238968231,"owners_count":19560585,"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":["npm","npm-package","proxy","proxy-checker","proxy-list"],"created_at":"2024-09-24T19:14:32.384Z","updated_at":"2025-10-30T12:31:18.175Z","avatar_url":"https://github.com/prohetamine.png","language":"JavaScript","funding_links":["https://www.patreon.com/prohetamine"],"categories":[],"sub_categories":[],"readme":"![logo](https://github.com/prohetamine/proxy-checker/blob/main/media/logo.png)\n\n##### README is available in the following languages: [Russian](https://github.com/prohetamine/proxy-checker/blob/main/README/russian.md) | [English](https://github.com/prohetamine/proxy-checker/blob/main/README.md)\n\n\n# Proxy Checker\n\n\u003e proxy-checker - The most versatile proxy parser and proxy checker.\n\n### Why ?\nI, and therefore many people, need to [get](#load) a proxy to bypass the ban on IP with a large number of requests. This module allows you to perform almost all tasks related to proxy preparation. I, and therefore many people, need to build proxies individually for some sites, I also took care of [this](#checkerInterval). I hope my contribution will make it easier for someone [life](https://www.patreon.com/prohetamine).\n\n### Get started\n\nInstall the npm module  ```@prohetamine/proxy-checker```\n\n```sh\n$ npm install @prohetamine/proxy-checker\n```\n\nor\n\n```sh\n$ yarn add @prohetamine/proxy-checker\n```\n\n### Examples and description\n\nConnecting the module\n\n```sh\nconst proxy = require('@prohetamine/proxy-checker')\n```\n\n#### \u003ca name=\"load\"\u003eload\u003c/a\u003e\n\nThe [load](#load) function collects proxies and easily returns them via [all](#all) and [random](#random).\n\n##### object\n\n| key | value | default value | required | information|\n| ------ | ------ | ------ | ------ | ------ |\n| port | number | false | none | used for the port filter |\n| debug | boolean | false | none | used for debugging |\n\n```sh\nconst proxy = require('@prohetamine/proxy-checker')\n\n;(async () =\u003e {\n  const count = await proxy.load({\n    port: 8888,\n    debug: true\n  })\n\n  console.log(count) // Number of collected proxies with port 8888\n})()\n```\n\n#### \u003ca name=\"loadInterval\"\u003eloadInterval\u003c/a\u003e\n\nThe [loadInterval](#loadInterval) function collects proxies with an interval of _N milliseconds_ and easily returns them via [all](#all) and [random](#random).\n\n| options | default | info |\n| ------ | ------ | ------ |\n| function | () =\u003e { /* ... */} | callback function returns in a single argument the number of IP loaded |\n| int | 5000 | interval in milliseconds |\n| object | { started, port, debug } | additional options |\n\n##### object\n\n| key | value | default value | mandatory | information |\n| ------ | ------ | ------ | ------ | ------ |\n| started | boolean | false | no | use for instant download |\n| port | boolean | false | no | used to filter ports |\n| debug | boolean | false | none | used for debugging |\n\n```sh\nconst proxy = require('@prohetamine/proxy-checker')\n\n;(async () =\u003e {\n  const kill = await proxy.loadInterval(count =\u003e {\n    console.log(`count parse: ${count}`) // Number of collected proxies with port 8080\n  }, 60000, { started: true, debug: false, port: 8080 })\n\n  console.log(proxy.all({ port: 8888 })) // All downloaded IP addresses with port 8888\n  console.log(proxy.random({ port: 80 })) // One random IP address with port 80\n\n  setInterval(() =\u003e {\n    if (proxy.all().length \u003e 1488) {\n      console.log(proxy.all())\n      kill() // kills the current loadInterval\n    }\n  }, 5000)\n})()\n```\n\n#### \u003ca name=\"all\"\u003eall\u003c/a\u003e\n\nThe [all](#all) function returns an array of IP addresses when it is loaded [load](#load) or [loadInterval](#loadInterval) and false when the load has not yet occurred.\n\n##### object\n\n| key | value | default value | required | information|\n| ------ | ------ | ------ | ------ | ------ |\n| port | number | false | none | used for the port filter |\n\n```sh\nconst proxy = require('@prohetamine/proxy-checker')\n\n;(async () =\u003e {\n  const count = await proxy.load({\n    debug: true\n  })\n\n  console.log(proxy.all({ port: 1488 })) // All downloaded IP addresses with port 1488\n})()\n```\n\n#### \u003ca name=\"random\"\u003erandom\u003c/a\u003e\n\nThe [random](#random) function returns a single random IP address when it is loaded [load](#load) or [loadInterval](#loadInterval) and false when the load has not yet occurred.\n\n##### object\n\n| key | value | default value | required | information|\n| ------ | ------ | ------ | ------ | ------ |\n| port | number | false | none | used for the port filter |\n\n```sh\nconst proxy = require('@prohetamine/proxy-checker')\n\n;(async () =\u003e {\n  const count = await proxy.load({\n    debug: true\n  })\n\n  console.log(proxy.random({ port: 8888 })) // One random IP address with port 8888\n})()\n```\n\n#### \u003ca name=\"checkerInterval\"\u003echeckerInterval\u003c/a\u003e\n\nThe [checkerInterval](#checkerInterval) function checks proxies with an interval of _N milliseconds_ for a specific site and easily returns them via [get.all](#getall) and [get.random](#getrandom).\n\n| parameters | default value | information|\n| ------ | ------ | ------ |\n| string | null | unique identifier |\n| object | { url, isBrowser, browserConfig, timeout, stream, debug, indicators, session, onData } | additional options |\n\n##### object\n\n| key | value | default value | mandatory | information |\n| ------ | ------ | ------ | ------ | ------ |\n| url | string | null | no | website link |\n| isBrowser | boolean | false | none | used for checking through the browser |\n| trashIgnore | boolean | false | none | used for optimization, removes loading of media, xhr, fetch, websocket, manifest, image, stylesheet, font, script |\n| browserConfig | object | { ... } | none | used to configure the launcher |\n| onData | function | () =\u003e { ... } | none | used to get the body of a successful request (works only for browser) |\n| timeout | int | 10000 | none | interval in milliseconds |\n| stream | int | 2 | none | number of concurrent threads |\n| debug | boolean | false | none | used for debugging |\n| indicators | array | [] | none | indicators of correctly loaded data |\n| session | string | false | none | path to save valid IP addresses after completion or saving |\n| quarantineMode | boolean | false | none | used to quarantine non-working proxies |\n\n##### array[object]\n\n| key | value | default value | required | information|\n| ------ | ------ | ------ | ------ | ------ |\n| keyword | string | no | yes | used to search the page by keyword |\n| selector | string | no | yes | used for searching on a page by dom node |\n\n```sh\nconst proxy = require('@prohetamine/proxy-checker')\n\n;(async () =\u003e {\n  await proxy.loadInterval(count =\u003e {\n    console.log(`count parse: ${count}`) // Number of collected proxies\n  }, 60000, { started: true, debug: false })\n\n  const { key, kill, save, clean } = await proxy.checkerInterval('chaturbate', {\n    url: 'https://chaturbate.com/diana_smiley/',\n    isBrowser: true,\n    trashIgnore: true,\n    browserConfig: proxy =\u003e ({\n      headless: true,\n      ignoreHTTPSErrors: true,\n      args: [`--proxy-server=${proxy}`],\n    }),\n    timeout: 60000,\n    stream: 10,\n    session: __dirname + '/chaturbate.json',\n    debug: true,\n    indicators: [{\n      //keyword: 'close_entrance_terms',\n      selector: '#close_entrance_terms'\n    }] // List other metrics in the objects if they are required\n  })\n\n  setInterval(() =\u003e {\n    const proxys = proxy.get(key).all()\n    console.clear()\n    console.log(proxys, proxys.length)\n\n    if (proxys.length \u003e 20) {\n      kill() // Kills the current checkerInterval and saves the session\n      save() // Only saves the session\n    }\n  }, 3000)\n})()\n```\n\n```\nconst proxy = require('@prohetamine/proxy-checker')\n\n;(async () =\u003e {\n  await proxy.loadInterval(count =\u003e {\n    console.log(`count parse: ${count}`) // The number of proxies collected with the port\n  }, 60000, { started: true, debug: false })\n\n  const keyName = null // A unique identifier for IP accumulation, if set to null, will be generated automatically.\n\n  const { key, kill, save, clean } = await proxy.checkerInterval(keyName, {\n    url: 'https://github.com/prohetamine',\n    timeout: 30000,\n    stream: 20,\n    session: __dirname + '/github.json',\n    debug: true,\n    indicators: [{\n      keyword: 'Prohetamine',\n      //selector: '#close_entrance_terms'\n    }, {\n      keyword: 'Stas'\n    }] // List other metrics in the objects if they are required\n  })\n\n  setInterval(() =\u003e {\n    const proxys = proxy.get(key).all()\n    console.clear()\n    console.log(proxys, proxys.length)\n\n    if (proxys.length \u003e 20) {\n      kill() // Kills the current checkerInterval and saves the session\n      save() // Only saves the session\n    }\n  }, 3000)\n})()\n```\n\n#### \u003ca name=\"getall\"\u003eget.all\u003c/a\u003e\n\nThe [get.all](#getall) function returns an array of checked [checkerInterval](#checkerInterval) IP addresses by a unique identifier and false when the download has not yet occurred.\n\n##### get(key)\n\n| parameters | default value | required | information|\n| ------ | ------ | ------ | ------ |\n| string | null | yes | unique identifier |\n\n##### object\n\n| key | value | default value | required | information|\n| ------ | ------ | ------ | ------ | ------ |\n| port | number | false | none | used for the port filter |\n\n```sh\nconst proxy = require('@prohetamine/proxy-checker')\n\n;(async () =\u003e {\n  await proxy.loadInterval(count =\u003e {\n    console.log(`count parse: ${count}`) // Number of collected proxies\n  }, 60000, { started: true, debug: false })\n\n  const { key, kill, save, clean } = await proxy.checkerInterval('chaturbate', {\n    url: 'https://chaturbate.com/diana_smiley/',\n    isBrowser: true,\n    debugBrowser: false,\n    timeout: 60000,\n    stream: 10,\n    session: __dirname + '/chaturbate.json',\n    debug: true,\n    indicators: [{\n      //keyword: 'close_entrance_terms',\n      selector: '#close_entrance_terms'\n    }] // List other metrics in the objects if they are required\n  })\n\n  setInterval(() =\u003e {\n    const proxys = proxy.get(key).all()\n    console.clear()\n    console.log(proxys, proxys.length)\n\n    if (proxys.length \u003e 20) {\n      kill() // Kills the current checkerInterval and saves the session\n      save() // Only saves the session\n    }\n  }, 3000)\n})()\n```\n\n#### \u003ca name=\"getrandom\"\u003eget.random\u003c/a\u003e\n\nThe function [get.random](#getrandom) returns one random of the checked [checkerInterval](#checkerInterval) IP addresses by a unique identifier and false when the download has not yet occurred.\n\n##### get(key)\n\n| parameters | default value | required | information|\n| ------ | ------ | ------ | ------ |\n| string | null | yes |unique identifier |\n\n##### object\n\n| key | value | default value | required | information|\n| ------ | ------ | ------ | ------ | ------ |\n| port | number | false | none | used for the port filter |\n\n```sh\nconst proxy = require('@prohetamine/proxy-checker')\n\n;(async () =\u003e {\n  await proxy.loadInterval(count =\u003e {\n    console.log(`count parse: ${count}`) // Number of collected proxies\n  }, 60000, { started: true, debug: false })\n\n  const { key, kill, save, clean } = await proxy.checkerInterval('chaturbate', {\n    url: 'https://chaturbate.com/diana_smiley/',\n    isBrowser: true,\n    debugBrowser: false,\n    timeout: 60000,\n    stream: 10,\n    session: __dirname + '/chaturbate.json',\n    debug: true,\n    indicators: [{\n      //keyword: 'close_entrance_terms',\n      selector: '#close_entrance_terms'\n    }] // List other metrics in the objects if they are required\n  })\n\n  setInterval(() =\u003e {\n    console.log(proxy.get(key).random())\n  }, 3000)\n})()\n```\n\nOther examples from this project can be found here: [examples](https://github.com/prohetamine/proxy-checker/blob/main/examples)\n\n### Contacts\n\nMy Telegram: [@prohetamine](https://t.me/prohetamine), [channel](https://t.me/prohetamines)\n\nEmail: prohetamine@gmail.com\n\nDonat money: [patreon](https://www.patreon.com/prohetamine)\n\nIf you have any questions and/or suggestions, please email me in telegram, if you find any bugs also let me know, I will be very grateful.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprohetamine%2Fproxy-checker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprohetamine%2Fproxy-checker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprohetamine%2Fproxy-checker/lists"}