PHPackages                             x14/proxy-checker - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. x14/proxy-checker

ActiveLibrary

x14/proxy-checker
=================

Just check proxy

00PHP

Since Feb 24Pushed 2y agoCompare

[ Source](https://github.com/pest14/php-proxy-checker)[ Packagist](https://packagist.org/packages/x14/proxy-checker)[ RSS](/packages/x14-proxy-checker/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

PHP Proxy Checker
=================

[](#php-proxy-checker)

Proxy Checker is a PHP library that allows you to quickly check a list of proxies.

- fast (thanks to asynchronous requests)
- simple (PSR-7 based)
- supports many protocols
- customizable (full control over request / response checking)

Installation
------------

[](#installation)

```
composer require retrowaver/proxy-checker

```

How it works?
-------------

[](#how-it-works)

`ProxyChecker` constructor takes 2 mandatory arguments:

- PSR-7 Request
- object that implements `ResponseCheckerInterface`

When `checkProxies()` is called, it attempts to send that request using every proxy, and then calls `checkResponse()` of provided `ResponseCheckerInterface` implementation, which ultimately decides whether proxy is valid or not.

Depending on how much control you want, you can use built-in `ResponseCheckerBuilder` for a quick start (see below) or make a custom class.

1. Basic usage
--------------

[](#1-basic-usage)

### Step 1. Make proxy array

[](#step-1-make-proxy-array)

Make proxy array manually:

```
use Retrowaver\ProxyChecker\Entity\Proxy;

$proxies = [
    (new Proxy)
        ->setIp('127.0.0.1')
        ->setPort(1080)
        ->setProtocol('http'),
    (new Proxy)
        ->setIp('192.168.1.1')
        ->setPort(8080)
        ->setProtocol('http')
];
```

... or use built-in simple importer:

```
use Retrowaver\ProxyChecker\Import\SimpleImporter;

$importer = new SimpleImporter;

$lines = file('path-to-file-with-proxies.txt'); // ip:port format
$proxies = $importer->import($lines, 'http');
```

### Step 2. Prepare a request

[](#step-2-prepare-a-request)

Prepare a PSR-7 request that will be send using proxies.

```
use GuzzleHttp\Psr7\Request;

$request = new Request('GET', 'http://example.com');
```

### Step 3. Prepare ResponseChecker

[](#step-3-prepare-responsechecker)

You can use built-in ResponseCheckerBuilder:

```
use Retrowaver\ProxyChecker\ResponseChecker\ResponseCheckerBuilder;

$responseChecker = (new ResponseCheckerBuilder)
    ->bodyContains('some string on target website')
;
```

or write a custom `ResponseCheckerInterface` implementation:

```
use Psr\Http\Message\ResponseInterface;
use Retrowaver\ProxyChecker\Entity\ProxyInterface;

class CustomResponseChecker implements ResponseCheckerInterface
{
    public function checkResponse(
        ResponseInterface $response,
        ProxyInterface $proxy
    ): bool {
        if (...) {
            // proxy not valid
            return false;
        }

        // valid proxy
        return true;
    }
}
```

```
$responseChecker = new CustomResponseChecker;
```

### Step 4. Create ProxyChecker and check proxies

[](#step-4-create-proxychecker-and-check-proxies)

```
use Retrowaver\ProxyChecker\ProxyChecker;

$proxyChecker = new ProxyChecker($request, $responseChecker);

$validProxies = $proxyChecker->checkProxies($proxies);
```

2. Additional info
------------------

[](#2-additional-info)

### Options reference

[](#options-reference)

`ProxyChecker` accepts optional parameters `$options` and `$requestOptions`:

- `$options`
    - `concurrency` - max concurrent request (default 50)
- `$requestOptions` are [Guzzle request options](http://docs.guzzlephp.org/en/stable/request-options.html) that are passed to Guzzle client while sending a request. Currently there's only one default value: `'timeout' => 20`

### Supported protocols

[](#supported-protocols)

PHP Proxy Checker should work with http, https, socks4, socks4a, socks5 and socks5h proxies (see [https://curl.haxx.se/libcurl/c/CURLOPT\_PROXY.html](https://curl.haxx.se/libcurl/c/CURLOPT_PROXY.html) for descriptions).

###  Health Score

12

—

LowBetter than 0% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity0

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity19

Early-stage or recently created project

 Bus Factor1

Top contributor holds 81.3% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/4ef0767c3a74de7b72d3b66e48fe4da48bb4d2af230010aaecfca59145dca193?d=identicon)[x14](/maintainers/x14)

---

Top Contributors

[![retrowaver](https://avatars.githubusercontent.com/u/23421260?v=4)](https://github.com/retrowaver "retrowaver (13 commits)")[![pest14](https://avatars.githubusercontent.com/u/1893122?v=4)](https://github.com/pest14 "pest14 (3 commits)")

### Embed Badge

![Health badge](/badges/x14-proxy-checker/health.svg)

```
[![Health](https://phpackages.com/badges/x14-proxy-checker/health.svg)](https://phpackages.com/packages/x14-proxy-checker)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
