PHPackages                             clyo/browser-kitty - 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. clyo/browser-kitty

ActiveLibrary

clyo/browser-kitty
==================

Extension of Symfony BrowserKit Component

00PHP

Since Oct 20Pushed 5y ago1 watchersCompare

[ Source](https://github.com/thiagomp/browser-kitty)[ Packagist](https://packagist.org/packages/clyo/browser-kitty)[ RSS](/packages/clyo-browser-kitty/feed)WikiDiscussions master Synced 5d ago

READMEChangelogDependenciesVersions (1)Used By (0)

BrowserKitty Component
======================

[](#browserkitty-component)

BrowserKitty is a fork of Symfony's BrowserKit component and simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically.

The component comes with a concrete implementation that uses the HttpClient component to make real HTTP requests.

BrowserKitty extends BrowserKit's capabilities by exposing details related to HTTP redirects. It allows you to get the response details of each redirect. See a quick example below:

```
require("../vendor/autoload.php");

use Clyo\Kitty;

$url = "example.com";

$web = new KittyBrowser();
$web->followRedirects(true);
$web->followMetaRefresh(true);
$web->setMaxRedirects(5);
$web->upgradeInsecureRequests(true);

$web->request('GET', $url);

foreach ( $web->getRedirectInfo() as $count => $response ) {
    echo str_repeat(" ", $count) . "$previousUrl [{$response->getStatusCode()}]\n";
    echo str_repeat(" ", $count) . "|-> ";
    $previousUrl = $response->getHeader('location');
}
```

You can also see a working example in the examples/ folder

BrowserKitty also implements the upgrade-insecure-requests on the request. That allows the server to respond with a 307 redirect informing the secure location. To activate that, make sure you `upgradeInsecureRequests(true)` before calling the `request()` method.

Resources from Symphony Browser-Kit
-----------------------------------

[](#resources-from-symphony-browser-kit)

- [Documentation](https://symfony.com/doc/current/components/browser_kit/introduction.html)
- [Contributing](https://symfony.com/doc/current/contributing/index.html)
- [Report issues](https://github.com/symfony/symfony/issues) and [send Pull Requests](https://github.com/symfony/symfony/pulls)in the [main Symfony repository](https://github.com/symfony/symfony)

###  Health Score

16

—

LowBetter than 5% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity0

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity32

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/553908?v=4)[Thiago](/maintainers/thiagomp)[@thiagomp](https://github.com/thiagomp)

---

Top Contributors

[![thiagomp](https://avatars.githubusercontent.com/u/553908?v=4)](https://github.com/thiagomp "thiagomp (2 commits)")

### Embed Badge

![Health badge](/badges/clyo-browser-kitty/health.svg)

```
[![Health](https://phpackages.com/badges/clyo-browser-kitty/health.svg)](https://phpackages.com/packages/clyo-browser-kitty)
```

PHPackages © 2026

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