PHPackages                             xpro/proxy-manager - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. xpro/proxy-manager

ActivePackage[Utility &amp; Helpers](/categories/utility)

xpro/proxy-manager
==================

Symfony bundle for parse, incessantly actualize and provide proxies

013PHP

Since May 1Pushed 7y agoCompare

[ Source](https://github.com/devXpro/proxy-manager)[ Packagist](https://packagist.org/packages/xpro/proxy-manager)[ RSS](/packages/xpro-proxy-manager/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependenciesVersions (1)Used By (0)

Proxy Manager
-------------

[](#proxy-manager)

Proxy manager is Symfony bundle for parse, incessantly actualize and provide proxies

### Quick start

[](#quick-start)

#### Installation

[](#installation)

1. Run the command `composer require xpro/proxy-manager`
2. Add `new Xpro\InformerBundle\XproInformerBundle()` and into AppKernel.php

#### Add new Proxy Parser

[](#add-new-proxy-parser)

For working with proxies, you must implement in you bundle parsers for proxies. You must have at least one parser! It does not matter where they will be, from some API or you can parse it from some websites with free proxies. All that is required to make your parser is implemented 2 methods from `Xpro\ProxyBundle\Parser\ParserInterface`Parser must be a tagged service with tag name `proxy_parser`

##### Example

[](#example)

It is a working example of proxy parser

```
namespace YourBundle\Parser\Proxy;

use Goutte\Client;

use Symfony\Component\DomCrawler\Crawler;
use Xpro\ProxyBundle\Parser\ParserInterface;

class HideMeParser implements ParserInterface
{
    const NAME = 'Hide Me';

    /**
     * {@inheritdoc}
     */
    public function getProxies()
    {
        $result = [];
        $client = new Client();
        $page = $client->request('GET', 'http://hideme.ru/proxy-list/?country=UA#list');
        $page->filter('tr')->each(
            function (Crawler $node) use (&$result) {
                if (strpos($node->html(), '"tdl"')) {
                    $count = 0;
                    $res = '';
                    $node->filter('td')->each(
                        function (Crawler $nodeTd) use (&$count, &$res) {
                            if ($count == 0) {
                                $res = $nodeTd->html();
                            }
                            if ($count == 1) {
                                $res .= ':'.$nodeTd->html();
                            }
                            $count++;
                        }
                    );
                    $result[] = $res;
                }
            }
        );

        return $result;
    }

    /**
     * {@inheritDoc}
     */
    public function getName()
    {
        return self::NAME;
    }
}

```

In services.yml you must define above class as tagged service

```
    your_bundle.parser.proxy.hide_me:
        class: YourBundle\Parser\Proxy\HideMeParser
        tags:
            -  { name: proxy_parser }

```

That all! It is all requirements. Nothing code else. We can see result on `your_domain/proxy/parser` route

### Commands for processing

[](#commands-for-processing)

- `xpro:proxy:parse` - this command save new proxies from all enabled parsers in database
- `xpro:proxy:check ` - this command check all proxies on , for example `xpro:proxy:check 'http://olx.ua'`
- `xpro:proxy:garbage:clear ` - this command clear all not available proxies in specified time, for example for remove all not available proxies during 1 day run: `xpro:proxy:garbage:clear '1 day'`

### Add commands into crontab

[](#add-commands-into-crontab)

```
*/5 * * * *     root    /var/www/postinformer/app/console xpro:proxy:parse
*/5 * * * *     root    /var/www/postinformer/app/console xpro:proxy:check 'http://olx.ua'
1 */1 * * *     root    /var/www/postinformer/app/console xpro:proxy:garbage:clear '1 hour'

```

### Proxy Management

[](#proxy-management)

You can browse proxies list, observe activity of it and enable or disable your implemented parsers from UI. Just visit `/proxy/parser` route

### Access to actual proxies

[](#access-to-actual-proxies)

In your bundle for receipt last active proxies you can use `xpro_proxy.provider.actual_proxy` service and use `getActualProxy()` method if you need only one proxy address or `getActualProxies($limit)` if you need more one actual proxies.

###  Health Score

19

—

LowBetter than 9% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity5

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity38

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% 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://avatars.githubusercontent.com/u/8311089?v=4)[Roman Yarmolenko](/maintainers/devXpro)[@devXpro](https://github.com/devXpro)

---

Top Contributors

[![devXpro](https://avatars.githubusercontent.com/u/8311089?v=4)](https://github.com/devXpro "devXpro (28 commits)")

### Embed Badge

![Health badge](/badges/xpro-proxy-manager/health.svg)

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

PHPackages © 2026

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