Website Info
, (*1)
PHP library to retrieve server information like installed cms, webserver, dns lookup, etc... from any webpage, (*2)
Requirements:, (*3)
Install the library
The preferred way to install this library is to use Composer., (*4)
``` bash
$ php composer.phar require zeichen32/website-info ~1.0, (*5)
Usage
-----
```php
// 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, (*6)
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
));
}
}
2) Use your parser, (*7)
// 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), (*8)
// 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');
2) If doctrine cache is installed, it can be used to cache the result container using the doctrine cache adapter., (*9)
// 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');
3) If zend cache is installed, it can be used to cache the result container using the zend cache adapter., (*10)
// 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., (*11)
For example you want to use Buzz as HttpClient:, (*12)
1) Add the Buzz adapter to your composer.json:, (*13)
``` bash
$ php composer.phar require saxulum-http-client-adapter-buzz ~1.0, (*14)
2) Create a new BuzzClient
```php
// 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);