File Coverage

blib/lib/Duadua/Parser/Bot/BotMisc.pm
Criterion Covered Total %
statement 66 66 100.0
branch 64 74 86.4
condition 4 6 66.6
subroutine 4 4 100.0
pod 1 1 100.0
total 139 151 92.0


line stmt bran cond sub pod time code
1             package Duadua::Parser::Bot::BotMisc;
2 6     6   63 use strict;
  6         12  
  6         169  
3 6     6   29 use warnings;
  6         22  
  6         144  
4 6     6   32 use Duadua::Util;
  6         9  
  6         6990  
5              
6             sub try {
7 171     171 1 318 my ($class, $d) = @_;
8              
9 171         256 my $h;
10              
11 171 100 66     349 if ( $d->ua eq 'ia_archiver' ) {
    100 66        
    100          
    100          
    100          
    100          
    100          
    100          
    100          
    100          
    100          
    100          
    100          
    100          
    100          
    100          
    100          
12 1         5 $h = {
13             name => 'Internet Archive',
14             is_bot => 1,
15             };
16             }
17             elsif ( index($d->ua, 'Yeti/') > -1
18             && index($d->ua, '+http://') > -1 && index($d->ua, 'naver.') > -1 ) {
19 4         15 $h = {
20             name => 'Naver Yeti',
21             is_bot => 1,
22             };
23              
24 4 100       10 if ($d->opt_version) {
25 2         6 my ($version) = ($d->ua =~ m!Yeti/([\d.]+)!);
26 2 50       10 $h->{version} = $version if $version;
27             }
28             }
29             elsif ( index($d->ua, ' proximic;') > -1 ) {
30 2         17 $h = {
31             name => 'Comscore crawler',
32             is_bot => 1,
33             };
34             }
35             elsif ( index($d->ua, ' Daum/') > -1 ) {
36 4         14 $h = {
37             name => 'Daum',
38             is_bot => 1,
39             };
40              
41 4 100       12 if ($d->opt_version) {
42 2         6 my ($version) = ($d->ua =~ m! Daum/([\d.]+)!);
43 2 50       10 $h->{version} = $version if $version;
44             }
45              
46 4         12 $h = Duadua::Util->set_os($d, $h);
47             }
48             elsif ( index($d->ua, 'MixnodeCache/') > -1 ) {
49 2         9 $h = {
50             name => 'mixnode.com',
51             is_bot => 1,
52             };
53              
54 2 100       7 if ($d->opt_version) {
55 1         3 my ($version) = ($d->ua =~ m!^MixnodeCache/([\d.]+)!);
56 1 50       6 $h->{version} = $version if $version;
57             }
58             }
59             elsif ( index($d->ua, 'SearchAtlas.com ') > -1 ) {
60 1         8 $h = {
61             name => 'SearchAtlas.com',
62             is_bot => 1,
63             };
64             }
65             elsif ( index($d->ua, 'ltx71') > -1 ) {
66 1         11 $h = {
67             name => 'ltx71',
68             is_bot => 1,
69             };
70             }
71             elsif ( $d->ua eq 'The Knowledge AI' ) {
72 1         5 $h = {
73             name => 'The Knowledge AI',
74             is_bot => 1,
75             };
76             }
77             elsif ( index($d->ua, ' FlipboardProxy/') > -1 ) {
78 2         18 $h = {
79             name => 'FlipboardProxy',
80             is_bot => 1,
81             };
82              
83 2 100       10 if ($d->opt_version) {
84 1         11 my ($version) = ($d->ua =~ m! FlipboardProxy/([\d.]+)!);
85 1 50       13 $h->{version} = $version if $version;
86             }
87             }
88             elsif ( index($d->ua, ' BuiltWith/') > -1 ) {
89 2         9 $h = {
90             name => 'BuiltWith',
91             is_bot => 1,
92             };
93              
94 2 100       5 if ($d->opt_version) {
95 1         9 my ($version) = ($d->ua =~ m! BuiltWith/([\d.]+)!);
96 1 50       7 $h->{version} = $version if $version;
97             }
98              
99 2         6 $h = Duadua::Util->set_os($d, $h);
100             }
101             elsif ( index($d->ua, ' zgrab/') > -1 ) {
102 2         8 $h = {
103             name => 'ZGrab',
104             is_bot => 1,
105             };
106              
107 2 100       5 if ($d->opt_version) {
108 1         3 my ($version) = ($d->ua =~ m! zgrab/([\d.x]+)!);
109 1 50       8 $h->{version} = $version if $version;
110             }
111              
112 2         8 $h = Duadua::Util->set_os($d, $h);
113             }
114             elsif ( index($d->ua, ' RyowlEngine/') > -1 ) {
115 2         11 $h = {
116             name => 'RyowlEngine',
117             is_bot => 1,
118             };
119              
120 2 100       10 if ($d->opt_version) {
121 1         15 my ($version) = ($d->ua =~ m! RyowlEngine/([\d.]+)!);
122 1 50       10 $h->{version} = $version if $version;
123             }
124              
125 2         20 $h = Duadua::Util->set_os($d, $h);
126             }
127             elsif ( index($d->ua, ' DataXu/') > -1 ) {
128 2         8 $h = {
129             name => 'DataXu',
130             is_bot => 1,
131             };
132              
133 2 100       7 if ($d->opt_version) {
134 1         9 my ($version) = ($d->ua =~ m! DataXu/([\d.]+)!);
135 1 50       8 $h->{version} = $version if $version;
136             }
137              
138 2         7 $h = Duadua::Util->set_os($d, $h);
139             }
140             elsif ( index($d->ua, 'istellabot/') > -1 ) {
141 2         11 $h = {
142             name => 'istellabot',
143             is_bot => 1,
144             };
145              
146 2 100       6 if ($d->opt_version) {
147 1         14 my ($version) = ($d->ua =~ m!^istellabot/([t\d.]+)!);
148 1 50       6 $h->{version} = $version if $version;
149             }
150              
151 2         10 $h = Duadua::Util->set_os($d, $h);
152             }
153             elsif ( index($d->ua, ' Cincraw/') > -1 ) {
154 2         8 $h = {
155             name => 'Cincraw',
156             is_bot => 1,
157             };
158              
159 2 100       8 if ($d->opt_version) {
160 1         24 my ($version) = ($d->ua =~ m! Cincraw/([\d.]+)!);
161 1 50       10 $h->{version} = $version if $version;
162             }
163             }
164             elsif ( index($d->ua, 'KOCMOHABT ') > -1 ) {
165 1         8 $h = {
166             name => 'KOCMOHABT',
167             is_bot => 1,
168             };
169             }
170             elsif ( index($d->ua, 'Hexometer') > -1 ) {
171 1         6 $h = {
172             name => 'Hexometer',
173             is_bot => 1,
174             };
175             }
176              
177 171         646 return $h;
178             }
179              
180             1;
181              
182             __END__