clyo / browser-kitty
Extension of Symfony BrowserKit Component
Requires
- php: >=7.2.5
- symfony/dom-crawler: ^4.4|^5.0
Requires (Dev)
- symfony/css-selector: ^4.4|^5.0
- symfony/http-client: ^4.4|^5.0
- symfony/mime: ^4.4|^5.0
- symfony/process: ^4.4|^5.0
Suggests
This package is auto-updated.
Last update: 2024-10-20 11:14:49 UTC
README
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.