Skip to content

Commit 746f2d0

Browse files
committed
first version
1 parent 34ce05f commit 746f2d0

9 files changed

+193
-55
lines changed

README.md

+25-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,31 @@ It also provides information about IP addresses (Public proxies, VPN services, T
2323
composer require udger/udger-php-v4
2424

2525
### Usage
26-
You should review the included examples/parse.php
26+
You should review the included examples (`parseUA-IP.php`, `parseSec-Ch.php` ... etc)
27+
28+
Here's a quick example:
29+
30+
```php
31+
$factory = new Udger\ParserFactory(sys_get_temp_dir() . "/udgercache/udgerdb_v4.dat");
32+
$parser = $factory->getParser();
33+
34+
// enable/disable LRU cache
35+
$parser->setCacheEnable(false); // default is enable
36+
//$parser->setCacheSize(4000); // default size is 3000
37+
38+
try {
39+
$parser->setSecChUa('"Chromium";v="104", " Not A;Brand";v="99", "Google Chrome";v="104"');
40+
$parser->setUA('Mozilla/5.0 (Linux; Android 11; CPH2001) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Mobile Safari/537.36');
41+
$parser->setSecChUaMobile('?1');
42+
$parser->setSecChUaFullVersion('"104.0.5112.97"');
43+
$parser->setSecChUaPlatform('"Android"');
44+
$parser->setSecChUaPlatformVersion('"11.0.0"');
45+
$parser->setSecChUaModel('"CPH2001"');
46+
$ret = $parser->parse();
47+
print_r($ret);
48+
} catch (Exception $ex) {
49+
echo "Error: " . $ex->getMessage(). PHP_EOL;
50+
}
2751

2852
### Automatic updates download
2953
- for autoupdate data use Udger data updater (https://udger.com/support/documentation/?doc=62)

examples/parse.php

-35
This file was deleted.

examples/parseHeaders.php

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
<?php
2+
require_once __DIR__ . '/vendor/autoload.php';
3+
4+
// creates a new UdgerParser object
5+
$factory = new Udger\ParserFactory(sys_get_temp_dir() . "/udgercache/udgerdb_v4.dat");
6+
$parser = $factory->getParser();
7+
8+
// enable/disable LRU cache
9+
$parser->setCacheEnable(false); // default is enable
10+
//$parser->setCacheSize(4000); // default size is 3000
11+
12+
try {
13+
14+
// set full http header
15+
$parser->setHeaders('Host: udger.com
16+
Connection: keep-alive
17+
Sec-Ch-Ua: "Chromium";v="104", " Not A;Brand";v="99", "Google Chrome";v="104"
18+
Sec-Ch-Ua-Mobile: ?0
19+
Sec-Ch-Ua-Full-Version: "104.0.5112.102"
20+
Sec-Ch-Ua-Arch: "x86"
21+
Sec-Ch-Ua-Platform: "Windows"
22+
Sec-Ch-Ua-Platform-Version: "14.0.0"
23+
Sec-Ch-Ua-Model: ""
24+
Sec-Ch-Ua-Bitness: "64"
25+
Sec-Ch-Ua-Full-Version-List: "Chromium";v="104.0.5112.102", " Not A;Brand";v="99.0.0.0", "Google Chrome";v="104.0.5112.102"
26+
Upgrade-Insecure-Requests: 1
27+
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36
28+
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
29+
Sec-Fetch-Site: same-origin
30+
Sec-Fetch-Mode: navigate
31+
Sec-Fetch-User: ?1
32+
Sec-Fetch-Dest: document
33+
Referer: https://udger.com/
34+
Accept-Encoding: gzip, deflate, br
35+
Accept-Language: cs-CZ,cs;q=0.9,en;q=0.8,sk;q=0.7');
36+
37+
$ret = $parser->parse();
38+
print_r($ret);
39+
40+
// set limited http header (only these values will be used for parsing)
41+
$parser->setHeaders('Sec-Ch-Ua: "Chromium";v="104", " Not A;Brand";v="99", "Google Chrome";v="104"
42+
Sec-Ch-Ua-Mobile: ?0
43+
Sec-Ch-Ua-Full-Version: "104.0.5112.102"
44+
Sec-Ch-Ua-Arch: "x86"
45+
Sec-Ch-Ua-Platform: "Windows"
46+
Sec-Ch-Ua-Platform-Version: "14.0.0"
47+
Sec-Ch-Ua-Model: ""
48+
Sec-Ch-Ua-Bitness: "64"
49+
Sec-Ch-Ua-Full-Version-List: "Chromium";v="104.0.5112.102", " Not A;Brand";v="99.0.0.0", "Google Chrome";v="104.0.5112.102"
50+
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36');
51+
52+
$ret = $parser->parse();
53+
print_r($ret);
54+
55+
// set First Request http header
56+
$parser->setHeaders('Sec-Ch-Ua: "Chromium";v="104", " Not A;Brand";v="99", "Google Chrome";v="104"
57+
Sec-Ch-Ua-Mobile: ?0
58+
Sec-Ch-Ua-Platform: "Windows"
59+
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36');
60+
61+
$ret = $parser->parse();
62+
print_r($ret);
63+
64+
65+
66+
} catch (Exception $ex) {
67+
echo "Error: " . $ex->getMessage(). PHP_EOL;
68+
}

examples/parseSec-Ch.php

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?php
2+
require_once __DIR__ . '/vendor/autoload.php';
3+
4+
// creates a new UdgerParser object
5+
$factory = new Udger\ParserFactory(sys_get_temp_dir() . "/udgercache/udgerdb_v4.dat");
6+
$parser = $factory->getParser();
7+
8+
// enable/disable LRU cache
9+
$parser->setCacheEnable(false); // default is enable
10+
//$parser->setCacheSize(4000); // default size is 3000
11+
12+
try {
13+
14+
$parser->setSecChUaFullVersionList('"Chromium";v="104.0.5112.102", " Not A;Brand";v="99.0.0.0", "Google Chrome";v="104.0.5112.102"');
15+
$parser->setSecChUaMobile('?0');
16+
$parser->setSecChUaPlatform('"Windows"');
17+
$parser->setSecChUaPlatformVersion('"14.0.0"');
18+
$ret = $parser->parse();
19+
print_r($ret);
20+
21+
$parser->setSecChUa('" Not;A Brand";v="99", "Google Chrome";v="97", "Chromium";v="97"');
22+
$parser->setSecChUaMobile('?0');
23+
$parser->setSecChUaFullVersion('"97.0.4692.71"');
24+
$ret = $parser->parse();
25+
print_r($ret);
26+
27+
$parser->setSecChUa('"Chromium";v="104", " Not A;Brand";v="99", "Google Chrome";v="104"');
28+
$parser->setUA('Mozilla/5.0 (Linux; Android 11; CPH2001) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Mobile Safari/537.36');
29+
$parser->setSecChUaMobile('?1');
30+
$parser->setSecChUaFullVersion('"104.0.5112.97"');
31+
$parser->setSecChUaPlatform('"Android"');
32+
$parser->setSecChUaPlatformVersion('"11.0.0"');
33+
$parser->setSecChUaModel('"CPH2001"');
34+
$ret = $parser->parse();
35+
print_r($ret);
36+
37+
38+
} catch (Exception $ex) {
39+
echo "Error: " . $ex->getMessage(). PHP_EOL;
40+
}

examples/parseUA-IP.php

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php
2+
require_once __DIR__ . '/vendor/autoload.php';
3+
4+
// creates a new UdgerParser object
5+
$factory = new Udger\ParserFactory(sys_get_temp_dir() . "/udgercache/udgerdb_v4.dat");
6+
$parser = $factory->getParser();
7+
8+
// enable/disable LRU cache
9+
$parser->setCacheEnable(false); // default is enable
10+
//$parser->setCacheSize(4000); // default size is 3000
11+
12+
try {
13+
$parser->setUA('Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36');
14+
$ret = $parser->parse();
15+
print_r($ret);
16+
17+
$parser->setUA('Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)');
18+
$parser->setIP('66.249.76.243');
19+
$ret = $parser->parse();
20+
print_r($ret);
21+
22+
$parser->setIP('66.249.76.243');
23+
$ret = $parser->parse();
24+
print_r($ret);
25+
26+
27+
} catch (Exception $ex) {
28+
echo "Error: " . $ex->getMessage(). PHP_EOL;
29+
}

src/Helper/Header.php

+12-18
Original file line numberDiff line numberDiff line change
@@ -10,45 +10,39 @@ class Header implements HeaderInterface{
1010
* @param string $headers, array $ret
1111
* @return array
1212
*/
13-
public function parseHeaders($headers, $ret)
14-
{
15-
13+
public function parseHeaders($headers,$ret)
14+
{
15+
1616
foreach(preg_split("/((\r?\n)|(\r\n?))/", $headers) as $line){
1717

1818
$header = explode(": ", $line);
1919

2020
if(strtolower($header[0]) == 'sec-ch-ua') {
21-
$ret['SecChUa'] = trim($header[1], '"');
21+
$ret['SecChUa'] = $header[1];
2222
}
2323
else if(strtolower($header[0]) == 'sec-ch-ua-full-version-list') {
24-
$ret['SecChUaFullVersionList'] = trim($header[1], '"');
24+
$ret['SecChUaFullVersionList'] = $header[1];
2525
}
26-
else if(strtolower($header[0]) == 'sec-ch-ua-mobile') { // ?0 or ?1
27-
if ($header[1] == "?1") {
28-
$ret['SecChUaMobile'] = "1";
29-
}
30-
else {
31-
$ret['SecChUaMobile'] = "0";
32-
}
26+
else if(strtolower($header[0]) == 'sec-ch-ua-mobile') {
27+
$ret['SecChUaMobile'] = $header[1];
3328
}
3429
else if(strtolower($header[0]) == 'sec-ch-ua-full-version') {
35-
$ret['SecChUaFullVersion'] = trim($header[1], '"');
30+
$ret['SecChUaFullVersion'] = $header[1];
3631
}
3732
else if(strtolower($header[0]) == 'sec-ch-ua-platform') {
38-
$ret['SecChUaPlatform'] = trim($header[1], '"');
33+
$ret['SecChUaPlatform'] = $header[1];
3934
}
4035
else if(strtolower($header[0]) == 'sec-ch-ua-platform-version') {
41-
$ret['SecChUaPlatformVersion'] = trim($header[1], '"');
36+
$ret['SecChUaPlatformVersion'] = $header[1];
4237
}
4338
else if(strtolower($header[0]) == 'sec-ch-ua-model') {
44-
$ret['SecChUaModel'] = trim($header[1], '"');
39+
$ret['SecChUaModel'] = $header[1];
4540
}
4641
else if(strtolower($header[0]) == 'user-agent') {
4742
$ret['ua'] = $header[1];
4843
}
4944
}
50-
51-
45+
5246
return $ret;
5347
}
5448

src/Helper/HeaderInterface.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@
55

66
interface HeaderInterface {
77

8-
public function parseHeaders($headers,$ret);
8+
public function parseHeaders($headers, $data);
99
}

src/Parser.php

14.9 KB
Binary file not shown.

src/ParserInterface.php

+18
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,29 @@ interface ParserInterface {
1010

1111
public function parse();
1212

13+
1314
public function setUA($ua);
1415

1516
public function setIP($ip);
17+
18+
19+
public function setSecChUa($str);
20+
21+
public function setSecChUaFullVersionList($str);
1622

23+
public function setSecChUaMobile($str);
24+
25+
public function setSecChUaFullVersion($str);
26+
27+
public function setSecChUaPlatform($str);
28+
29+
public function setSecChUaPlatformVersion($str);
30+
31+
public function setSecChUaModel($str);
32+
33+
1734
public function setHeaders($ip);
1835

36+
1937
public function setDataFile($path);
2038
}

0 commit comments

Comments
 (0)