zeichen32 / website-info
PHP library to retrieve server info from any webpage like installed cms, webserver, etc
Installs: 21
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 1
Open Issues: 0
pkg:composer/zeichen32/website-info
Requires
- php: >=5.4.0
- embed/embed: >=1.8.3 <1.9
- saxulum/saxulum-http-client-adapter-guzzle: ~1.0
- saxulum/saxulum-http-client-interface: ~1.0
- symfony/dom-crawler: 2.6.*
- symfony/event-dispatcher: 2.6.*
- twodevs/cache-interface: ~1.0
- webignition/url: ~1.9
Requires (Dev)
- desarrolla2/cache: ~1.8
- doctrine/cache: ~1.4
- illuminate/cache: ~4.2
- phpunit/phpunit: 4.4.*
- zendframework/zend-cache: ~2.3
Suggests
- doctrine/cache: Allows to cache the response container
- zendframework/zend-cache: Allows to cache the response container
This package is auto-updated.
Last update: 2025-10-29 01:56:46 UTC
README
PHP library to retrieve server information like installed cms, webserver, dns lookup, etc... from any webpage
Requirements:
- PHP 5.4+
- Curl library installed
- allow_url_fopen: On
Install the library
The preferred way to install this library is to use Composer.
$ php composer.phar require zeichen32/website-info ~1.0
Usage
// Create a new WebsiteInfo instance with all default parser $ws = \WebsiteInfo\Factory::createWithDefaultParser(); // OR $ws = \WebsiteInfo\Factory::create(array( new \WebsiteInfo\Parser\Webserver\Apache(), new \WebsiteInfo\Parser\Webserver\Nginx(), new \WebsiteInfo\Parser\Webserver\IIS(), // ... )); // Retrieve informations about wordpress.com $result = $ws->get('http://wordpress.com'); print_r($result);
Array
(
    [headers] => Array
        (
            [request] => Array
                (
                    [Host] => Array
                        (
                            [0] => wordpress.org
                        )
                    [user-agent] => Array
                        (
                            [0] => WebsiteInfo
                        )
                )
            [response] => Array
                (
                    [Server] => Array
                        (
                            [0] => nginx
                        )
                    [Content-Type] => Array
                        (
                            [0] => text/html; charset=utf-8
                        )
                )
        )
    [webserver] => Array
        (
            [name] => Nginx
            [version] => unknown
            [score] => 1
            [raw] => nginx
        )
    [embed] => Array
        (
            [title] => WordPress Blog Tool, Publishing Platform, and CMS
            [description] =>
            [url] => https://wordpress.org/
            [type] => link
            [embed_code] =>
            [images] => Array
                (
                    [collection] => Array
                        (
                            [0] => http://wpdotorg.files.wordpress.com/2012/10/red-negative-w-crop.jpg
                        )
                    [base] => Array
                        (
                            [image] => http://wpdotorg.files.wordpress.com/2012/10/red-negative-w-crop.jpg
                            [width] => 264
                            [height] => 354
                            [aspect_ration] =>
                        )
                )
            [author] => Array
                (
                    [name] =>
                    [url] =>
                )
            [provider] => Array
                (
                    [name] => wordpress
                    [url] => https://wordpress.org
                    [icon] => https://s.w.org/favicon.ico?2
                    [icons] => Array
                        (
                            [0] => https://wordpress.org/favicon.ico
                            [1] => https://wordpress.org/favicon.png
                        )
                )
        )
    [lookup] => Array
        (
            [ip] => Array
                (
                    [0] => 66.155.40.249
                    [1] => 66.155.40.250
                )
            [hostname] => wordpress.org
            [dns] => Array
                (
                    ...
                )
        )
)
Available parser
| Parser | Class | Description | 
|---|---|---|
| Apache | WebsiteInfo\Parser\Webserver\Apache | Try to find information about apache webserver | 
| Nginx | WebsiteInfo\Parser\Webserver\Nginx | Try to find information about nginx webserver | 
| IIS | WebsiteInfo\Parser\Webserver\IIS | Try to find information about Microsoft IIS webserver | 
| Drupal | WebsiteInfo\Parser\CMS\Drupal | Try to find information about installed Drupal CMS | 
| Joomla | WebsiteInfo\Parser\CMS\Joomla | Try to find information about installed Joomla! CMS | 
| Magento | WebsiteInfo\Parser\CMS\Magento | Try to find information about installed Magento system | 
| phpBB | WebsiteInfo\Parser\CMS\PHPBB | Try to find information about installed phpBB system | 
| Shopware | WebsiteInfo\Parser\CMS\Shopware | Try to find information about installed Shopware system | 
| Typo3 | WebsiteInfo\Parser\CMS\Typo3 | Try to find information about installed Typo3 CMS | 
| vBulletin | WebsiteInfo\Parser\CMS\VBulletin | Try to find information about installed vBulletin system | 
| Wordpress | WebsiteInfo\Parser\CMS\Wordpress | Try to find information about installed Wordpress CMS | 
| WebsiteInfo\Parser\Analytics\Google | Try to find information about used google ads and analytics | |
| Piwik | WebsiteInfo\Parser\Analytics\Piwik | Try to find information about used piwik analytics | 
| Embed | WebsiteInfo\Parser\Embed\Embed | Try to find embed information | 
| Lookup | WebsiteInfo\Parser\Lookup | Try to find lookup informations like dns, ip etc. | 
Create your own parser
- Create a new parser that do something with the response
namespace Acme\Parser; use WebsiteInfo\Event\ParseResponseEvent; use WebsiteInfo\Parser\AbstractParser; class MyParser extends AbstractParser { public function onParseResponse(ParseResponseEvent $event) { // Get response object $response = $event->getResponse(); // Do something with the response $something = $this->doSomething( (string) $response->getBody() ); // Add a new section to the output container $event->getData()->addSection('my_new_section', array( 'foo' => 'bar', 'version' => '1.0', 'score' => 1, 'raw' => $something )); } }
- Use your parser
// Create a new WebsiteInfo instance $ws = \WebsiteInfo\Factory::createWithDefaultParser(); // Register your parser $ws->addParser(new \Acme\Parser\MyParser()); // Retrieve informations about wordpress.com $result = $ws->get('http://wordpress.com');
Using the result container cache
- Using the ArrayCache (Memory Cache)
// Create a new WebsiteInfo instance $ws = \WebsiteInfo\Factory::createWithDefaultParser(); // Using the array cache $ws->setCache(new \TwoDevs\Cache\ArrayCache()); // Retrieve informations about wordpress.com $result = $ws->get('http://wordpress.com');
- If doctrine cache is installed, it can be used to cache the result container using the doctrine cache adapter.
// Create a new WebsiteInfo instance $ws = \WebsiteInfo\Factory::createWithDefaultParser(); // Create a new DoctrineCache instance $doctrineCache = new \Doctrine\Common\Cache\FilesystemCache('var/cache'); // Create a new DoctrineCache adapter $cacheAdapter = new \TwoDevs\Cache\DoctrineCache($doctrineCache); // Using the cache $ws->setCache($cacheAdapter); // Retrieve informations about wordpress.com $result = $ws->get('http://wordpress.com');
- If zend cache is installed, it can be used to cache the result container using the zend cache adapter.
// Create a new WebsiteInfo instance $ws = \WebsiteInfo\Factory::createWithDefaultParser(); // Create a new ZendStorage instance $zendCache = new \Zend\Cache\Storage\Adapter\Memory(); // Create a new ZendCache adapter $cacheAdapter = new \TwoDevs\Cache\ZendCache($zendCache); // Using the cache $ws->setCache($cacheAdapter); // Retrieve informations about wordpress.com $result = $ws->get('http://wordpress.com');
How to use a different HttpClient
This library use the Saxulum HttpClientInterface which allows you to simple change the used HttpClient.
For example you want to use Buzz as HttpClient:
- Add the Buzz adapter to your composer.json:
$ php composer.phar require saxulum-http-client-adapter-buzz ~1.0
- Create a new BuzzClient
// Create a new Buzz Client $buzz = new \Buzz\Browser(); // Create the client adapter $client = new \Saxulum\HttpClient\Buzz\HttpClient($guzzle); // Create a new WebsiteInfo instance with all default parser and custom client $ws = \WebsiteInfo\Factory::createWithDefaultParser($client); // Retrieve informations about wordpress.com $result = $ws->get('http://wordpress.com'); print_r($result);