zeichen32/website-info

PHP library to retrieve server info from any webpage like installed cms, webserver, etc

v1.0.2 2015-01-22 22:43 UTC

This package is auto-updated.

Last update: 2024-10-29 04:30:58 UTC


README

Build Status

PHP library to retrieve server information like installed cms, webserver, dns lookup, etc... from any webpage

Requirements:

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

Create your own parser

  1. 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
        ));
    }
}
  1. 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

  1. 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');
  1. 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');
  1. 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:

  1. Add the Buzz adapter to your composer.json:
$ php composer.phar require saxulum-http-client-adapter-buzz ~1.0
  1. 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);