Scrappy-0.94112090000755000000000000 011614255470 12650 5ustar00rootroot000000000000README000644000000000000 4670111614255467 13646 0ustar00rootroot000000000000Scrappy-0.94112090NAME Scrappy - The All Powerful Web Spidering, Scraping, Creeping Crawling Framework VERSION version 0.94112090 SYNOPSIS #!/usr/bin/perl use Scrappy; my $scraper = Scrappy->new; $scraper->crawl('http://search.cpan.org/recent', '/recent' => { '#cpansearch li a' => sub { print $_[1]->{href}, "\n"; } } ); And now manually, ... without crawl, the above is similar to the following ... #!/usr/bin/perl use Scrappy; my $scraper = Scrappy->new; if ($scraper->get($url)->page_loaded) { $scraper->select('#cpansearch li a')->each(sub{ print shift->{href}, "\n"; }); } DESCRIPTION Scrappy is an easy (and hopefully fun) way of scraping, spidering, and/or harvesting information from web pages, web services, and more. Scrappy is a feature rich, flexible, intelligent web automation tool. Scrappy (pronounced Scrap+Pee) == 'Scraper Happy' or 'Happy Scraper'; If you like you may call it Scrapy (pronounced Scrape+Pee) although Python has a web scraping framework by that name and this module is not a port of that one. FEATURES Scrappy provides a framework containing all the tools neccessary to create a simple yet powerful web scraper. At its core, Scrappy loads an array of features for access control, event logging, session handling, url matching, web request and response handling, proxy management, web scraping, and downloading. Futhermore, Scrappy provides a simple Moose-based plugin system that allows Scrappy to be easily extended. my $scraper = Scrappy->new; $scraper->control; # Scrappy::Scraper::Control (access control) $scraper->parser; # Scrappy::Scraper::Parser (web scraper) $scraper->user_agent; # Scrappy::Scraper::UserAgent (user-agent tools) $scraper->logger; # Scrappy::Logger (event logger) $scraper->queue; # Scrappy::Queue (flow control for loops) $scraper->session; # Scrappy::Session (session management) Please see the METHODS section for a more in-depth look at all Scrappy functionality. ATTRIBUTES The following is a list of object attributes available with every Scrappy instance, attributes always return an instance of the class they represent. content The content attribute holds the HTTP::Response object of the current request. Returns undef if no page has been successfully fetched. my $scraper = Scrappy->new; $scraper->content; control The control attribute holds the Scrappy::Scraper::Control object which is used the provide access conrtol to the scraper. my $scraper = Scrappy->new; $scraper->control; ... $scraper->control->restrict('google.com'); ... $scraper->control->allow('cpan.org'); ... if $scraper->control->is_allowed($url); debug The debug attribute holds a boolean which controls whether event logs are captured. my $scraper = Scrappy->new; $scraper->debug(1); logger The logger attribute holds the Scrappy::Logger object which is used to provide event logging capabilities to the scraper. my $scraper = Scrappy->new; $scraper->logger; parser The parser attribute holds the Scrappy::Scraper::Parser object which is used to scrape html data from the specified source material. my $scraper = Scrappy->new; $scraper->parser; plugins The plugins attribute holds the Scrappy::Plugin object which is an interface used to load plugins. my $scraper = Scrappy->new; $scraper->plugins; queue The queue attribute holds the Scrappy::Queue object which is used to provide flow-control for the standard loop approach to crawling. my $scraper = Scrappy->new; $scraper->queue; session The session attribute holds the Scrappy::Session object which is used to provide session support and persistent data across executions. my $scraper = Scrappy->new; $scraper->session; user_agent The user_agent attribute holds the Scrappy::Scraper::UserAgent object which is used to set and manipulate the user-agent header of the scraper. my $scraper = Scrappy->new; $scraper->user_agent; worker The worker attribute holds the WWW::Mechanize object which is used navigate web pages and provide request and response header information. my $scraper = Scrappy->new; $scraper->worker; METHODS back The back method is the equivalent of hitting the "back" button in a browser, it returns the previous page (response) and returns that URL, it will not backtrack beyond the first request. my $scraper = Scrappy->new; $scraper->get(...); ... $scraper->get(...); ... my $last_url = $scraper->back; cookies The cookies method returns an HTTP::Cookie object. Note! Cookies can be made persistent by enabling session-support. Session-support is enable by simply specifying a file to be used. my $scraper = Scrappy->new; $scraper->session->write('session.yml'); # enable session support $scraper->get(...); my $cookies = $scraper->cookies; crawl The crawl method is very useful when it is desired to crawl an entire website or at-least partially, it automates the tasks of creating a queue, fetching and parsing html pages, and establishing simple flow-control. See the SYNOPSIS for a simplified example, ... the following is a more complex example. my $scrappy = Scrappy->new; $scrappy->crawl('http://search.cpan.org/recent', '/recent' => { '#cpansearch li a' => sub { my ($self, $item) = @_; # follow all recent modules from search.cpan.org $self->queue->add($item->{href}); } }, '/~:author/:name-:version/' => { 'body' => sub { my ($self, $item, $args) = @_; my $reviews = $self ->select('.box table tr')->focus(3)->select('td.cell small a') ->data->[0]->{text}; $reviews = $reviews =~ /\d+ Reviews/ ? $reviews : '0 reviews'; print "found $args->{name} version $args->{version} ". "[$reviews] by $args->{author}\n"; } } ); domain The domain method returns the domain host of the current page. Local pages, e.g. file:///this/that/the_other will return undef. my $scraper = Scrappy->new; $scraper->get('http://www.google.com'); print $scraper->domain; # print www.google.com download The download method is passed a URL, a Download Directory Path and a optionally a File Path, then it will follow the link and store the response contents into the specified file without leaving the current page. Basically it downloads the contents of the request (especially when the request pushes a file download). If a File Path is not specified, Scrappy will attempt to name the file automatically resorting to a random 6-charater string only if all else fails, then returns to the originating page. my $scaper = Scrappy->new; my $requested_url = '...'; $scraper->download($requested_url, '/tmp'); # supply your own file name $scraper->download($requested_url, '/tmp', 'somefile.txt'); dumper The dumper method is a convenience feature that passes the passed-in objects to Data::Dumper which in turn returns a stringified representation of that object/data-structure. my $scaper = Scrappy->new; my $requested_url = '...'; $scraper->get($requested_url); my $data = $scraper->select('//a[@href]')->data; # print out the scraped data print $scraper->dumper($data); form The form method is used to submit a form on the current page. my $scraper = Scrappy->new; $scraper->form(fields => { username => 'mrmagoo', password => 'foobarbaz' }); # or more specifically, for pages with multiple forms $scraper->form(form_name => 'login_form', fields => { username => 'mrmagoo', password => 'foobarbaz' }); $scraper->form(form_number => 1, fields => { username => 'mrmagoo', password => 'foobarbaz' }); get The get method takes a URL or URI object, fetches a web page and returns the Scrappy object. my $scraper = Scrappy->new; if ($scraper->get($new_url)->page_loaded) { ... } # $self->content has the HTTP::Response object log The log method logs an event with the event logger. my $scraper = Scrappy->new; $scraper->debug(1); # unneccessary, on by default $scraper->logger->verbose(1); # more detailed log $scraper->log('error', 'Somthing bad happened'); ... $scraper->log('info', 'Somthing happened'); $scraper->log('warn', 'Somthing strange happened'); $scraper->log('coolness', 'Somthing cool happened'); Note! Event logs are always recorded but never automatically written to a file unless explicitly told to do so using the following: $scraper->logger->write('log.yml'); page_content_type The page_content_type method returns the content_type of the current page. my $scraper = Scrappy->new; $scraper->get('http://www.google.com/'); print $scraper->page_content_type; # prints text/html page_data The page_data method returns the HTML content of the current page, additionally this method when passed a string with HTML markup, updates the content of the current page with that data and returns the modified content. my $scraper = Scrappy->new; $scraper->get(...); my $html = $scraper->page_data; page_ishtml The page_ishtml method returns true/false based on whether our content is HTML, according to the HTTP headers. my $scraper = Scrappy->new; $scraper->get($requested_url); if ($scraper->is_html) { ... } page_loaded The page_loaded method returns true/false based on whether the last request was successful. my $scraper = Scrappy->new; $scraper->get($requested_url); if ($scraper->page_loaded) { ... } page_match The page_match method checks the passed-in URL (or URL of the current page if left empty) against the URL pattern (route) defined. If URL is a match, it will return the parameters of that match much in the same way a modern web application framework processes URL routes. my $url = 'http://somesite.com/tags/awesomeness'; ... my $scraper = Scrappy->new; # match against the current page my $this = $scraper->page_match('/tags/:tag'); if ($this) { print $this->{'tag'}; # ... prints awesomeness } .. or .. # match against a passed url my $this = $scraper->page_match('/tags/:tag', $url, { host => 'somesite.com' }); if ($this) { print "This is the ", $this->{tag}, " page"; # ... prints this is the awesomeness page } page_reload The page_reload method acts like the refresh button in a browser, it simply repeats the current request. my $scraper = Scrappy->new; $scraper->get(...); ... $scraper->reload; page_status The page_status method returns the 3-digit HTTP status code of the response. my $scraper = Scrappy->new; $scraper->get(...); if ($scraper->page_status == 200) { ... } page_text The page_text method returns a text representation of the last page having all HTML markup stripped. my $scraper = Scrappy->new; $scraper->get(...); my $text = $scraper->page_text; page_title The page_title method returns the content of the title tag if the current page is HTML, otherwise returns undef. my $scraper = Scrappy->new; $scraper->get('http://www.google.com/'); my $title = $scraper->page_title; print $title; # print Google pause This method sets breaks between your requests in an attempt to simulate human interaction. my $scraper = Scrappy->new; $scraper->pause(20); $scraper->get($request_1); $scraper->get($request_2); $scraper->get($request_3); Given the above example, there will be a 20 sencond break between each request made, get, post, request, etc., You can also specify a range to have the pause method select from at random... $scraper->pause(5,20); $scraper->get($request_1); $scraper->get($request_2); # reset/turn it off $scraper->pause(0); print "I slept for ", ($scraper->pause), " seconds"; Note! The download method is exempt from any automatic pausing. plugin The plugin method allow you to load a plugin. Using the appropriate case is recommended but not neccessary. See Scrappy::Plugin for more information. my $scraper = Scrappy->new; $scraper->plugin('foo_bar'); # will load Scrappy::Plugin::FooBar $scraper->plugin('foo-bar'); # will load Scrappy::Plugin::Foo::Bar $scraper->plugin('Foo::Bar'); # will load Scrappy::Plugin::Foo::Bar # more pratically $scraper->plugin('whois', 'spammer_check'); ... somewhere in code my $var = $scraper->plugin_method(); # example using core plugin Scrappy::Plugin::RandomProxy my $s = Scrappy->new; $s->plugin('random_proxy'); $s->use_random_proxy; $s->get(...); post The post method takes a URL, a hashref of key/value pairs, and optionally an array of key/value pairs, and posts that data to the specified URL, then returns an HTTP::Response object. my $scraper = Scrappy->new; $scraper->post($requested_url, { input_a => 'value_a', input_b => 'value_b' }); # w/additional headers my %headers = ('Content-Type' => 'multipart/form-data'); $scraper->post($requested_url, { input_a => 'value_a', input_b => 'value_b' }, %headers); Note! The most common post headers for content-type are application/x-www-form-urlencoded and multipart/form-data. proxy The proxy method will set the proxy for the next request to be tunneled through. my $scraper = Scrappy->new; $scraper->proxy('http', 'http://proxy1.example.com:8000/'); $scraper->get($requested_url); $scraper->proxy('http', 'ftp', 'http://proxy2.example.com:8000/'); $scraper->get($requested_url); # best practice when using proxies use Tiny::Try; my $proxie = Scrappy->new; $proxie->proxy('http', 'http://proxy.example.com:8000/'); try { $proxie->get($requested_url); } catch { die "Proxy failed\n"; }; Note! When using a proxy to perform requests, be aware that if they fail your program will die unless you wrap your code in an eval statement or use a try/catch mechanism. In the example above we use Tiny::Try to trap any errors that might occur when using proxy. request_denied The request_denied method is a simple shortcut to determine if the page you requested got loaded or redirected. This method is very useful on systems that require authentication and redirect if not authorized. This function return boolean, 1 if the current page doesn't match the requested page. my $scraper = Scrappy->new; $scraper->get($url_to_dashboard); if ($scraper->request_denied) { # do login, again } else { # resume ... } response The response method returns the HTTP::Repsonse object of the current page. my $scraper = Scrappy->new; $scraper->get(...); my $res = $scraper->response; select The select method takes XPATH or CSS selectors and returns a Scrappy::Scraper::Parser object which contains the matching elements. my $scraper = Scrappy->new; # return a list of links my $list = $scraper->select('#profile li a')->data; # see Scrappy::Scraper::Parser foreach my $link (@{$list}) { print $link->{href}, "\n"; } # Zoom in on specific chunks of html code using the following ... my $list = $scraper ->select('#container table tr') # select all rows ->focus(4) # focus on the 5th row ->select('div div')->data; # The code above selects the div > div inside of the 5th tr in #container table # Access attributes html, text and other attributes as follows... $element = $scraper->select('table')->data->[0]; $element->{html}; # HTML representation of the table $element->{text}; # Table stripped of all HTML $element->{cellpadding}; # cellpadding $element->{height}; # ... stash The stash method sets a stash (shared) variable or returns a reference to the entire stash object. my $scraper = Scrappy->new; $scraper->stash(age => 31); print 'stash access works' if $scraper->stash('age') == $scraper->stash->{age}; my @array = (1..20); $scraper->stash(integers => [@array]); store The store method stores the contents of the current page into the specified file. If the content-type does not begin with 'text', the content is saved as binary data. my $scraper = Scrappy->new; $scraper->get($requested_url); $scraper->store('/tmp/foo.html'); url The url method returns the complete URL for the current page. my $scraper = Scrappy->new; $scraper->get('http://www.google.com/'); print $scraper->url; # prints http://www.google.com/ AUTHOR Al Newkirk COPYRIGHT AND LICENSE This software is copyright (c) 2010 by awncorp. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. Changes000644000000000000 134311614255467 14232 0ustar00rootroot000000000000Scrappy-0.94112090Sun May 8 07:50:07 UTC 2011 New version Scrappy-0.94111280 Fixed a major bug in the download action Added first, last and each methods to parser Fri May 6 01:10:37 UTC 2011 New version Scrappy-0.94111260 Changed project creation script in Scrappy::Action::Generate Added native Data::Dumper::Dumper() support via the dumper() method Parser no longer croaks on "no html source" and simply returns an empty arrayref Thu May 5 02:54:09 UTC 2011 New version Scrappy-0.93111250 Added action to allow the scrappy cli to download webpages Added Tiny::Try support to all get/post function so not to crash the calling app Fixed bug in the back() function Fixed bug download and store content saving functions LICENSE000644000000000000 4347511614255470 13772 0ustar00rootroot000000000000Scrappy-0.94112090This software is copyright (c) 2010 by awncorp. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. Terms of the Perl programming language system itself a) the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version, or b) the "Artistic License" --- The GNU General Public License, Version 1, February 1989 --- This software is Copyright (c) 2010 by awncorp. This is free software, licensed under: The GNU General Public License, Version 1, February 1989 GNU GENERAL PUBLIC LICENSE Version 1, February 1989 Copyright (C) 1989 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The license agreements of most software companies try to keep users at the mercy of those companies. By contrast, our General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. The General Public License applies to the Free Software Foundation's software and to any other program whose authors commit to using it. You can use it for your programs, too. When we speak of free software, we are referring to freedom, not price. Specifically, the General Public License is designed to make sure that you have the freedom to give away or sell copies of free software, that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of a such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must tell them their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any work containing the Program or a portion of it, either verbatim or with modifications. Each licensee is addressed as "you". 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this General Public License and to the absence of any warranty; and give any other recipients of the Program a copy of this General Public License along with the Program. You may charge a fee for the physical act of transferring a copy. 2. You may modify your copy or copies of the Program or any portion of it, and copy and distribute such modifications under the terms of Paragraph 1 above, provided that you also do the following: a) cause the modified files to carry prominent notices stating that you changed the files and the date of any change; and b) cause the whole of any work that you distribute or publish, that in whole or in part contains the Program or any part thereof, either with or without modifications, to be licensed at no charge to all third parties under the terms of this General Public License (except that you may choose to grant warranty protection to some or all third parties, at your option). c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the simplest and most usual way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this General Public License. d) You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. Mere aggregation of another independent work with the Program (or its derivative) on a volume of a storage or distribution medium does not bring the other work under the scope of these terms. 3. You may copy and distribute the Program (or a portion or derivative of it, under Paragraph 2) in object code or executable form under the terms of Paragraphs 1 and 2 above provided that you also do one of the following: a) accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Paragraphs 1 and 2 above; or, b) accompany it with a written offer, valid for at least three years, to give any third party free (except for a nominal charge for the cost of distribution) a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Paragraphs 1 and 2 above; or, c) accompany it with the information you received as to where the corresponding source code may be obtained. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form alone.) Source code for a work means the preferred form of the work for making modifications to it. For an executable file, complete source code means all the source code for all modules it contains; but, as a special exception, it need not include source code for modules which are standard libraries that accompany the operating system on which the executable file runs, or for standard header files or definitions files that accompany that operating system. 4. You may not copy, modify, sublicense, distribute or transfer the Program except as expressly provided under this General Public License. Any attempt otherwise to copy, modify, sublicense, distribute or transfer the Program is void, and will automatically terminate your rights to use the Program under this License. However, parties who have received copies, or rights to use copies, from you under this General Public License will not have their licenses terminated so long as such parties remain in full compliance. 5. By copying, distributing or modifying the Program (or any work based on the Program) you indicate your acceptance of this license to do so, and all its terms and conditions. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. 7. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of the license which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the license, you may choose any version ever published by the Free Software Foundation. 8. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS Appendix: How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to humanity, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19xx name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (a program to direct compilers to make passes at assemblers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice That's all there is to it! --- The Artistic License 1.0 --- This software is Copyright (c) 2010 by awncorp. This is free software, licensed under: The Artistic License 1.0 The Artistic License Preamble The intent of this document is to state the conditions under which a Package may be copied, such that the Copyright Holder maintains some semblance of artistic control over the development of the package, while giving the users of the package the right to use and distribute the Package in a more-or-less customary fashion, plus the right to make reasonable modifications. Definitions: - "Package" refers to the collection of files distributed by the Copyright Holder, and derivatives of that collection of files created through textual modification. - "Standard Version" refers to such a Package if it has not been modified, or has been modified in accordance with the wishes of the Copyright Holder. - "Copyright Holder" is whoever is named in the copyright or copyrights for the package. - "You" is you, if you're thinking about copying or distributing this Package. - "Reasonable copying fee" is whatever you can justify on the basis of media cost, duplication charges, time of people involved, and so on. (You will not be required to justify it to the Copyright Holder, but only to the computing community at large as a market that must bear the fee.) - "Freely Available" means that no fee is charged for the item itself, though there may be fees involved in handling the item. It also means that recipients of the item may redistribute it under the same conditions they received it. 1. You may make and give away verbatim copies of the source form of the Standard Version of this Package without restriction, provided that you duplicate all of the original copyright notices and associated disclaimers. 2. You may apply bug fixes, portability fixes and other modifications derived from the Public Domain or from the Copyright Holder. A Package modified in such a way shall still be considered the Standard Version. 3. You may otherwise modify your copy of this Package in any way, provided that you insert a prominent notice in each changed file stating how and when you changed that file, and provided that you do at least ONE of the following: a) place your modifications in the Public Domain or otherwise make them Freely Available, such as by posting said modifications to Usenet or an equivalent medium, or placing the modifications on a major archive site such as ftp.uu.net, or by allowing the Copyright Holder to include your modifications in the Standard Version of the Package. b) use the modified Package only within your corporation or organization. c) rename any non-standard executables so the names do not conflict with standard executables, which must also be provided, and provide a separate manual page for each non-standard executable that clearly documents how it differs from the Standard Version. d) make other distribution arrangements with the Copyright Holder. 4. You may distribute the programs of this Package in object code or executable form, provided that you do at least ONE of the following: a) distribute a Standard Version of the executables and library files, together with instructions (in the manual page or equivalent) on where to get the Standard Version. b) accompany the distribution with the machine-readable source of the Package with your modifications. c) accompany any non-standard executables with their corresponding Standard Version executables, giving the non-standard executables non-standard names, and clearly documenting the differences in manual pages (or equivalent), together with instructions on where to get the Standard Version. d) make other distribution arrangements with the Copyright Holder. 5. You may charge a reasonable copying fee for any distribution of this Package. You may charge any fee you choose for support of this Package. You may not charge a fee for this Package itself. However, you may distribute this Package in aggregate with other (possibly commercial) programs as part of a larger (possibly commercial) software distribution provided that you do not advertise this Package as a product of your own. 6. The scripts and library files supplied as input to or produced as output from the programs of this Package do not automatically fall under the copyright of this Package, but belong to whomever generated them, and may be sold commercially, and may be aggregated with this Package. 7. C or perl subroutines supplied by you and linked into this Package shall not be considered part of this Package. 8. The name of the Copyright Holder may not be used to endorse or promote products derived from this software without specific prior written permission. 9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. The End META.yml000644000000000000 147511614255470 14210 0ustar00rootroot000000000000Scrappy-0.94112090--- abstract: 'The All Powerful Web Spidering, Scraping, Creeping Crawling Framework' author: - 'Al Newkirk ' build_requires: {} configure_requires: ExtUtils::MakeMaker: 6.30 File::ShareDir::Install: 0.03 dynamic_config: 0 generated_by: 'Dist::Zilla version 4.200006, CPAN::Meta::Converter version 2.110930' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: 1.4 name: Scrappy requires: Array::Unique: 0 Cwd: 0 Data::Dumper: 0 DateTime: 0 DateTime::Format::SQLite: 0 File::Find::Rule: 0 File::ShareDir: 0 File::Slurp: 0 File::Util: 0 HTML::TreeBuilder: 0 Moose: 0 Parallel::ForkManager: 0 String::TT: 0 Template: 0 Test::More: 0 Try::Tiny: 0 URI: 0 WWW::Mechanize: 0 Web::Scraper: 0 YAML::Syck: 0 version: 0.94112090 MANIFEST000644000000000000 431711614255470 14066 0ustar00rootroot000000000000Scrappy-0.94112090Changes LICENSE MANIFEST META.yml Makefile.PL README README.mkdn bin/scrappy lib/Scrappy.pm lib/Scrappy.pm.bak lib/Scrappy/Action.pm lib/Scrappy/Action.pm.bak lib/Scrappy/Action/Download.pm lib/Scrappy/Action/Generate.pm lib/Scrappy/Action/Generate.pm.bak lib/Scrappy/Action/Help.pm lib/Scrappy/Action/Help.pm.bak lib/Scrappy/Logger.pm lib/Scrappy/Logger.pm.bak lib/Scrappy/Plugin.pm lib/Scrappy/Plugin.pm.bak lib/Scrappy/Plugin/RandomProxy.pm lib/Scrappy/Plugin/RandomProxy.pm.bak lib/Scrappy/Project.pm lib/Scrappy/Project.pm.bak lib/Scrappy/Project/Document.pm lib/Scrappy/Project/Document.pm.bak lib/Scrappy/Queue.pm lib/Scrappy/Queue.pm.bak lib/Scrappy/Scraper.pm lib/Scrappy/Scraper.pm.bak lib/Scrappy/Scraper/Control.pm lib/Scrappy/Scraper/Control.pm.bak lib/Scrappy/Scraper/Parser.pm lib/Scrappy/Scraper/Parser.pm.bak lib/Scrappy/Scraper/UserAgent.pm lib/Scrappy/Scraper/UserAgent.pm.bak lib/Scrappy/Session.pm lib/Scrappy/Session.pm.bak perltidy.pl perltidyrc share/support/chrome.txt share/support/explorer.txt share/support/firefox.txt share/support/opera.txt share/support/safari.txt t/00_load_scrappy.t t/00_test_function_back.t t/00_test_function_content.t t/00_test_function_control.t t/00_test_function_cookies.t t/00_test_function_crawl.t t/00_test_function_debug.t t/00_test_function_domain.t t/00_test_function_download.t t/00_test_function_form.t t/00_test_function_get.t t/00_test_function_log.t t/00_test_function_logger.t t/00_test_function_page_content_type.t t/00_test_function_page_data.t t/00_test_function_page_ishtml.t t/00_test_function_page_loaded.t t/00_test_function_page_match.t t/00_test_function_page_reload.t t/00_test_function_page_status.t t/00_test_function_page_text.t t/00_test_function_page_title.t t/00_test_function_parser.t t/00_test_function_pause.t t/00_test_function_plugin.t t/00_test_function_plugins.t t/00_test_function_post.t t/00_test_function_proxy.t t/00_test_function_queue.t t/00_test_function_request_denied.t t/00_test_function_response.t t/00_test_function_select.t t/00_test_function_session.t t/00_test_function_stash.t t/00_test_function_store.t t/00_test_function_url.t t/00_test_function_user_agent.t t/00_test_function_worker.t t/01_load_scrappy.t t/htdocs/empty t/log.yml t/session.yml t000755000000000000 011614255470 13034 5ustar00rootroot000000000000Scrappy-0.94112090log.yml000644000000000000 1554711614255470 14533 0ustar00rootroot000000000000Scrappy-0.94112090/t--- custom: - metadata: a: b c: d e: f g: h i: j k: l notation: User-defined error message here occurred: 2011-04-20 03:29:44 - metadata: // filename: t\08_test_logger_method.t // line: 31 // package: main a: b c: d e: f g: h i: j k: l notation: Verbosity event occurred: 2011-04-20 03:29:44 - metadata: a: b c: d e: f g: h i: j k: l notation: User-defined error message here occurred: 2011-04-20 03:30:09 - metadata: // filename: t\08_test_logger_method.t // line: 31 // package: main a: b c: d e: f g: h i: j k: l notation: Verbosity event occurred: 2011-04-20 03:30:09 - metadata: a: b c: d e: f g: h i: j k: l notation: User-defined error message here occurred: 2011-04-20 15:10:29 - metadata: // filename: t\08_test_logger_method.t // line: 31 // package: main a: b c: d e: f g: h i: j k: l notation: Verbosity event occurred: 2011-04-20 15:10:29 - metadata: a: b c: d e: f g: h i: j k: l notation: User-defined error message here occurred: 2011-04-20 15:13:50 - metadata: // filename: t\08_test_logger_method.t // line: 31 // package: main a: b c: d e: f g: h i: j k: l notation: Verbosity event occurred: 2011-04-20 15:13:50 - metadata: a: b c: d e: f g: h i: j k: l notation: User-defined error message here occurred: 2011-04-20 15:16:26 - metadata: // filename: t\08_test_logger_method.t // line: 31 // package: main a: b c: d e: f g: h i: j k: l notation: Verbosity event occurred: 2011-04-20 15:16:26 - metadata: a: b c: d e: f g: h i: j k: l notation: User-defined error message here occurred: 2011-04-20 15:20:28 - metadata: // filename: t\08_test_logger_method.t // line: 31 // package: main a: b c: d e: f g: h i: j k: l notation: Verbosity event occurred: 2011-04-20 15:20:28 - metadata: a: b c: d e: f g: h i: j k: l notation: User-defined error message here occurred: 2011-04-20 15:59:20 - metadata: // filename: t\08_test_logger_method.t // line: 31 // package: main a: b c: d e: f g: h i: j k: l notation: Verbosity event occurred: 2011-04-20 15:59:20 error: - notation: Great scotts, something strange has happened here occurred: 2011-04-20 03:29:44 - notation: Verbosity error message occurred: 2011-04-20 03:29:44 - notation: Great scotts, something strange has happened here occurred: 2011-04-20 03:30:09 - notation: Verbosity error message occurred: 2011-04-20 03:30:09 - notation: Great scotts, something strange has happened here occurred: 2011-04-20 15:10:29 - notation: Verbosity error message occurred: 2011-04-20 15:10:29 - notation: Great scotts, something strange has happened here occurred: 2011-04-20 15:13:50 - notation: Verbosity error message occurred: 2011-04-20 15:13:50 - notation: Great scotts, something strange has happened here occurred: 2011-04-20 15:16:26 - notation: Verbosity error message occurred: 2011-04-20 15:16:26 - notation: Great scotts, something strange has happened here occurred: 2011-04-20 15:20:28 - notation: Verbosity error message occurred: 2011-04-20 15:20:28 - notation: Great scotts, something strange has happened here occurred: 2011-04-20 15:59:20 - notation: Verbosity error message occurred: 2011-04-20 15:59:20 info: - notation: Captains log, stardate 123456 occurred: 2011-04-20 03:29:44 - metadata: foo: bar notation: Backwards me, whereami 987654 occurred: 2011-04-20 03:29:44 - notation: Verbosity information occurred: 2011-04-20 03:29:44 - notation: Captains log, stardate 123456 occurred: 2011-04-20 03:30:09 - metadata: foo: bar notation: Backwards me, whereami 987654 occurred: 2011-04-20 03:30:09 - notation: Verbosity information occurred: 2011-04-20 03:30:09 - notation: Captains log, stardate 123456 occurred: 2011-04-20 15:10:29 - metadata: foo: bar notation: Backwards me, whereami 987654 occurred: 2011-04-20 15:10:29 - notation: Verbosity information occurred: 2011-04-20 15:10:29 - notation: Captains log, stardate 123456 occurred: 2011-04-20 15:13:50 - metadata: foo: bar notation: Backwards me, whereami 987654 occurred: 2011-04-20 15:13:50 - notation: Verbosity information occurred: 2011-04-20 15:13:50 - notation: Captains log, stardate 123456 occurred: 2011-04-20 15:16:26 - metadata: foo: bar notation: Backwards me, whereami 987654 occurred: 2011-04-20 15:16:26 - notation: Verbosity information occurred: 2011-04-20 15:16:26 - notation: Captains log, stardate 123456 occurred: 2011-04-20 15:20:28 - metadata: foo: bar notation: Backwards me, whereami 987654 occurred: 2011-04-20 15:20:28 - notation: Verbosity information occurred: 2011-04-20 15:20:28 - notation: Captains log, stardate 123456 occurred: 2011-04-20 15:59:20 - metadata: foo: bar notation: Backwards me, whereami 987654 occurred: 2011-04-20 15:59:20 - notation: Verbosity information occurred: 2011-04-20 15:59:20 warn: - notation: This is not a drill occurred: 2011-04-20 03:29:44 - notation: Verbosity warning occurred: 2011-04-20 03:29:44 - notation: This is not a drill occurred: 2011-04-20 03:30:09 - notation: Verbosity warning occurred: 2011-04-20 03:30:09 - notation: This is not a drill occurred: 2011-04-20 15:10:29 - notation: Verbosity warning occurred: 2011-04-20 15:10:29 - notation: This is not a drill occurred: 2011-04-20 15:13:50 - notation: Verbosity warning occurred: 2011-04-20 15:13:50 - notation: This is not a drill occurred: 2011-04-20 15:16:26 - notation: Verbosity warning occurred: 2011-04-20 15:16:26 - notation: This is not a drill occurred: 2011-04-20 15:20:28 - notation: Verbosity warning occurred: 2011-04-20 15:20:28 - notation: This is not a drill occurred: 2011-04-20 15:59:20 - notation: Verbosity warning occurred: 2011-04-20 15:59:20 perltidyrc000644000000000000 220711614255467 15043 0ustar00rootroot000000000000Scrappy-0.94112090-l=79 # Max line width is 79 cols -i=4 # Indent level is 4 cols -ci=4 # Continuation indent is 4 cols -b -se # Errors to STDERR -vt=2 # Maximal vertical tightness -cti=0 # No extra indentation for closing brackets -pt=1 # Medium parenthesis tightness -bt=1 # Medium brace tightness -sbt=1 # Medium square bracket tightness -bbt=1 # Medium block brace tightness -nsfs # No space before semicolons -nolq # Don't outdent long quoted strings -wbb="% + - * / x != == >= <= =~ < > | & **= += *= &= <<= &&= -= /= |= >>= ||= .= %= ^= x=" # Break before all operators # extras/overrides/deviations from PBP --maximum-line-length=79 # be less generous --warning-output # Show warnings --maximum-consecutive-blank-lines=2 # default is 1 --nohanging-side-comments # troublesome for commented out code -isbc # block comments may only be indented if they have some space characters before the # -ci=2 # Continuation indent is 2 cols # we use version control, so just rewrite the file -b # for the up-tight folk :) -pt=2 # High parenthesis tightness -bt=2 # High brace tightness -sbt=2 # High square bracket tightness perltidy.pl000644000000000000 117611614255467 15134 0ustar00rootroot000000000000Scrappy-0.94112090my $ver = $ARGV[0] ? "./$ARGV[0]" : "."; print "... cleaning up $ver"; system "perltidy --pro=perltidyrc " . $_ for glob "$ver/lib/*.pm"; system "perltidy --pro=perltidyrc " . $_ for glob "$ver/lib/Scrappy/*.pm"; system "perltidy --pro=perltidyrc " . $_ for glob "$ver/lib/Scrappy/Action/*.pm"; system "perltidy --pro=perltidyrc " . $_ for glob "$ver/lib/Scrappy/Plugin/*.pm"; system "perltidy --pro=perltidyrc " . $_ for glob "$ver/lib/Scrappy/Project/*.pm"; system "perltidy --pro=perltidyrc " . $_ for glob "$ver/lib/Scrappy/Scraper/*.pm"; if ($ver ne '.') { system "rm $ver.tar.gz"; system "tar -czf $ver.tar.gz $ver/*"; }README.mkdn000644000000000000 4525311614255467 14577 0ustar00rootroot000000000000Scrappy-0.94112090# NAME Scrappy - The All Powerful Web Spidering, Scraping, Creeping Crawling Framework # VERSION version 0.94112090 # SYNOPSIS #!/usr/bin/perl use Scrappy; my $scraper = Scrappy->new; $scraper->crawl('http://search.cpan.org/recent', '/recent' => { '#cpansearch li a' => sub { print $_[1]->{href}, "\n"; } } ); And now manually, ... without crawl, the above is similar to the following ... #!/usr/bin/perl use Scrappy; my $scraper = Scrappy->new; if ($scraper->get($url)->page_loaded) { $scraper->select('#cpansearch li a')->each(sub{ print shift->{href}, "\n"; }); } # DESCRIPTION Scrappy is an easy (and hopefully fun) way of scraping, spidering, and/or harvesting information from web pages, web services, and more. Scrappy is a feature rich, flexible, intelligent web automation tool. Scrappy (pronounced Scrap+Pee) == 'Scraper Happy' or 'Happy Scraper'; If you like you may call it Scrapy (pronounced Scrape+Pee) although Python has a web scraping framework by that name and this module is not a port of that one. ## FEATURES Scrappy provides a framework containing all the tools neccessary to create a simple yet powerful web scraper. At its core, Scrappy loads an array of features for access control, event logging, session handling, url matching, web request and response handling, proxy management, web scraping, and downloading. Futhermore, Scrappy provides a simple Moose-based plugin system that allows Scrappy to be easily extended. my $scraper = Scrappy->new; $scraper->control; # Scrappy::Scraper::Control (access control) $scraper->parser; # Scrappy::Scraper::Parser (web scraper) $scraper->user_agent; # Scrappy::Scraper::UserAgent (user-agent tools) $scraper->logger; # Scrappy::Logger (event logger) $scraper->queue; # Scrappy::Queue (flow control for loops) $scraper->session; # Scrappy::Session (session management) Please see the METHODS section for a more in-depth look at all Scrappy functionality. ## ATTRIBUTES The following is a list of object attributes available with every Scrappy instance, attributes always return an instance of the class they represent. ### content The content attribute holds the [HTTP::Response](http://search.cpan.org/perldoc?HTTP::Response) object of the current request. Returns undef if no page has been successfully fetched. my $scraper = Scrappy->new; $scraper->content; ### control The control attribute holds the [Scrappy::Scraper::Control](http://search.cpan.org/perldoc?Scrappy::Scraper::Control) object which is used the provide access conrtol to the scraper. my $scraper = Scrappy->new; $scraper->control; ... $scraper->control->restrict('google.com'); ... $scraper->control->allow('cpan.org'); ... if $scraper->control->is_allowed($url); ### debug The debug attribute holds a boolean which controls whether event logs are captured. my $scraper = Scrappy->new; $scraper->debug(1); ### logger The logger attribute holds the [Scrappy::Logger](http://search.cpan.org/perldoc?Scrappy::Logger) object which is used to provide event logging capabilities to the scraper. my $scraper = Scrappy->new; $scraper->logger; ### parser The parser attribute holds the [Scrappy::Scraper::Parser](http://search.cpan.org/perldoc?Scrappy::Scraper::Parser) object which is used to scrape html data from the specified source material. my $scraper = Scrappy->new; $scraper->parser; ### plugins The plugins attribute holds the [Scrappy::Plugin](http://search.cpan.org/perldoc?Scrappy::Plugin) object which is an interface used to load plugins. my $scraper = Scrappy->new; $scraper->plugins; ### queue The queue attribute holds the [Scrappy::Queue](http://search.cpan.org/perldoc?Scrappy::Queue) object which is used to provide flow-control for the standard loop approach to crawling. my $scraper = Scrappy->new; $scraper->queue; ### session The session attribute holds the [Scrappy::Session](http://search.cpan.org/perldoc?Scrappy::Session) object which is used to provide session support and persistent data across executions. my $scraper = Scrappy->new; $scraper->session; ### user_agent The user_agent attribute holds the [Scrappy::Scraper::UserAgent](http://search.cpan.org/perldoc?Scrappy::Scraper::UserAgent) object which is used to set and manipulate the user-agent header of the scraper. my $scraper = Scrappy->new; $scraper->user_agent; ### worker The worker attribute holds the [WWW::Mechanize](http://search.cpan.org/perldoc?WWW::Mechanize) object which is used navigate web pages and provide request and response header information. my $scraper = Scrappy->new; $scraper->worker; # METHODS ## back The back method is the equivalent of hitting the "back" button in a browser, it returns the previous page (response) and returns that URL, it will not backtrack beyond the first request. my $scraper = Scrappy->new; $scraper->get(...); ... $scraper->get(...); ... my $last_url = $scraper->back; ## cookies The cookies method returns an HTTP::Cookie object. Note! Cookies can be made persistent by enabling session-support. Session-support is enable by simply specifying a file to be used. my $scraper = Scrappy->new; $scraper->session->write('session.yml'); # enable session support $scraper->get(...); my $cookies = $scraper->cookies; ## crawl The crawl method is very useful when it is desired to crawl an entire website or at-least partially, it automates the tasks of creating a queue, fetching and parsing html pages, and establishing simple flow-control. See the SYNOPSIS for a simplified example, ... the following is a more complex example. my $scrappy = Scrappy->new; $scrappy->crawl('http://search.cpan.org/recent', '/recent' => { '#cpansearch li a' => sub { my ($self, $item) = @_; # follow all recent modules from search.cpan.org $self->queue->add($item->{href}); } }, '/~:author/:name-:version/' => { 'body' => sub { my ($self, $item, $args) = @_; my $reviews = $self ->select('.box table tr')->focus(3)->select('td.cell small a') ->data->[0]->{text}; $reviews = $reviews =~ /\d+ Reviews/ ? $reviews : '0 reviews'; print "found $args->{name} version $args->{version} ". "[$reviews] by $args->{author}\n"; } } ); ## domain The domain method returns the domain host of the current page. Local pages, e.g. file:///this/that/the_other will return undef. my $scraper = Scrappy->new; $scraper->get('http://www.google.com'); print $scraper->domain; # print www.google.com ## download The download method is passed a URL, a Download Directory Path and a optionally a File Path, then it will follow the link and store the response contents into the specified file without leaving the current page. Basically it downloads the contents of the request (especially when the request pushes a file download). If a File Path is not specified, Scrappy will attempt to name the file automatically resorting to a random 6-charater string only if all else fails, then returns to the originating page. my $scaper = Scrappy->new; my $requested_url = '...'; $scraper->download($requested_url, '/tmp'); # supply your own file name $scraper->download($requested_url, '/tmp', 'somefile.txt'); ## dumper The dumper method is a convenience feature that passes the passed-in objects to [Data::Dumper](http://search.cpan.org/perldoc?Data::Dumper) which in turn returns a stringified representation of that object/data-structure. my $scaper = Scrappy->new; my $requested_url = '...'; $scraper->get($requested_url); my $data = $scraper->select('//a[@href]')->data; # print out the scraped data print $scraper->dumper($data); ## form The form method is used to submit a form on the current page. my $scraper = Scrappy->new; $scraper->form(fields => { username => 'mrmagoo', password => 'foobarbaz' }); # or more specifically, for pages with multiple forms $scraper->form(form_name => 'login_form', fields => { username => 'mrmagoo', password => 'foobarbaz' }); $scraper->form(form_number => 1, fields => { username => 'mrmagoo', password => 'foobarbaz' }); ## get The get method takes a URL or URI object, fetches a web page and returns the Scrappy object. my $scraper = Scrappy->new; if ($scraper->get($new_url)->page_loaded) { ... } # $self->content has the HTTP::Response object ## log The log method logs an event with the event logger. my $scraper = Scrappy->new; $scraper->debug(1); # unneccessary, on by default $scraper->logger->verbose(1); # more detailed log $scraper->log('error', 'Somthing bad happened'); ... $scraper->log('info', 'Somthing happened'); $scraper->log('warn', 'Somthing strange happened'); $scraper->log('coolness', 'Somthing cool happened'); Note! Event logs are always recorded but never automatically written to a file unless explicitly told to do so using the following: $scraper->logger->write('log.yml'); ## page_content_type The page_content_type method returns the content_type of the current page. my $scraper = Scrappy->new; $scraper->get('http://www.google.com/'); print $scraper->page_content_type; # prints text/html ## page_data The page_data method returns the HTML content of the current page, additionally this method when passed a string with HTML markup, updates the content of the current page with that data and returns the modified content. my $scraper = Scrappy->new; $scraper->get(...); my $html = $scraper->page_data; ## page_ishtml The page_ishtml method returns true/false based on whether our content is HTML, according to the HTTP headers. my $scraper = Scrappy->new; $scraper->get($requested_url); if ($scraper->is_html) { ... } ## page_loaded The page_loaded method returns true/false based on whether the last request was successful. my $scraper = Scrappy->new; $scraper->get($requested_url); if ($scraper->page_loaded) { ... } ## page_match The page_match method checks the passed-in URL (or URL of the current page if left empty) against the URL pattern (route) defined. If URL is a match, it will return the parameters of that match much in the same way a modern web application framework processes URL routes. my $url = 'http://somesite.com/tags/awesomeness'; ... my $scraper = Scrappy->new; # match against the current page my $this = $scraper->page_match('/tags/:tag'); if ($this) { print $this->{'tag'}; # ... prints awesomeness } .. or .. # match against a passed url my $this = $scraper->page_match('/tags/:tag', $url, { host => 'somesite.com' }); if ($this) { print "This is the ", $this->{tag}, " page"; # ... prints this is the awesomeness page } ## page_reload The page_reload method acts like the refresh button in a browser, it simply repeats the current request. my $scraper = Scrappy->new; $scraper->get(...); ... $scraper->reload; ## page_status The page_status method returns the 3-digit HTTP status code of the response. my $scraper = Scrappy->new; $scraper->get(...); if ($scraper->page_status == 200) { ... } ## page_text The page_text method returns a text representation of the last page having all HTML markup stripped. my $scraper = Scrappy->new; $scraper->get(...); my $text = $scraper->page_text; ## page_title The page_title method returns the content of the title tag if the current page is HTML, otherwise returns undef. my $scraper = Scrappy->new; $scraper->get('http://www.google.com/'); my $title = $scraper->page_title; print $title; # print Google ## pause This method sets breaks between your requests in an attempt to simulate human interaction. my $scraper = Scrappy->new; $scraper->pause(20); $scraper->get($request_1); $scraper->get($request_2); $scraper->get($request_3); Given the above example, there will be a 20 sencond break between each request made, get, post, request, etc., You can also specify a range to have the pause method select from at random... $scraper->pause(5,20); $scraper->get($request_1); $scraper->get($request_2); # reset/turn it off $scraper->pause(0); print "I slept for ", ($scraper->pause), " seconds"; Note! The download method is exempt from any automatic pausing. ## plugin The plugin method allow you to load a plugin. Using the appropriate case is recommended but not neccessary. See [Scrappy::Plugin](http://search.cpan.org/perldoc?Scrappy::Plugin) for more information. my $scraper = Scrappy->new; $scraper->plugin('foo_bar'); # will load Scrappy::Plugin::FooBar $scraper->plugin('foo-bar'); # will load Scrappy::Plugin::Foo::Bar $scraper->plugin('Foo::Bar'); # will load Scrappy::Plugin::Foo::Bar # more pratically $scraper->plugin('whois', 'spammer_check'); ... somewhere in code my $var = $scraper->plugin_method(); # example using core plugin Scrappy::Plugin::RandomProxy my $s = Scrappy->new; $s->plugin('random_proxy'); $s->use_random_proxy; $s->get(...); ## post The post method takes a URL, a hashref of key/value pairs, and optionally an array of key/value pairs, and posts that data to the specified URL, then returns an HTTP::Response object. my $scraper = Scrappy->new; $scraper->post($requested_url, { input_a => 'value_a', input_b => 'value_b' }); # w/additional headers my %headers = ('Content-Type' => 'multipart/form-data'); $scraper->post($requested_url, { input_a => 'value_a', input_b => 'value_b' }, %headers); Note! The most common post headers for content-type are application/x-www-form-urlencoded and multipart/form-data. ## proxy The proxy method will set the proxy for the next request to be tunneled through. my $scraper = Scrappy->new; $scraper->proxy('http', 'http://proxy1.example.com:8000/'); $scraper->get($requested_url); $scraper->proxy('http', 'ftp', 'http://proxy2.example.com:8000/'); $scraper->get($requested_url); # best practice when using proxies use Tiny::Try; my $proxie = Scrappy->new; $proxie->proxy('http', 'http://proxy.example.com:8000/'); try { $proxie->get($requested_url); } catch { die "Proxy failed\n"; }; Note! When using a proxy to perform requests, be aware that if they fail your program will die unless you wrap your code in an eval statement or use a try/catch mechanism. In the example above we use Tiny::Try to trap any errors that might occur when using proxy. ## request_denied The request_denied method is a simple shortcut to determine if the page you requested got loaded or redirected. This method is very useful on systems that require authentication and redirect if not authorized. This function return boolean, 1 if the current page doesn't match the requested page. my $scraper = Scrappy->new; $scraper->get($url_to_dashboard); if ($scraper->request_denied) { # do login, again } else { # resume ... } ## response The response method returns the HTTP::Repsonse object of the current page. my $scraper = Scrappy->new; $scraper->get(...); my $res = $scraper->response; ## select The select method takes XPATH or CSS selectors and returns a [Scrappy::Scraper::Parser](http://search.cpan.org/perldoc?Scrappy::Scraper::Parser) object which contains the matching elements. my $scraper = Scrappy->new; # return a list of links my $list = $scraper->select('#profile li a')->data; # see Scrappy::Scraper::Parser foreach my $link (@{$list}) { print $link->{href}, "\n"; } # Zoom in on specific chunks of html code using the following ... my $list = $scraper ->select('#container table tr') # select all rows ->focus(4) # focus on the 5th row ->select('div div')->data; # The code above selects the div > div inside of the 5th tr in #container table # Access attributes html, text and other attributes as follows... $element = $scraper->select('table')->data->[0]; $element->{html}; # HTML representation of the table $element->{text}; # Table stripped of all HTML $element->{cellpadding}; # cellpadding $element->{height}; # ... ## stash The stash method sets a stash (shared) variable or returns a reference to the entire stash object. my $scraper = Scrappy->new; $scraper->stash(age => 31); print 'stash access works' if $scraper->stash('age') == $scraper->stash->{age}; my @array = (1..20); $scraper->stash(integers => [@array]); ## store The store method stores the contents of the current page into the specified file. If the content-type does not begin with 'text', the content is saved as binary data. my $scraper = Scrappy->new; $scraper->get($requested_url); $scraper->store('/tmp/foo.html'); ## url The url method returns the complete URL for the current page. my $scraper = Scrappy->new; $scraper->get('http://www.google.com/'); print $scraper->url; # prints http://www.google.com/ # AUTHOR Al Newkirk # COPYRIGHT AND LICENSE This software is copyright (c) 2010 by awncorp. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.bin000755000000000000 011614255470 13341 5ustar00rootroot000000000000Scrappy-0.94112090scrappy000644000000000000 175211614255470 15111 0ustar00rootroot000000000000Scrappy-0.94112090/bin#!/usr/bin/env perl use strict; use warnings; use File::Basename 'dirname'; use File::Spec; =head1 NAME scrappy - The Scrappy Command-Line Utility =head1 SYNOPSIS $ scrappy $ scrappy ... $ scrappy generate project MyApp For fun, download a web page using the Scrappy Action Download, .e.g .... $ scrappy download page http://search.cpan.org/ ... easy huh, checkout some of the existing actions or create your own with Scrappy, your All Powerful Web Spidering, Scraping, Creeping Crawling Framework. =head1 DESCRIPTION List and run L actions to build web crawlers, generate boiler-plate code and more. Install actions from the L namespace. =cut # is Scrappy installed eval 'use Scrappy::Action'; die <new->execute(@ARGV); 1;Makefile.PL000644000000000000 324211614255470 14703 0ustar00rootroot000000000000Scrappy-0.94112090 use strict; use warnings; use ExtUtils::MakeMaker 6.30; use File::ShareDir::Install; install_share dist => "share"; my %WriteMakefileArgs = ( 'ABSTRACT' => 'The All Powerful Web Spidering, Scraping, Creeping Crawling Framework', 'AUTHOR' => 'Al Newkirk ', 'BUILD_REQUIRES' => {}, 'CONFIGURE_REQUIRES' => { 'ExtUtils::MakeMaker' => '6.30', 'File::ShareDir::Install' => '0.03' }, 'DISTNAME' => 'Scrappy', 'EXE_FILES' => [ 'bin/scrappy' ], 'LICENSE' => 'perl', 'NAME' => 'Scrappy', 'PREREQ_PM' => { 'Array::Unique' => '0', 'Cwd' => '0', 'Data::Dumper' => '0', 'DateTime' => '0', 'DateTime::Format::SQLite' => '0', 'File::Find::Rule' => '0', 'File::ShareDir' => '0', 'File::Slurp' => '0', 'File::Util' => '0', 'HTML::TreeBuilder' => '0', 'Moose' => '0', 'Parallel::ForkManager' => '0', 'String::TT' => '0', 'Template' => '0', 'Test::More' => '0', 'Try::Tiny' => '0', 'URI' => '0', 'WWW::Mechanize' => '0', 'Web::Scraper' => '0', 'YAML::Syck' => '0' }, 'VERSION' => '0.94112090', 'test' => { 'TESTS' => 't/*.t' } ); unless ( eval { ExtUtils::MakeMaker->VERSION(6.56) } ) { my $br = delete $WriteMakefileArgs{BUILD_REQUIRES}; my $pp = $WriteMakefileArgs{PREREQ_PM}; for my $mod ( keys %$br ) { if ( exists $pp->{$mod} ) { $pp->{$mod} = $br->{$mod} if $br->{$mod} > $pp->{$mod}; } else { $pp->{$mod} = $br->{$mod}; } } } delete $WriteMakefileArgs{CONFIGURE_REQUIRES} unless eval { ExtUtils::MakeMaker->VERSION(6.52) }; WriteMakefile(%WriteMakefileArgs); package MY; use File::ShareDir::Install qw(postamble); session.yml000644000000000000 1511614255470 15335 0ustar00rootroot000000000000Scrappy-0.94112090/t--- age: 25 lib000755000000000000 011614255470 13337 5ustar00rootroot000000000000Scrappy-0.94112090Scrappy.pm000644000000000000 4710611614255470 15505 0ustar00rootroot000000000000Scrappy-0.94112090/lib# ABSTRACT: The All Powerful Web Spidering, Scraping, Creeping Crawling Framework # Dist::Zilla: +PodWeaver package Scrappy; BEGIN { $Scrappy::VERSION = '0.94112090'; } # load OO System use Moose; # load other libraries use Carp; extends 'Scrappy::Scraper'; sub crawl { my ($self, $starting_url, %pages) = @_; croak( 'Please provide a starting URL and a valid configuration before crawling' ) unless ($self && $starting_url && keys %pages); # register the starting url $self->queue->add($starting_url); # start the crawl loop while (my $url = $self->queue->next) { # check if the url matches against any registered pages foreach my $page (keys %pages) { my $data = $self->page_match($page, $url); if ($data) { # found a page match, fetch and scrape the page for data if ($self->get($url)->page_loaded) { foreach my $selector (keys(%{$pages{$page}})) { # loop through resultset foreach my $item (@{$self->select($selector)->data}) { # execute selector code $pages{$page}->{$selector}->($self, $item, $data); } } } } } } return $self; } 1; __END__ =pod =head1 NAME Scrappy - The All Powerful Web Spidering, Scraping, Creeping Crawling Framework =head1 VERSION version 0.94112090 =head1 SYNOPSIS #!/usr/bin/perl use Scrappy; my $scraper = Scrappy->new; $scraper->crawl('http://search.cpan.org/recent', '/recent' => { '#cpansearch li a' => sub { print $_[1]->{href}, "\n"; } } ); And now manually, ... without crawl, the above is similar to the following ... #!/usr/bin/perl use Scrappy; my $scraper = Scrappy->new; if ($scraper->get($url)->page_loaded) { $scraper->select('#cpansearch li a')->each(sub{ print shift->{href}, "\n"; }); } =head1 DESCRIPTION Scrappy is an easy (and hopefully fun) way of scraping, spidering, and/or harvesting information from web pages, web services, and more. Scrappy is a feature rich, flexible, intelligent web automation tool. Scrappy (pronounced Scrap+Pee) == 'Scraper Happy' or 'Happy Scraper'; If you like you may call it Scrapy (pronounced Scrape+Pee) although Python has a web scraping framework by that name and this module is not a port of that one. =head2 FEATURES Scrappy provides a framework containing all the tools neccessary to create a simple yet powerful web scraper. At its core, Scrappy loads an array of features for access control, event logging, session handling, url matching, web request and response handling, proxy management, web scraping, and downloading. Futhermore, Scrappy provides a simple Moose-based plugin system that allows Scrappy to be easily extended. my $scraper = Scrappy->new; $scraper->control; # Scrappy::Scraper::Control (access control) $scraper->parser; # Scrappy::Scraper::Parser (web scraper) $scraper->user_agent; # Scrappy::Scraper::UserAgent (user-agent tools) $scraper->logger; # Scrappy::Logger (event logger) $scraper->queue; # Scrappy::Queue (flow control for loops) $scraper->session; # Scrappy::Session (session management) Please see the METHODS section for a more in-depth look at all Scrappy functionality. =head2 ATTRIBUTES The following is a list of object attributes available with every Scrappy instance, attributes always return an instance of the class they represent. =head3 content The content attribute holds the L object of the current request. Returns undef if no page has been successfully fetched. my $scraper = Scrappy->new; $scraper->content; =head3 control The control attribute holds the L object which is used the provide access conrtol to the scraper. my $scraper = Scrappy->new; $scraper->control; ... $scraper->control->restrict('google.com'); ... $scraper->control->allow('cpan.org'); ... if $scraper->control->is_allowed($url); =head3 debug The debug attribute holds a boolean which controls whether event logs are captured. my $scraper = Scrappy->new; $scraper->debug(1); =head3 logger The logger attribute holds the L object which is used to provide event logging capabilities to the scraper. my $scraper = Scrappy->new; $scraper->logger; =head3 parser The parser attribute holds the L object which is used to scrape html data from the specified source material. my $scraper = Scrappy->new; $scraper->parser; =head3 plugins The plugins attribute holds the L object which is an interface used to load plugins. my $scraper = Scrappy->new; $scraper->plugins; =head3 queue The queue attribute holds the L object which is used to provide flow-control for the standard loop approach to crawling. my $scraper = Scrappy->new; $scraper->queue; =head3 session The session attribute holds the L object which is used to provide session support and persistent data across executions. my $scraper = Scrappy->new; $scraper->session; =head3 user_agent The user_agent attribute holds the L object which is used to set and manipulate the user-agent header of the scraper. my $scraper = Scrappy->new; $scraper->user_agent; =head3 worker The worker attribute holds the L object which is used navigate web pages and provide request and response header information. my $scraper = Scrappy->new; $scraper->worker; =head1 METHODS =head2 back The back method is the equivalent of hitting the "back" button in a browser, it returns the previous page (response) and returns that URL, it will not backtrack beyond the first request. my $scraper = Scrappy->new; $scraper->get(...); ... $scraper->get(...); ... my $last_url = $scraper->back; =head2 cookies The cookies method returns an HTTP::Cookie object. Note! Cookies can be made persistent by enabling session-support. Session-support is enable by simply specifying a file to be used. my $scraper = Scrappy->new; $scraper->session->write('session.yml'); # enable session support $scraper->get(...); my $cookies = $scraper->cookies; =head2 crawl The crawl method is very useful when it is desired to crawl an entire website or at-least partially, it automates the tasks of creating a queue, fetching and parsing html pages, and establishing simple flow-control. See the SYNOPSIS for a simplified example, ... the following is a more complex example. my $scrappy = Scrappy->new; $scrappy->crawl('http://search.cpan.org/recent', '/recent' => { '#cpansearch li a' => sub { my ($self, $item) = @_; # follow all recent modules from search.cpan.org $self->queue->add($item->{href}); } }, '/~:author/:name-:version/' => { 'body' => sub { my ($self, $item, $args) = @_; my $reviews = $self ->select('.box table tr')->focus(3)->select('td.cell small a') ->data->[0]->{text}; $reviews = $reviews =~ /\d+ Reviews/ ? $reviews : '0 reviews'; print "found $args->{name} version $args->{version} ". "[$reviews] by $args->{author}\n"; } } ); =head2 domain The domain method returns the domain host of the current page. Local pages, e.g. file:///this/that/the_other will return undef. my $scraper = Scrappy->new; $scraper->get('http://www.google.com'); print $scraper->domain; # print www.google.com =head2 download The download method is passed a URL, a Download Directory Path and a optionally a File Path, then it will follow the link and store the response contents into the specified file without leaving the current page. Basically it downloads the contents of the request (especially when the request pushes a file download). If a File Path is not specified, Scrappy will attempt to name the file automatically resorting to a random 6-charater string only if all else fails, then returns to the originating page. my $scaper = Scrappy->new; my $requested_url = '...'; $scraper->download($requested_url, '/tmp'); # supply your own file name $scraper->download($requested_url, '/tmp', 'somefile.txt'); =head2 dumper The dumper method is a convenience feature that passes the passed-in objects to L which in turn returns a stringified representation of that object/data-structure. my $scaper = Scrappy->new; my $requested_url = '...'; $scraper->get($requested_url); my $data = $scraper->select('//a[@href]')->data; # print out the scraped data print $scraper->dumper($data); =head2 form The form method is used to submit a form on the current page. my $scraper = Scrappy->new; $scraper->form(fields => { username => 'mrmagoo', password => 'foobarbaz' }); # or more specifically, for pages with multiple forms $scraper->form(form_name => 'login_form', fields => { username => 'mrmagoo', password => 'foobarbaz' }); $scraper->form(form_number => 1, fields => { username => 'mrmagoo', password => 'foobarbaz' }); =head2 get The get method takes a URL or URI object, fetches a web page and returns the Scrappy object. my $scraper = Scrappy->new; if ($scraper->get($new_url)->page_loaded) { ... } # $self->content has the HTTP::Response object =head2 log The log method logs an event with the event logger. my $scraper = Scrappy->new; $scraper->debug(1); # unneccessary, on by default $scraper->logger->verbose(1); # more detailed log $scraper->log('error', 'Somthing bad happened'); ... $scraper->log('info', 'Somthing happened'); $scraper->log('warn', 'Somthing strange happened'); $scraper->log('coolness', 'Somthing cool happened'); Note! Event logs are always recorded but never automatically written to a file unless explicitly told to do so using the following: $scraper->logger->write('log.yml'); =head2 page_content_type The page_content_type method returns the content_type of the current page. my $scraper = Scrappy->new; $scraper->get('http://www.google.com/'); print $scraper->page_content_type; # prints text/html =head2 page_data The page_data method returns the HTML content of the current page, additionally this method when passed a string with HTML markup, updates the content of the current page with that data and returns the modified content. my $scraper = Scrappy->new; $scraper->get(...); my $html = $scraper->page_data; =head2 page_ishtml The page_ishtml method returns true/false based on whether our content is HTML, according to the HTTP headers. my $scraper = Scrappy->new; $scraper->get($requested_url); if ($scraper->is_html) { ... } =head2 page_loaded The page_loaded method returns true/false based on whether the last request was successful. my $scraper = Scrappy->new; $scraper->get($requested_url); if ($scraper->page_loaded) { ... } =head2 page_match The page_match method checks the passed-in URL (or URL of the current page if left empty) against the URL pattern (route) defined. If URL is a match, it will return the parameters of that match much in the same way a modern web application framework processes URL routes. my $url = 'http://somesite.com/tags/awesomeness'; ... my $scraper = Scrappy->new; # match against the current page my $this = $scraper->page_match('/tags/:tag'); if ($this) { print $this->{'tag'}; # ... prints awesomeness } .. or .. # match against a passed url my $this = $scraper->page_match('/tags/:tag', $url, { host => 'somesite.com' }); if ($this) { print "This is the ", $this->{tag}, " page"; # ... prints this is the awesomeness page } =head2 page_reload The page_reload method acts like the refresh button in a browser, it simply repeats the current request. my $scraper = Scrappy->new; $scraper->get(...); ... $scraper->reload; =head2 page_status The page_status method returns the 3-digit HTTP status code of the response. my $scraper = Scrappy->new; $scraper->get(...); if ($scraper->page_status == 200) { ... } =head2 page_text The page_text method returns a text representation of the last page having all HTML markup stripped. my $scraper = Scrappy->new; $scraper->get(...); my $text = $scraper->page_text; =head2 page_title The page_title method returns the content of the title tag if the current page is HTML, otherwise returns undef. my $scraper = Scrappy->new; $scraper->get('http://www.google.com/'); my $title = $scraper->page_title; print $title; # print Google =head2 pause This method sets breaks between your requests in an attempt to simulate human interaction. my $scraper = Scrappy->new; $scraper->pause(20); $scraper->get($request_1); $scraper->get($request_2); $scraper->get($request_3); Given the above example, there will be a 20 sencond break between each request made, get, post, request, etc., You can also specify a range to have the pause method select from at random... $scraper->pause(5,20); $scraper->get($request_1); $scraper->get($request_2); # reset/turn it off $scraper->pause(0); print "I slept for ", ($scraper->pause), " seconds"; Note! The download method is exempt from any automatic pausing. =head2 plugin The plugin method allow you to load a plugin. Using the appropriate case is recommended but not neccessary. See L for more information. my $scraper = Scrappy->new; $scraper->plugin('foo_bar'); # will load Scrappy::Plugin::FooBar $scraper->plugin('foo-bar'); # will load Scrappy::Plugin::Foo::Bar $scraper->plugin('Foo::Bar'); # will load Scrappy::Plugin::Foo::Bar # more pratically $scraper->plugin('whois', 'spammer_check'); ... somewhere in code my $var = $scraper->plugin_method(); # example using core plugin Scrappy::Plugin::RandomProxy my $s = Scrappy->new; $s->plugin('random_proxy'); $s->use_random_proxy; $s->get(...); =head2 post The post method takes a URL, a hashref of key/value pairs, and optionally an array of key/value pairs, and posts that data to the specified URL, then returns an HTTP::Response object. my $scraper = Scrappy->new; $scraper->post($requested_url, { input_a => 'value_a', input_b => 'value_b' }); # w/additional headers my %headers = ('Content-Type' => 'multipart/form-data'); $scraper->post($requested_url, { input_a => 'value_a', input_b => 'value_b' }, %headers); Note! The most common post headers for content-type are application/x-www-form-urlencoded and multipart/form-data. =head2 proxy The proxy method will set the proxy for the next request to be tunneled through. my $scraper = Scrappy->new; $scraper->proxy('http', 'http://proxy1.example.com:8000/'); $scraper->get($requested_url); $scraper->proxy('http', 'ftp', 'http://proxy2.example.com:8000/'); $scraper->get($requested_url); # best practice when using proxies use Tiny::Try; my $proxie = Scrappy->new; $proxie->proxy('http', 'http://proxy.example.com:8000/'); try { $proxie->get($requested_url); } catch { die "Proxy failed\n"; }; Note! When using a proxy to perform requests, be aware that if they fail your program will die unless you wrap your code in an eval statement or use a try/catch mechanism. In the example above we use Tiny::Try to trap any errors that might occur when using proxy. =head2 request_denied The request_denied method is a simple shortcut to determine if the page you requested got loaded or redirected. This method is very useful on systems that require authentication and redirect if not authorized. This function return boolean, 1 if the current page doesn't match the requested page. my $scraper = Scrappy->new; $scraper->get($url_to_dashboard); if ($scraper->request_denied) { # do login, again } else { # resume ... } =head2 response The response method returns the HTTP::Repsonse object of the current page. my $scraper = Scrappy->new; $scraper->get(...); my $res = $scraper->response; =head2 select The select method takes XPATH or CSS selectors and returns a L object which contains the matching elements. my $scraper = Scrappy->new; # return a list of links my $list = $scraper->select('#profile li a')->data; # see Scrappy::Scraper::Parser foreach my $link (@{$list}) { print $link->{href}, "\n"; } # Zoom in on specific chunks of html code using the following ... my $list = $scraper ->select('#container table tr') # select all rows ->focus(4) # focus on the 5th row ->select('div div')->data; # The code above selects the div > div inside of the 5th tr in #container table # Access attributes html, text and other attributes as follows... $element = $scraper->select('table')->data->[0]; $element->{html}; # HTML representation of the table $element->{text}; # Table stripped of all HTML $element->{cellpadding}; # cellpadding $element->{height}; # ... =head2 stash The stash method sets a stash (shared) variable or returns a reference to the entire stash object. my $scraper = Scrappy->new; $scraper->stash(age => 31); print 'stash access works' if $scraper->stash('age') == $scraper->stash->{age}; my @array = (1..20); $scraper->stash(integers => [@array]); =head2 store The store method stores the contents of the current page into the specified file. If the content-type does not begin with 'text', the content is saved as binary data. my $scraper = Scrappy->new; $scraper->get($requested_url); $scraper->store('/tmp/foo.html'); =head2 url The url method returns the complete URL for the current page. my $scraper = Scrappy->new; $scraper->get('http://www.google.com/'); print $scraper->url; # prints http://www.google.com/ =head1 AUTHOR Al Newkirk =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2010 by awncorp. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut htdocs000755000000000000 011614255470 14320 5ustar00rootroot000000000000Scrappy-0.94112090/tempty000644000000000000 011614255470 15446 0ustar00rootroot000000000000Scrappy-0.94112090/t/htdocsScrappy.pm.bak000644000000000000 4714711614255470 16246 0ustar00rootroot000000000000Scrappy-0.94112090/lib# ABSTRACT: The All Powerful Web Spidering, Scraping, Creeping Crawling Framework # Dist::Zilla: +PodWeaver package Scrappy; BEGIN { $Scrappy::VERSION = '0.94112090'; } # load OO System use Moose; # load other libraries use Carp; extends 'Scrappy::Scraper'; sub crawl { my ($self, $starting_url, %pages) = @_; croak( 'Please provide a starting URL and a valid configuration before crawling' ) unless ($self && $starting_url && keys %pages); # register the starting url $self->queue->add($starting_url); # start the crawl loop while (my $url = $self->queue->next) { # check if the url matches against any registered pages foreach my $page (keys %pages) { my $data = $self->page_match($page, $url); if ($data) { # found a page match, fetch and scrape the page for data if ($self->get($url)->page_loaded) { foreach my $selector (keys(%{$pages{$page}})) { # loop through resultset foreach my $item (@{$self->select($selector)->data}) { # execute selector code $pages{$page}->{$selector}->($self, $item, $data); } } } } } } return $self; } 1; __END__ =pod =head1 NAME Scrappy - The All Powerful Web Spidering, Scraping, Creeping Crawling Framework =head1 VERSION version 0.94112090 =head1 SYNOPSIS #!/usr/bin/perl use Scrappy; my $scraper = Scrappy->new; $scraper->crawl('http://search.cpan.org/recent', '/recent' => { '#cpansearch li a' => sub { print $_[1]->{href}, "\n"; } } ); And now manually, ... without crawl, the above is similar to the following ... #!/usr/bin/perl use Scrappy; my $scraper = Scrappy->new; if ($scraper->get($url)->page_loaded) { $scraper->select('#cpansearch li a')->each(sub{ print shift->{href}, "\n"; }); } =head1 DESCRIPTION Scrappy is an easy (and hopefully fun) way of scraping, spidering, and/or harvesting information from web pages, web services, and more. Scrappy is a feature rich, flexible, intelligent web automation tool. Scrappy (pronounced Scrap+Pee) == 'Scraper Happy' or 'Happy Scraper'; If you like you may call it Scrapy (pronounced Scrape+Pee) although Python has a web scraping framework by that name and this module is not a port of that one. =head2 FEATURES Scrappy provides a framework containing all the tools neccessary to create a simple yet powerful web scraper. At its core, Scrappy loads an array of features for access control, event logging, session handling, url matching, web request and response handling, proxy management, web scraping, and downloading. Futhermore, Scrappy provides a simple Moose-based plugin system that allows Scrappy to be easily extended. my $scraper = Scrappy->new; $scraper->control; # Scrappy::Scraper::Control (access control) $scraper->parser; # Scrappy::Scraper::Parser (web scraper) $scraper->user_agent; # Scrappy::Scraper::UserAgent (user-agent tools) $scraper->logger; # Scrappy::Logger (event logger) $scraper->queue; # Scrappy::Queue (flow control for loops) $scraper->session; # Scrappy::Session (session management) Please see the METHODS section for a more in-depth look at all Scrappy functionality. =head2 ATTRIBUTES The following is a list of object attributes available with every Scrappy instance, attributes always return an instance of the class they represent. =head3 content The content attribute holds the L object of the current request. Returns undef if no page has been successfully fetched. my $scraper = Scrappy->new; $scraper->content; =head3 control The control attribute holds the L object which is used the provide access conrtol to the scraper. my $scraper = Scrappy->new; $scraper->control; ... $scraper->control->restrict('google.com'); ... $scraper->control->allow('cpan.org'); ... if $scraper->control->is_allowed($url); =head3 debug The debug attribute holds a boolean which controls whether event logs are captured. my $scraper = Scrappy->new; $scraper->debug(1); =head3 logger The logger attribute holds the L object which is used to provide event logging capabilities to the scraper. my $scraper = Scrappy->new; $scraper->logger; =head3 parser The parser attribute holds the L object which is used to scrape html data from the specified source material. my $scraper = Scrappy->new; $scraper->parser; =head3 plugins The plugins attribute holds the L object which is an interface used to load plugins. my $scraper = Scrappy->new; $scraper->plugins; =head3 queue The queue attribute holds the L object which is used to provide flow-control for the standard loop approach to crawling. my $scraper = Scrappy->new; $scraper->queue; =head3 session The session attribute holds the L object which is used to provide session support and persistent data across executions. my $scraper = Scrappy->new; $scraper->session; =head3 user_agent The user_agent attribute holds the L object which is used to set and manipulate the user-agent header of the scraper. my $scraper = Scrappy->new; $scraper->user_agent; =head3 worker The worker attribute holds the L object which is used navigate web pages and provide request and response header information. my $scraper = Scrappy->new; $scraper->worker; =head1 METHODS =head2 back The back method is the equivalent of hitting the "back" button in a browser, it returns the previous page (response) and returns that URL, it will not backtrack beyond the first request. my $scraper = Scrappy->new; $scraper->get(...); ... $scraper->get(...); ... my $last_url = $scraper->back; =head2 cookies The cookies method returns an HTTP::Cookie object. Note! Cookies can be made persistent by enabling session-support. Session-support is enable by simply specifying a file to be used. my $scraper = Scrappy->new; $scraper->session->write('session.yml'); # enable session support $scraper->get(...); my $cookies = $scraper->cookies; =head2 crawl The crawl method is very useful when it is desired to crawl an entire website or at-least partially, it automates the tasks of creating a queue, fetching and parsing html pages, and establishing simple flow-control. See the SYNOPSIS for a simplified example, ... the following is a more complex example. my $scrappy = Scrappy->new; $scrappy->crawl('http://search.cpan.org/recent', '/recent' => { '#cpansearch li a' => sub { my ($self, $item) = @_; # follow all recent modules from search.cpan.org $self->queue->add($item->{href}); } }, '/~:author/:name-:version/' => { 'body' => sub { my ($self, $item, $args) = @_; my $reviews = $self ->select('.box table tr')->focus(3)->select('td.cell small a') ->data->[0]->{text}; $reviews = $reviews =~ /\d+ Reviews/ ? $reviews : '0 reviews'; print "found $args->{name} version $args->{version} ". "[$reviews] by $args->{author}\n"; } } ); =head2 domain The domain method returns the domain host of the current page. Local pages, e.g. file:///this/that/the_other will return undef. my $scraper = Scrappy->new; $scraper->get('http://www.google.com'); print $scraper->domain; # print www.google.com =head2 download The download method is passed a URL, a Download Directory Path and a optionally a File Path, then it will follow the link and store the response contents into the specified file without leaving the current page. Basically it downloads the contents of the request (especially when the request pushes a file download). If a File Path is not specified, Scrappy will attempt to name the file automatically resorting to a random 6-charater string only if all else fails, then returns to the originating page. my $scaper = Scrappy->new; my $requested_url = '...'; $scraper->download($requested_url, '/tmp'); # supply your own file name $scraper->download($requested_url, '/tmp', 'somefile.txt'); =head2 dumper The dumper method is a convenience feature that passes the passed-in objects to L which in turn returns a stringified representation of that object/data-structure. my $scaper = Scrappy->new; my $requested_url = '...'; $scraper->get($requested_url); my $data = $scraper->select('//a[@href]')->data; # print out the scraped data print $scraper->dumper($data); =head2 form The form method is used to submit a form on the current page. my $scraper = Scrappy->new; $scraper->form(fields => { username => 'mrmagoo', password => 'foobarbaz' }); # or more specifically, for pages with multiple forms $scraper->form(form_name => 'login_form', fields => { username => 'mrmagoo', password => 'foobarbaz' }); $scraper->form(form_number => 1, fields => { username => 'mrmagoo', password => 'foobarbaz' }); =head2 get The get method takes a URL or URI object, fetches a web page and returns the Scrappy object. my $scraper = Scrappy->new; if ($scraper->get($new_url)->page_loaded) { ... } # $self->content has the HTTP::Response object =head2 log The log method logs an event with the event logger. my $scraper = Scrappy->new; $scraper->debug(1); # unneccessary, on by default $scraper->logger->verbose(1); # more detailed log $scraper->log('error', 'Somthing bad happened'); ... $scraper->log('info', 'Somthing happened'); $scraper->log('warn', 'Somthing strange happened'); $scraper->log('coolness', 'Somthing cool happened'); Note! Event logs are always recorded but never automatically written to a file unless explicitly told to do so using the following: $scraper->logger->write('log.yml'); =head2 page_content_type The page_content_type method returns the content_type of the current page. my $scraper = Scrappy->new; $scraper->get('http://www.google.com/'); print $scraper->page_content_type; # prints text/html =head2 page_data The page_data method returns the HTML content of the current page, additionally this method when passed a string with HTML markup, updates the content of the current page with that data and returns the modified content. my $scraper = Scrappy->new; $scraper->get(...); my $html = $scraper->page_data; =head2 page_ishtml The page_ishtml method returns true/false based on whether our content is HTML, according to the HTTP headers. my $scraper = Scrappy->new; $scraper->get($requested_url); if ($scraper->is_html) { ... } =head2 page_loaded The page_loaded method returns true/false based on whether the last request was successful. my $scraper = Scrappy->new; $scraper->get($requested_url); if ($scraper->page_loaded) { ... } =head2 page_match The page_match method checks the passed-in URL (or URL of the current page if left empty) against the URL pattern (route) defined. If URL is a match, it will return the parameters of that match much in the same way a modern web application framework processes URL routes. my $url = 'http://somesite.com/tags/awesomeness'; ... my $scraper = Scrappy->new; # match against the current page my $this = $scraper->page_match('/tags/:tag'); if ($this) { print $this->{'tag'}; # ... prints awesomeness } .. or .. # match against a passed url my $this = $scraper->page_match('/tags/:tag', $url, { host => 'somesite.com' }); if ($this) { print "This is the ", $this->{tag}, " page"; # ... prints this is the awesomeness page } =head2 page_reload The page_reload method acts like the refresh button in a browser, it simply repeats the current request. my $scraper = Scrappy->new; $scraper->get(...); ... $scraper->reload; =head2 page_status The page_status method returns the 3-digit HTTP status code of the response. my $scraper = Scrappy->new; $scraper->get(...); if ($scraper->page_status == 200) { ... } =head2 page_text The page_text method returns a text representation of the last page having all HTML markup stripped. my $scraper = Scrappy->new; $scraper->get(...); my $text = $scraper->page_text; =head2 page_title The page_title method returns the content of the title tag if the current page is HTML, otherwise returns undef. my $scraper = Scrappy->new; $scraper->get('http://www.google.com/'); my $title = $scraper->page_title; print $title; # print Google =head2 pause This method sets breaks between your requests in an attempt to simulate human interaction. my $scraper = Scrappy->new; $scraper->pause(20); $scraper->get($request_1); $scraper->get($request_2); $scraper->get($request_3); Given the above example, there will be a 20 sencond break between each request made, get, post, request, etc., You can also specify a range to have the pause method select from at random... $scraper->pause(5,20); $scraper->get($request_1); $scraper->get($request_2); # reset/turn it off $scraper->pause(0); print "I slept for ", ($scraper->pause), " seconds"; Note! The download method is exempt from any automatic pausing. =head2 plugin The plugin method allow you to load a plugin. Using the appropriate case is recommended but not neccessary. See L for more information. my $scraper = Scrappy->new; $scraper->plugin('foo_bar'); # will load Scrappy::Plugin::FooBar $scraper->plugin('foo-bar'); # will load Scrappy::Plugin::Foo::Bar $scraper->plugin('Foo::Bar'); # will load Scrappy::Plugin::Foo::Bar # more pratically $scraper->plugin('whois', 'spammer_check'); ... somewhere in code my $var = $scraper->plugin_method(); # example using core plugin Scrappy::Plugin::RandomProxy my $s = Scrappy->new; $s->plugin('random_proxy'); $s->use_random_proxy; $s->get(...); =head2 post The post method takes a URL, a hashref of key/value pairs, and optionally an array of key/value pairs, and posts that data to the specified URL, then returns an HTTP::Response object. my $scraper = Scrappy->new; $scraper->post($requested_url, { input_a => 'value_a', input_b => 'value_b' }); # w/additional headers my %headers = ('Content-Type' => 'multipart/form-data'); $scraper->post($requested_url, { input_a => 'value_a', input_b => 'value_b' }, %headers); Note! The most common post headers for content-type are application/x-www-form-urlencoded and multipart/form-data. =head2 proxy The proxy method will set the proxy for the next request to be tunneled through. my $scraper = Scrappy->new; $scraper->proxy('http', 'http://proxy1.example.com:8000/'); $scraper->get($requested_url); $scraper->proxy('http', 'ftp', 'http://proxy2.example.com:8000/'); $scraper->get($requested_url); # best practice when using proxies use Tiny::Try; my $proxie = Scrappy->new; $proxie->proxy('http', 'http://proxy.example.com:8000/'); try { $proxie->get($requested_url); } catch { die "Proxy failed\n"; }; Note! When using a proxy to perform requests, be aware that if they fail your program will die unless you wrap your code in an eval statement or use a try/catch mechanism. In the example above we use Tiny::Try to trap any errors that might occur when using proxy. =head2 request_denied The request_denied method is a simple shortcut to determine if the page you requested got loaded or redirected. This method is very useful on systems that require authentication and redirect if not authorized. This function return boolean, 1 if the current page doesn't match the requested page. my $scraper = Scrappy->new; $scraper->get($url_to_dashboard); if ($scraper->request_denied) { # do login, again } else { # resume ... } =head2 response The response method returns the HTTP::Repsonse object of the current page. my $scraper = Scrappy->new; $scraper->get(...); my $res = $scraper->response; =head2 select The select method takes XPATH or CSS selectors and returns a L object which contains the matching elements. my $scraper = Scrappy->new; # return a list of links my $list = $scraper->select('#profile li a')->data; # see Scrappy::Scraper::Parser foreach my $link (@{$list}) { print $link->{href}, "\n"; } # Zoom in on specific chunks of html code using the following ... my $list = $scraper ->select('#container table tr') # select all rows ->focus(4) # focus on the 5th row ->select('div div')->data; # The code above selects the div > div inside of the 5th tr in #container table # Access attributes html, text and other attributes as follows... $element = $scraper->select('table')->data->[0]; $element->{html}; # HTML representation of the table $element->{text}; # Table stripped of all HTML $element->{cellpadding}; # cellpadding $element->{height}; # ... =head2 stash The stash method sets a stash (shared) variable or returns a reference to the entire stash object. my $scraper = Scrappy->new; $scraper->stash(age => 31); print 'stash access works' if $scraper->stash('age') == $scraper->stash->{age}; my @array = (1..20); $scraper->stash(integers => [@array]); =head2 store The store method stores the contents of the current page into the specified file. If the content-type does not begin with 'text', the content is saved as binary data. my $scraper = Scrappy->new; $scraper->get($requested_url); $scraper->store('/tmp/foo.html'); =head2 url The url method returns the complete URL for the current page. my $scraper = Scrappy->new; $scraper->get('http://www.google.com/'); print $scraper->url; # prints http://www.google.com/ =head1 AUTHOR Al Newkirk =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2010 by awncorp. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut 00_load_scrappy.t000644000000000000 110511614255470 16334 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use Test::More tests => 12; # load Scrappy use_ok 'Scrappy'; my $s = Scrappy->new; # test attributes and return value ok 'Scrappy' eq ref $s ; ok undef eq ref $s->content ; ok 'Scrappy::Scraper::Control' eq ref $s->control ; ok 1 == $s->debug ; ok 'Scrappy::Logger' eq ref $s->logger ; ok 'Scrappy::Scraper::Parser' eq ref $s->parser ; ok 'Scrappy::Plugin' eq ref $s->plugins ; ok 'Scrappy::Queue' eq ref $s->queue ; ok 'Scrappy::Session' eq ref $s->session ; ok 'Scrappy::Scraper::UserAgent' eq ref $s->user_agent ; ok 'WWW::Mechanize' eq ref $s->worker ; 01_load_scrappy.t000644000000000000 57711614255470 16331 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use Test::More tests => 8; # load Scrappy use_ok 'Scrappy'; my $scraper = Scrappy->new; # init Scrappy object ok ref($scraper); # test queue object ok $scraper->queue; ok ref($scraper->queue); ok ref($scraper->queue) eq 'Scrappy::Queue'; # test session object ok $scraper->session; ok ref($scraper->session); ok ref($scraper->session) eq 'Scrappy::Session';Scrappy000755000000000000 011614255474 14764 5ustar00rootroot000000000000Scrappy-0.94112090/libQueue.pm000644000000000000 1212311614255473 16563 0ustar00rootroot000000000000Scrappy-0.94112090/lib/Scrappy# ABSTRACT: Scrappy HTTP Request Flow-Control System # Dist::Zilla: +PodWeaver package Scrappy::Queue; BEGIN { $Scrappy::Queue::VERSION = '0.94112090'; } # load OO System use Moose; # load other libraries use Array::Unique; use URI; # queue and cursor variables for navigation our @_queue = (); tie @_queue, 'Array::Unique'; our $_cursor = -1; sub list { return @_queue; } sub add { my $self = shift; my @urls = @_; # validate and formulate proper URLs for (my $i = 0; $i < @urls; $i++) { my $u = URI->new($urls[$i]); if ('URI::' =~ ref $u) { $urls[$i] = $u->as_string; } else { unless ($urls[$i] =~ /\w{2,}\.\w{2,}/) { delete $urls[$i]; } } } push @_queue, @urls; return $self; } sub clear { my $self = shift; @_queue = (); $_cursor = -1; return $self; } sub reset { my $self = shift; $_cursor = -1; return $self; } sub current { my $self = shift; return $_queue[$_cursor]; } sub next { my $self = shift; return $_queue[++$_cursor]; } sub previous { my $self = shift; return $_queue[--$_cursor]; } sub first { my $self = shift; $_cursor = 0; return $_queue[$_cursor]; } sub last { my $self = shift; $_cursor = scalar(@_queue) - 1; return $_queue[$_cursor]; } sub index { my $self = shift; $_cursor = shift || 0; return $_queue[$_cursor]; } sub cursor { return $_cursor; } 1; __END__ =pod =head1 NAME Scrappy::Queue - Scrappy HTTP Request Flow-Control System =head1 VERSION version 0.94112090 =head1 SYNOPSIS #!/usr/bin/perl use Scrappy::Queue; my $queue = Scrappy::Queue->new; $queue->add($url); while (my $url = $queue->next) { ... $queue->add(...); } =head1 DESCRIPTION Scrappy::Queue provides a system for saving URLs to a recordset/queue and iterating of them using the L framework. =head1 METHODS =head2 list The list method return the list of URLs in the queue. This is returned in list context. my $queue = Scrappy::Queue->new; ... my @list = $queue->list; =head2 add The add method adds new URLs to the queue. Duplicate URLs will be ignored. my $queue = Scrappy::Queue->new; $queue->add($url); =head2 clear The clear method completely empties the queue and resets the cursor (loop position). my $queue = Scrappy::Queue->new; $queue->add(...); $queue->add(...); $queue->add(...); $queue->clear; =head2 reset The reset method resets the cursor (loop position). my $queue = Scrappy::Queue->new; $queue->add(...); $queue->add(...); $queue->add(...); while (my $url = $queue->next) { $queue->reset if ...; # beware the infinate loop } $queue->reset; =head2 current The current method returns the URL in the current loop position. my $queue = Scrappy::Queue->new; $queue->add(...); $queue->add(...); $queue->add(...); while (my $url = $queue->next) { last if ...; } print 'great' if $url eq $queue->current; =head2 next The next method moves the cursor to the next loop position and returns the URL. my $queue = Scrappy::Queue->new; $queue->add(...); $queue->add(...); $queue->add(...); while (my $url = $queue->next) { ... } =head2 previous The previous method moves the cursor to the previous loop position and returns the URL. my $queue = Scrappy::Queue->new; $queue->add(...); $queue->add(...); $queue->add(...); while (my $url = $queue->next) { ... } print $queue->previous; =head2 first The first method moves the cursor to the first loop position and returns the URL. my $queue = Scrappy::Queue->new; $queue->add(...); $queue->add(...); $queue->add(...); print $queue->first; =head2 last The last method moves the cursor to the last loop position and returns the URL. my $queue = Scrappy::Queue->new; $queue->add(...); $queue->add(...); $queue->add(...); print $queue->last; =head2 index The index method moves the cursor to the specified loop position and returns the URL. The loop position is a standard array index position. my $queue = Scrappy::Queue->new; $queue->add(...); $queue->add(...); $queue->add(...); print $queue->index(1); =head2 cursor The cursor method returns the current loop position. my $queue = Scrappy::Queue->new; print $queue->cursor; =head1 AUTHOR Al Newkirk =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2010 by awncorp. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Logger.pm000644000000000000 1540311614255471 16720 0ustar00rootroot000000000000Scrappy-0.94112090/lib/Scrappy# ABSTRACT: Scrappy Scraper Event Logging # Dist::Zilla: +PodWeaver package Scrappy::Logger; BEGIN { $Scrappy::Logger::VERSION = '0.94112090'; } # load OO System use Moose; # load other libraries use Carp; use DateTime; use DateTime::Format::SQLite; use YAML::Syck; $YAML::Syck::ImplicitTyping = 1; has 'auto_save' => (is => 'rw', isa => 'Bool', default => 1); has file => (is => 'rw', isa => 'Str'); has verbose => (is => 'rw', isa => 'Int', default => 0); sub load { my $self = shift; my $file = shift; if ($file) { $self->{file} = $file; # load event-log file $self->{stash} = LoadFile($file) or croak("Log file $file does not exist or is not read/writable"); } return $self->{stash}; } sub timestamp { my $self = shift; my $date = shift; if ($date) { # $date =~ s/\_/ /g; return DateTime::Format::SQLite->parse_datetime($date) ; # datetime object } else { $date = DateTime::Format::SQLite->format_datetime(DateTime->now); # string # $date =~ s/ /_/g; return $date; } } sub info { return shift->event('info', @_); } sub warn { return shift->event('warn', @_); } sub error { return shift->event('error', @_); } sub event { my $self = shift; my $type = shift; my $note = shift; croak("Can't record an event without an event-type and notation") unless $type && $note; $self->{stash} = {} unless defined $self->{stash}; $self->{stash}->{$type} = [] unless defined $self->{stash}->{$type}; my $frame = $type eq 'info' || $type eq 'error' || $type eq 'warn' ? 1 : 0; my @trace = caller($frame); my $entry = scalar @{$self->{stash}->{$type}}; my $time = $self->timestamp; my $data = {}; $data = { '// package' => $trace[0], '// filename' => $trace[1], '// line' => $trace[2], '// occurred' => $time, '// notation' => $note, } if $self->verbose; $self->{stash}->{$type}->[$entry] = {eventlog => "[$time] [$type] $note"} unless defined $self->{stash}->{$type}->[$entry]; $self->{stash}->{$type}->[$entry]->{metadata} = $data if scalar keys %{$data}; if (@_ && $self->verbose) { my $stash = @_ > 1 ? {@_} : $_[0]; if ($stash) { if (ref $stash eq 'HASH') { for (keys %{$stash}) { $self->{stash}->{$type}->[$entry]->{metadata}->{$_} = $stash->{$_}; } } } } $self->write; return $self->{stash}->{$type}->[$entry]; } sub write { my $self = shift; my $file = shift || $self->{file}; $self->{file} = $file; if ($file) { # write event-log file DumpFile($file, $self->{stash}) or croak("event-log file $file does not exist or is not read/writable"); } return $self->{stash}; } 1; __END__ =pod =head1 NAME Scrappy::Logger - Scrappy Scraper Event Logging =head1 VERSION version 0.94112090 =head1 SYNOPSIS #!/usr/bin/perl use Scrappy::Logger; my $logger = Scrappy::Logger->new; -f 'scraper.log' ? $logger->load('scraper.log'); $logger->write('scraper.log'); $logger->stash('foo' => 'bar'); $logger->stash('abc' => [('a'..'z')]); =head1 DESCRIPTION Scrappy::Logger provides YAML-Based event-log handling for recording events encountered using the L framework. =head2 ATTRIBUTES The following is a list of object attributes available with every Scrappy::Logger instance. =head3 auto_save The auto_save attribute is a boolean that determines whether event data is automatically saved to the log file on update. my $logger = Scrappy::Logger->new; $logger->load('scraper.log'); # turn auto-saving off $logger->auto_save(0); $logger->event('...', 'yada yada yada'); $logger->write; # explicit write =head3 file The file attribute gets/sets the filename of the current event-log file. my $logger = Scrappy::Logger->new; $logger->load('scraper.log'); $logger->write('scraper.log.bak'); $logger->file('scraper.log'); =head3 verbose The verbose attribute is a boolean that instructs the logger to write very detailed logs. my $logger = Scrappy::Logger->new; $logger->verbose(1); =head1 METHODS =head2 load The load method is used to read-in an event-log file, it returns its data in the structure it was saved-in. my $logger = Scrappy::Logger->new; my $data = $logger->load('scraper.log'); =head2 timestamp The timestamp method returns the current date/timestamp in string form. When supplied a properly formatted date/timestamp this method returns a corresponding L object. my $logger = Scrappy::Logger->new; my $date = $logger->timestamp; my $dt = $logger->timestamp($date); =head2 info The info method is used to capture informational events and returns the event data. my $logger = Scrappy::Logger->new; my %data = (foo => 'bar', baz => 'xyz'); my $event = $logger->info('This is an informational message', %data); $logger->info('This is an informational message'); =head2 warn The warn method is used to capture warning events and returns the event data. my $logger = Scrappy::Logger->new; my %data = (foo => 'bar', baz => 'xyz'); my $event = $logger->warn('This is a warning message', %data); $logger->info('This is an warning message'); =head2 error The error method is used to capture error events and returns the event data. my $logger = Scrappy::Logger->new; my %data = (foo => 'bar', baz => 'xyz'); my $event = $logger->error('This is a n error message', %data); $logger->info('This is an error message'); =head2 event The event method is used to capture custom events and returns the event data. my $logger = Scrappy::Logger->new; my %data = (foo => 'bar', baz => 'xyz'); my $event = $logger->event('myapp', 'This is a user-defined message', %data); $logger->event('myapp', 'This is a user-defined message'); =head2 write The write method is used to write-out an event-log file. my $logger = Scrappy::Logger->new; $logger->info('This is very cool', 'foo' => 'bar'); $logger->warn('Somethin aint right here'); $logger->error('It broke, I cant believe it broke'); $logger->write('scraper.log'); =head1 AUTHOR Al Newkirk =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2010 by awncorp. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Action.pm000644000000000000 626311614255471 16702 0ustar00rootroot000000000000Scrappy-0.94112090/lib/Scrappypackage Scrappy::Action; BEGIN { $Scrappy::Action::VERSION = '0.94112090'; } use Moose; use File::Find::Rule; # return a list of installed actions #has actions => ( # is => 'ro', # isa => 'ArrayRef', # default => sub { # [] # } #); # a hash list of installed actions has registry => ( is => 'ro', isa => 'HashRef', default => sub { my $actions = {}; foreach my $action (@{shift->actions}) { $actions->{$action} = $action; $actions->{lc($action)} = $action; } return $actions; } ); sub actions { my @actions = (); my @files = File::Find::Rule->file()->name('*.pm') ->in(map {"$_/Scrappy/Action"} @INC); my %actions = map { $_ => 1 } map { s/.*(Scrappy[\\\/]Action[\\\/].*\.pm)/$1/; $_ } @files; #uniquenes for my $action (keys %actions) { my ($plug) = $action =~ /(Scrappy[\\\/]Action[\\\/].*)\.pm/; if ($plug) { $plug =~ s/\//::/g; push @actions, $plug; } } return [@actions]; } sub load_action { my $self = shift; my $action = shift; unless ($action =~ /^Scrappy::Action::/) { # make fully-quaified action name $action = ucfirst $action; $action = join("::", map(ucfirst, split '-', $action)) if $action =~ /\-/; $action = join("", map(ucfirst, split '_', $action)) if $action =~ /\_/; $action = "Scrappy::Action::$action"; } # check for a direct match if ($self->registry->{$action}) { return $self->registry->{$action}; } # last resort seek elsif ($self->registry->{lc($action)}) { return $self->registry->{lc($action)}; } return 0; } # execute an action from the cli sub execute { my ($class, $action_class, $action, @options) = @_; my $self = ref $class ? $class : $class->new; # show help on syntax error if (!$action_class || $action_class eq 'help') { with 'Scrappy::Action::Help'; print $self->menu; print "\n"; exit; } else { if ($action) { if ( $action eq 'meta' || $action eq 'registry' || $action eq 'actions' || $action eq 'load_action' || $action eq 'execute') { with 'Scrappy::Action::Help'; print $self->menu; print "\n"; exit; } } } # locate the action if installed my $requested_action = $self->load_action($action_class); if ($requested_action) { # load the desired action class with $requested_action; # is actoin available unless ($action) { print $self->help($requested_action); print "\n"; exit; } # run the requested action print $self->meta->has_method($action) ? $self->$action(@options) : $self->help($requested_action); print "\n"; } else { # ... or display the help menu with 'Scrappy::Action::Help'; print $self->menu; print "\n"; } } 1; Plugin.pm000644000000000000 677011614255471 16726 0ustar00rootroot000000000000Scrappy-0.94112090/lib/Scrappypackage Scrappy::Plugin; BEGIN { $Scrappy::Plugin::VERSION = '0.94112090'; } # load OO System use Moose; # load other libraries use File::Find::Rule; # a hash list of installed plugins has registry => ( is => 'ro', isa => 'HashRef', default => sub { # map plugins my $plugins = {}; my @plugins = @{shift->plugins}; foreach my $plugin (@plugins) { $plugins->{$plugin} = $plugin; $plugins->{lc($plugin)} = $plugin; } return $plugins; } ); # return a list of installed plugins has plugins => ( is => 'ro', isa => 'Any', default => sub { my @plugins = (); # fix for bug found by Patrick Woo #Can't stat /etc/perl/Scrappy/Plugin: No such file or directory #at /usr/share/perl5/File/Find/Rule.pm line 595 #Can't stat /usr/local/lib/perl/5.10.1/Scrappy/Plugin: No such file or directory #at /usr/share/perl5/File/Find/Rule.pm line 595 #Can't stat /usr/lib/perl5/Scrappy/Plugin: No such file or directory #at /usr/share/perl5/File/Find/Rule.pm line 595 #Can't stat /usr/share/perl5/Scrappy/Plugin: No such file or directory #at /usr/share/perl5/File/Find/Rule.pm line 595 #Can't stat /usr/lib/perl/5.10/Scrappy/Plugin: No such file or directory #at /usr/share/perl5/File/Find/Rule.pm line 595 #Can't stat /usr/share/perl/5.10/Scrappy/Plugin: No such file or directory #at /usr/share/perl5/File/Find/Rule.pm line 595 #Can't stat /usr/local/lib/site_perl/Scrappy/Plugin: No such file or directory #at /usr/share/perl5/File/Find/Rule.pm line 595 #Can't stat ./Scrappy/Plugin: No such file or directory #at /usr/share/perl5/File/Find/Rule.pm line 595 # ... (IMO) due to analyzing @INC assuming each path has Scrappy in it my $library; foreach my $dir (@INC) { if (-d "$dir/Scrappy/Plugin") { $library = "$dir/Scrappy/Plugin"; last; } } return [] unless $library; my @files = File::Find::Rule->file()->name('*.pm')->in($library); my %plugins = map { $_ => 1 } map { s/.*(Scrappy[\\\/]Plugin[\\\/].*\.pm)/$1/; $_ } @files; #uniquenes for my $plugin (keys %plugins) { my ($plug) = $plugin =~ /(Scrappy\/Plugin\/.*)\.pm/; if ($plug) { $plug =~ s/\//::/g; push @plugins, $plug; } } return [@plugins]; } ); sub load_plugin { my $self = shift; my @plugins = @_; my @returns = (); foreach my $plugin (@plugins) { unless ($plugin =~ /^Scrappy::Plugin::/) { # make fully-quaified plugin name $plugin = ucfirst $plugin; $plugin = join("::", map(ucfirst, split '-', $plugin)) if $plugin =~ /\-/; $plugin = join("", map(ucfirst, split '_', $plugin)) if $plugin =~ /\_/; $plugin = "Scrappy::Plugin::$plugin"; } # check for a direct match if ($self->registry->{$plugin}) { with $self->registry->{$plugin}; push @returns, $self->registry->{$plugin}; } # last resort seek elsif ($self->registry->{lc($plugin)}) { with $self->registry->{lc($plugin)}; push @returns, $self->registry->{lc($plugin)}; } else { die( "Error loading the plugin $plugin, " . "please check that it has been installed"); } } return @returns; } 1; Project.pm000644000000000000 1063711614255472 17114 0ustar00rootroot000000000000Scrappy-0.94112090/lib/Scrappypackage Scrappy::Project; BEGIN { $Scrappy::Project::VERSION = '0.94112090'; } use Carp; use File::Find::Rule; use Scrappy; use Moose::Role; has app => ( is => 'ro', isa => 'Any', default => sub { my $self = shift; $self->scraper(Scrappy->new); my $meta = $self->meta; return $meta->has_method('setup') ? $self->setup : $self; } ); has parsers => ( is => 'ro', isa => 'Any', default => sub { my $self = shift; my $class = ref $self; my @parsers = (); $class =~ s/::/\//g; my @files = File::Find::Rule->file()->name('*.pm')->in(map {"$_/$class"} @INC); my %parsers = map { $_ => 1 } @files; #uniquenes for my $parser (keys %parsers) { my ($plug) = $parser =~ /($class\/.*)\.pm/; if ($plug) { $plug =~ s/\//::/g; push @parsers, $plug; } } return [@parsers]; } ); has registry => ( is => 'ro', isa => 'HashRef', default => sub { # map parsers my $parsers = {}; my @parsers = @{shift->parsers}; foreach my $parser (@parsers) { $parsers->{$parser} = $parser; $parsers->{lc($parser)} = $parser; } return $parsers; } ); has records => ( is => 'rw', isa => 'HashRef', default => sub { {} } ); has routes => ( is => 'rw', isa => 'HashRef', default => sub { {} } ); has scraper => ( is => 'rw', isa => 'Scrappy' ); sub route { my $self = shift; my $options = {}; # basic definition ($options->{route}, $options->{parser}) = @_ if scalar @_ == 2; # odd definition if (@_ % 2) { my $route = shift; $options = {@_}; $options->{route} = $route; } # check route and parser spec die "Error defining route, must have a route and parser assignment" unless $options->{route} && $options->{parser}; # covert parser from shortcut if used if ($options->{parser} !~ ref($self) . "::") { my $parser = $options->{parser}; # make fully-quaified parser name $parser = ucfirst $parser; $parser = join("::", map(ucfirst, split '-', $parser)) if $parser =~ /\-/; $parser = join("", map(ucfirst, split '_', $parser)) if $parser =~ /\_/; $options->{parser} = ref($self) . "::$parser"; } # find action if not specified #unless ( defined $options->{action} ) { # my ($action) = $options->{parser} =~ /\#(.*)$/; # $options->{parser} =~ s/\#(.*)$//; # $options->{action} = $action; #} $self->routes->{$options->{route}} = $options; delete $self->routes->{$options->{route}}->{route}; return $self; } sub parse_document { my ($self, $url) = @_; my $scraper = $self->scraper; croak("Unable to fetch document, URL is not defined") unless $url; croak("Can't parse document, No routes defined") unless keys %{$self->routes}; # try to match against route(s) foreach my $route (keys %{$self->routes}) { my $this = $scraper->page_match($route, $url); if ($this) { my $parser = $self->routes->{$route}->{parser}; #my $action = $self->routes->{$route}->{action}; no warnings 'redefine'; no strict 'refs'; my $module = $parser; $module =~ s/::/\//g; $module = "$module.pm"; require $module; my $new = $parser->new; $new->scraper($scraper); $self->records->{$route} = [] unless defined $self->records->{$route}; my $record = $new->parse($this); push @{$self->records->{$route}}, $record; return $record; } } return 0; } sub crawl { my ($class, $starting_url) = @_; my $self = ref $class ? $class : $class->new; croak("Error, can't execute without a starting url") unless $starting_url; my $q = $self->scraper->queue; $q->add($starting_url); while (my $url = $q->next) { # parse document data $self->scraper->get($url); $self->parse_document($url) if $self->scraper->page_loaded && $self->scraper->page_ishtml && $self->scraper->page_status == 200; } return $self->records; } 1; Scraper.pm000644000000000000 5114311614255473 17103 0ustar00rootroot000000000000Scrappy-0.94112090/lib/Scrappypackage Scrappy::Scraper; BEGIN { $Scrappy::Scraper::VERSION = '0.94112090'; } # load OO System use Moose; # load other libraries use Data::Dumper; use File::Util; use Scrappy::Logger; use Scrappy::Plugin; use Scrappy::Queue; use Scrappy::Scraper::Control; use Scrappy::Scraper::Parser; use Scrappy::Scraper::UserAgent; use Scrappy::Session; use Try::Tiny; use URI; use Web::Scraper; use WWW::Mechanize; # html content attribute has 'content' => ( is => 'rw', isa => 'Any' ); # access control object has 'control' => ( is => 'ro', isa => 'Scrappy::Scraper::Control', default => sub { Scrappy::Scraper::Control->new; } ); # debug attribute has 'debug' => ( is => 'rw', isa => 'Bool', default => 1 ); # log object has 'logger' => ( is => 'ro', isa => 'Scrappy::Logger', default => sub { Scrappy::Logger->new; } ); # parser object has 'parser' => ( is => 'ro', isa => 'Scrappy::Scraper::Parser', default => sub { Scrappy::Scraper::Parser->new; } ); # plugins object has 'plugins' => ( is => 'ro', isa => 'Any', default => sub { Scrappy::Plugin->new; } ); # queue object has 'queue' => ( is => 'ro', isa => 'Scrappy::Queue', default => sub { Scrappy::Queue->new; } ); # session object has 'session' => ( is => 'ro', isa => 'Scrappy::Session', default => sub { Scrappy::Session->new; } ); # user-agent object has 'user_agent' => ( is => 'ro', isa => 'Scrappy::Scraper::UserAgent', default => sub { Scrappy::Scraper::UserAgent->new; } ); # www-mechanize object (does most of the heavy lifting, gets passed around alot) has 'worker' => ( is => 'ro', isa => 'WWW::Mechanize', default => sub { WWW::Mechanize->new; } ); sub back { my $self = shift; # specify user-agent $self->worker->add_header("User-Agent" => $self->user_agent->name) if defined $self->user_agent->name; # set html response $self->content(''); try { $self->worker->back; $self->content($self->worker->content); } catch { $self->log("error", "navigating to the previous page failed"); }; return unless $self->content; $self->log("info", "navigated back to " . $self->url . " successfully"); $self->stash->{history} = [] unless defined $self->stash->{history}; push @{$self->stash->{history}}, $self->url; $self->worker->{cookie_jar}->scan( sub { my ($version, $key, $val, $path, $domain, $port, $path_spec, $secure, $expires, $discard, $hash ) = @_; $self->session->stash('cookies' => {}) unless defined $self->session->stash('cookies'); $self->session->stash->{'cookies'}->{$domain}->{$key} = { version => $version, key => $key, val => $val, path => $path, domain => $domain, port => $port, path_spec => $path_spec, secure => $secure, expires => $expires, discard => $discard, hash => $hash }; $self->session->write; } ); return $self->url; } sub cookies { my $self = shift; $self->worker->{cookie_jar} = $_[0] if defined $_[0]; return $self->worker->{cookie_jar}; } sub domain { return shift->worker->base->host; } sub download { my $self = shift; my ($url, $dir, $file) = @_; $url = URI->new(@_); # specify user-agent $self->worker->add_header("User-Agent" => $self->user_agent->name) if defined $self->user_agent->name; # set html response if ($url && $dir && $file) { $dir =~ s/[\\\/]+$//; return unless $self->get($url); $self->store(join '/', $dir, $file); $self->log("info", "$url was downloaded to " . join('/', $dir, $file) . " successfully"); $self->back; } elsif ($url && $dir) { $dir =~ s/[\\\/]+$//; return unless $self->get($url); my @chars = ('a' .. 'z', 'A' .. 'Z', 0 .. 9); my $filename = $self->worker->response->filename; $filename = $chars[rand(@chars)] . $chars[rand(@chars)] . $chars[rand(@chars)] . $chars[rand(@chars)] . $chars[rand(@chars)] . $chars[rand(@chars)] . '.downlaod' unless $filename; $self->store(join '/', $dir, $filename); $self->log("info", "$url was downloaded to " . join('/', $dir, $filename) . " successfully"); $self->back; } elsif ($url) { return unless $self->get($url); my @chars = ('a' .. 'z', 'A' .. 'Z', 0 .. 9); my $filename = $self->worker->response->filename; $filename = $chars[rand(@chars)] . $chars[rand(@chars)] . $chars[rand(@chars)] . $chars[rand(@chars)] . $chars[rand(@chars)] . $chars[rand(@chars)] . '.downlaod' unless $filename; $dir = $url->path; $dir =~ s/^\///g; $dir =~ s/\/$filename$//; File::Util->new->make_dir($dir) unless -d $dir || !$dir; $self->store(join '/', $dir, $filename); $self->log("info", "$url was downloaded to " . join('/', $dir, $filename) . " successfully"); $self->back; } else { croak( "To download data from a URI you must supply at least a valid URI " . "and download directory path"); } $self->stash->{history} = [] unless defined $self->stash->{history}; push @{$self->stash->{history}}, $url; $self->worker->{params} = {}; $self->worker->{params} = {map { ($_ => $url->query_form($_)) } $url->query_form}; sleep $self->pause; return $self; } sub dumper { shift; return Data::Dumper::Dumper(@_); } sub form { my $self = shift; my $url = URI->new($self->url); # TODO: need to figure out how to determine the form action before submit # specify user-agent $self->worker->add_header("User-Agent" => $self->user_agent->name) if defined $self->user_agent->name; # set html response $self->content(''); my @args = @_; try { $self->content($self->worker->submit_form(@args)); }; if ($self->content) { # access control if ($self->control->is_allowed($self->content)) { $self->log("warn", "$url was not fetched, the url is prohibited"); return 0; } else { $self->log("info", "form posted from $url successfully", @_); } } else { $self->log("error", "error POSTing form from $url", @_); } #$self->stash->{history} = [] unless defined $self->stash->{history}; #push @{$self->stash->{history}}, $url; $self->worker->{cookie_jar}->scan( sub { my ($version, $key, $val, $path, $domain, $port, $path_spec, $secure, $expires, $discard, $hash ) = @_; $self->session->stash('cookies' => {}) unless defined $self->session->stash('cookies'); $self->session->stash->{'cookies'}->{$domain}->{$key} = { version => $version, key => $key, val => $val, path => $path, domain => $domain, port => $port, path_spec => $path_spec, secure => $secure, expires => $expires, discard => $discard, hash => $hash }; $self->session->write; } ); $self->worker->{params} = {}; $self->worker->{params} = {map { ($_ => $url->query_form($_)) } $url->query_form}; sleep $self->pause; return $self; } sub get { my $self = shift; my $url = URI->new(@_); # specify user-agent $self->worker->add_header("User-Agent" => $self->user_agent->name) if defined $self->user_agent->name; # set html response $self->content(''); try { $self->content($self->worker->get($url)); }; if ($self->content) { # access control if (!$self->control->is_allowed($self->content)) { $self->log("warn", "$url was not fetched, the url is prohibited"); return 0; } else { $self->log("info", "$url was fetched successfully"); } } else { $self->log("error", "error GETing $url"); } $self->stash->{history} = [] unless defined $self->stash->{history}; push @{$self->stash->{history}}, $url; $self->worker->{cookie_jar}->scan( sub { my ($version, $key, $val, $path, $domain, $port, $path_spec, $secure, $expires, $discard, $hash ) = @_; $self->session->stash('cookies' => {}) unless defined $self->session->stash('cookies'); $self->session->stash->{'cookies'}->{$domain}->{$key} = { version => $version, key => $key, val => $val, path => $path, domain => $domain, port => $port, path_spec => $path_spec, secure => $secure, expires => $expires, discard => $discard, hash => $hash }; $self->session->write; } ) if $self->session->file; $self->worker->{params} = {}; $self->worker->{params} = {map { ($_ => $url->query_form($_)) } $url->query_form}; sleep $self->pause; return $self; } sub page_data { my $self = shift; my ($data, @args); if (scalar(@_) % 2) { $data = shift; @args = @_; } else { if (@_ == 2) { @args = @_; } else { $data = shift; } } if ($data) { $self->worker->update_html($data); } return $self->worker->content(@args); } sub page_content_type { return shift->worker->content_type; } sub page_ishtml { return shift->worker->is_html; } sub page_loaded { return shift->worker->success; } sub page_match { my $self = shift; my $pattern = shift; my $url = shift || $self->url; $url = URI->new($url); my $options = shift || {}; croak("route can't be defined without a valid URL pattern") unless $pattern; my $route = $self->stash->{patterns}->{$pattern}; # does route definition already exist? unless (keys %{$route}) { $route->{on_match} = $options->{on_match}; # define options if (my $host = $options->{host}) { $route->{host} = $host; $route->{host_re} = ref $host ? $host : qr(^\Q$host\E$); } $route->{pattern} = $pattern; # compile pattern my @capture; $route->{pattern_re} = do { if (ref $pattern) { $route->{_regexp_capture} = 1; $pattern; } else { $pattern =~ s! \{((?:\{[0-9,]+\}|[^{}]+)+)\} | # /blog/{year:\d{4}} :([A-Za-z0-9_]+) | # /blog/:year (\*) | # /blog/*/* ([^{:*]+) # normal string ! if ($1) { my ($name, $pattern) = split /:/, $1, 2; push @capture, $name; $pattern ? "($pattern)" : "([^/]+)"; } elsif ($2) { push @capture, $2; "([^/]+)"; } elsif ($3) { push @capture, '__splat__'; "(.+)"; } else { quotemeta($4); } !gex; qr{^$pattern$}; } }; $route->{capture} = \@capture; $self->stash->{patterns}->{$route->{pattern}} = $route; } # match if ($route->{host_re}) { unless ($url->host =~ $route->{host_re}) { return 0; } } if (my @captured = ($url->path =~ $route->{pattern_re})) { my %args; my @splat; if ($route->{_regexp_capture}) { push @splat, @captured; } else { for my $i (0 .. @{$route->{capture}} - 1) { if ($route->{capture}->[$i] eq '__splat__') { push @splat, $captured[$i]; } else { $args{$route->{capture}->[$i]} = $captured[$i]; } } } my $match = +{ (label => $route->{label}), %args, (@splat ? (splat => \@splat) : ()) }; if ($route->{on_match}) { my $ret = $route->{on_match}->($self, $match); return 0 unless $ret; } $match->{params} = {%args}; $match->{params}->{splat} = \@splat if @splat; return $match; } return 0; } sub page_reload { my $self = shift; # specify user-agent $self->worker->add_header("User-Agent" => $self->user_agent->name) if defined $self->user_agent->name; # set html response $self->content(''); try { $self->content($self->worker->reload); }; $self->content ? $self->log("info", "page reloaded successfully") : $self->log("error", "error reloading page"); my $url = $self->url; $self->stash->{history} = [] unless defined $self->stash->{history}; push @{$self->stash->{history}}, $url; $self->worker->{cookie_jar}->scan( sub { my ($version, $key, $val, $path, $domain, $port, $path_spec, $secure, $expires, $discard, $hash ) = @_; $self->session->stash('cookies' => {}) unless defined $self->session->stash('cookies'); $self->session->stash->{'cookies'}->{$domain}->{$key} = { version => $version, key => $key, val => $val, path => $path, domain => $domain, port => $port, path_spec => $path_spec, secure => $secure, expires => $expires, discard => $discard, hash => $hash }; $self->session->write; } ); return $self; } sub page_status { return shift->worker->status; } sub page_text { return shift->page_data(format => 'text'); } sub page_title { return shift->worker->title; } sub plugin { my ($self, @plugins) = @_; foreach (@plugins) { with $self->plugins->load_plugin($_); } return $self; } sub post { my $self = shift; my $url = URI->new($_[0]); # access control unless ($self->control->is_allowed($url)) { $self->log("warn", "$url was not fetched, the url is prohibited"); return 0; } # specify user-agent $self->worker->add_header("User-Agent" => $self->user_agent->name) if defined $self->user_agent->name; # set html response $self->content(''); my @args = @_; try { $self->content($self->worker->post(@args)); }; if ($self->content) { # access control if ($self->control->is_allowed($self->content)) { $self->log("warn", "$url was not fetched, the url is prohibited"); return 0; } else { $self->log("info", "posted data to $_[0] successfully", @_); } } else { $self->log("error", "error POSTing data to $_[0]", @_); } $self->stash->{history} = [] unless defined $self->stash->{history}; push @{$self->stash->{history}}, $url; $self->worker->{cookie_jar}->scan( sub { my ($version, $key, $val, $path, $domain, $port, $path_spec, $secure, $expires, $discard, $hash ) = @_; $self->session->stash('cookies' => {}) unless defined $self->session->stash('cookies'); $self->session->stash->{'cookies'}->{$domain}->{$key} = { version => $version, key => $key, val => $val, path => $path, domain => $domain, port => $port, path_spec => $path_spec, secure => $secure, expires => $expires, discard => $discard, hash => $hash }; $self->session->write; } ); $self->worker->{params} = {}; $self->worker->{params} = {map { ($_ => $url->query_form($_)) } $url->query_form}; sleep $self->pause; return $self; } sub proxy { my $self = shift; my $proxy = pop @_; my @protocol = @_; $self->worker->proxy([@protocol], $proxy); $self->log("info", "Set proxy $proxy using protocol(s) " . join ' and ', @protocol); return $self; } sub request_denied { my $self = shift; my ($last) = reverse @{$self->stash->{history}}; return 1 if ($self->url ne $last); } sub select { my ($self, $selector, $html) = @_; my $parser = Scrappy::Scraper::Parser->new; $parser->html($html ? $html : $self->content); return $parser->select($selector); } sub log { my $self = shift; my $type = shift; my @args = @_; if ($self->debug) { if ($type eq 'info') { $self->logger->info(@args); } elsif ($type eq 'warn') { $self->logger->warn(@args); } elsif ($type eq 'error') { $self->logger->error(@args); } else { warn $type; $self->logger->event($type, @args); } return 1; } else { return 0; } } sub pause { my $self = shift; if (defined $_[0]) { if ($_[1]) { my @range = (($_[0] < $_[1] ? $_[0] : 0) .. $_[1]); $self->worker->{pause_range} = [$_[0], $_[1]]; $self->worker->{pause} = $range[rand(@range)]; } else { $self->worker->{pause} = $_[0]; $self->worker->{pause_range} = [0, 0] unless $_[0]; } } else { my $interval = $self->worker->{pause} || 0; # select the next random pause value from the range if (defined $self->worker->{pause_range}) { my @range = @{$self->worker->{pause_range}}; $self->pause(@range) if @range == 2; } $self->log("info", "processing was halted for $interval seconds") if $interval > 0; return $interval; } } sub response { return shift->worker->response; } sub stash { my $self = shift; $self->{stash} = {} unless defined $self->{stash}; if (@_) { my $stash = @_ > 1 ? {@_} : $_[0]; if ($stash) { if (ref $stash eq 'HASH') { $self->{stash}->{$_} = $stash->{$_} for keys %{$stash}; } else { return $self->{stash}->{$stash}; } } } return $self->{stash}; } sub store { # return shift->worker->save_content(@_); # oh no i didnt just rewrite www:mech save_content, oh yes i did # ... in hope to avoid content encoding issues my $self = shift; my $filename = shift; open(my $fh, '>', $filename) or $self->worker->die("Unable to create $filename: $!"); if ( $self->worker->content_type =~ m{^text/} || $self->worker->content_type =~ m{^application/(atom|css|javascript|json|rss|xml)}) { # text $self->worker->response->decode; print {$fh} $self->worker->response->content or $self->worker->die("Unable to write to $filename: $!"); } else { # binary binmode $fh; print {$fh} $self->worker->response->content or $self->worker->die("Unable to write to $filename: $!"); } close $fh or $self->worker->die("Unable to close $filename: $!"); return $self; } sub url { return $_[0]->worker->uri if $_[0]->content; } 1; Session.pm000644000000000000 1053211614255474 17125 0ustar00rootroot000000000000Scrappy-0.94112090/lib/Scrappy# ABSTRACT: Scrappy Scraper Session Handling # Dist::Zilla: +PodWeaver package Scrappy::Session; BEGIN { $Scrappy::Session::VERSION = '0.94112090'; } # load OO System use Moose; # load other libraries use Carp; use YAML::Syck; $YAML::Syck::ImplicitTyping = 1; has 'auto_save' => (is => 'rw', isa => 'Bool', default => 1); has 'file' => (is => 'rw', isa => 'Str'); sub load { my $self = shift; my $file = shift; if ($file) { $self->file($file); croak("Session file $file does not exist or is not read/writable") unless -f $file; # load session file $self->{stash} = LoadFile($file); } return $self->{stash}; } sub stash { my $self = shift; $self->{stash} = {} unless defined $self->{stash}; if (@_) { my $stash = @_ > 1 ? {@_} : $_[0]; if ($stash) { if (ref $stash eq 'HASH') { for (keys %{$stash}) { if (lc $_ ne ':file') { $self->{stash}->{$_} = $stash->{$_}; } else { $self->{file} = $stash->{$_}; } } } else { return $self->{stash}->{$stash}; } } } $self->auto_write; return $self->{stash}; } sub write { my $self = shift; my $file = shift || $self->file; $self->file($file); if ($file) { # write session file DumpFile($file, $self->{stash}); # ... ummm croak("Session file $file does not exist or is not read/writable") unless -f $file; } return $self->{stash}; } sub auto_write { my $self = shift; $self->write if $self->auto_save; return $self; } 1; __END__ =pod =head1 NAME Scrappy::Session - Scrappy Scraper Session Handling =head1 VERSION version 0.94112090 =head1 SYNOPSIS #!/usr/bin/perl use Scrappy::Session; my $session = Scrappy::Session->new; -f 'scraper.sess' ? $session->load('scraper.sess'); $session->write('scraper.sess'); $session->stash('foo' => 'bar'); $session->stash('abc' => [('a'..'z')]); =head1 DESCRIPTION Scrappy::Session provides YAML-Based session file handling for saving recorded data across multiple execution using the L framework. =head2 ATTRIBUTES The following is a list of object attributes available with every Scrappy::Session instance. =head3 auto_save The auto_save attribute is a boolean that determines whether stash data is automatically saved to the session file on update. my $session = Scrappy::Session->new; $session->load('scraper.sess'); $session->stash('foo' => 'bar'); # turn auto-saving off $session->auto_save(0); $session->stash('foo' => 'bar'); $session->write; # explicit write =head3 file The file attribute gets/sets the filename of the current session file. my $session = Scrappy::Session->new; $session->load('scraper.sess'); $session->write('scraper.sess.bak'); $session->file('scraper.sess'); =head1 METHODS =head2 load The load method is used to read-in a session file, it returns its data in the structure it was saved-in. my $session = Scrappy::Session->new; my $data = $session->load('scraper.sess'); =head2 stash The stash method accesses the stash object which is used to store data to be written to the session file. my $session = Scrappy::Session->new; $session->load('scraper.sess'); $session->stash('foo' => 'bar'); $session->stash('abc' => [('a'..'z')]); $session->stash->{123} = [(1..9)]; =head2 write The write method is used to write-out a session file, it saves the data stored in the session stash and it returns the data written upon completion. my $session = Scrappy::Session->new; $session->stash('foo' => 'bar'); $session->stash('abc' => [('a'..'z')]); $session->stash->{123} = [(1..9)]; my $data = $session->write('scraper.sess'); =head1 AUTHOR Al Newkirk =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2010 by awncorp. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut support000755000000000000 011614255470 15407 5ustar00rootroot000000000000Scrappy-0.94112090/shareopera.txt000644000000000000 12636711614255470 17474 0ustar00rootroot000000000000Scrappy-0.94112090/share/supportOpera/9.99 (Windows NT 5.1; U; pl) Presto/9.9.9 Opera/9.80 (J2ME/MIDP; Opera Mini/5.0 (Windows; U; Windows NT 5.1; en) AppleWebKit/886; U; en) Presto/2.4.15 Opera/9.70 (Linux ppc64 ; U; en) Presto/2.2.1 Opera/9.70 (Linux i686 ; U; zh-cn) Presto/2.2.0 Opera/9.70 (Linux i686 ; U; en-us) Presto/2.2.0 Opera/9.70 (Linux i686 ; U; en) Presto/2.2.1 Opera/9.70 (Linux i686 ; U; en) Presto/2.2.0 Opera/9.70 (Linux i686 ; U; ; en) Presto/2.2.1 Opera/9.70 (Linux i686 ; U; ; en) Presto/2.2.1 Mozilla/5.0 (Linux i686 ; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.70 Mozilla/4.0 (compatible; MSIE 6.0; Linux i686 ; en) Opera 9.70 Opera 9.7 (Windows NT 5.2; U; en) Opera/9.64(Windows NT 5.1; U; en) Presto/2.1.1 Opera/9.64 (X11; Linux x86_64; U; pl) Presto/2.1.1 Opera/9.64 (X11; Linux x86_64; U; hr) Presto/2.1.1 Opera/9.64 (X11; Linux x86_64; U; en-GB) Presto/2.1.1 Opera/9.64 (X11; Linux x86_64; U; en) Presto/2.1.1 Opera/9.64 (X11; Linux x86_64; U; de) Presto/2.1.1 Opera/9.64 (X11; Linux x86_64; U; cs) Presto/2.1.1 Opera/9.64 (X11; Linux i686; U; tr) Presto/2.1.1 Opera/9.64 (X11; Linux i686; U; sv) Presto/2.1.1 Opera/9.64 (X11; Linux i686; U; pl) Presto/2.1.1 Opera/9.64 (X11; Linux i686; U; nb) Presto/2.1.1 Opera/9.64 (X11; Linux i686; U; Linux Mint; nb) Presto/2.1.1 Opera/9.64 (X11; Linux i686; U; Linux Mint; it) Presto/2.1.1 Opera/9.64 (X11; Linux i686; U; en) Presto/2.1.1 Opera/9.64 (X11; Linux i686; U; de) Presto/2.1.1 Opera/9.64 (X11; Linux i686; U; da) Presto/2.1.1 Opera/9.64 (Windows NT 6.1; U; MRA 5.5 (build 02842); ru) Presto/2.1.1 Opera/9.64 (Windows NT 6.1; U; de) Presto/2.1.1 Opera/9.64 (Windows NT 6.0; U; zh-cn) Presto/2.1.1 Opera/9.64 (Windows NT 6.0; U; pl) Presto/2.1.1 Opera/9.63 (X11; Linux x86_64; U; ru) Presto/2.1.1 Opera/9.63 (X11; Linux x86_64; U; cs) Presto/2.1.1 Opera/9.63 (X11; Linux i686; U; ru) Presto/2.1.1 Opera/9.63 (X11; Linux i686; U; ru) Opera/9.63 (X11; Linux i686; U; nb) Presto/2.1.1 Opera/9.63 (X11; Linux i686; U; en) Opera/9.63 (X11; Linux i686; U; de) Presto/2.1.1 Opera/9.63 (X11; Linux i686) Opera/9.63 (X11; FreeBSD 7.1-RELEASE i386; U; en) Presto/2.1.1 Opera/9.63 (Windows NT 6.1; U; hu) Presto/2.1.1 Opera/9.63 (Windows NT 6.1; U; en) Presto/2.1.1 Opera/9.63 (Windows NT 6.1; U; de) Presto/2.1.1 Opera/9.63 (Windows NT 6.0; U; pl) Presto/2.1.1 Opera/9.63 (Windows NT 6.0; U; nb) Presto/2.1.1 Opera/9.63 (Windows NT 6.0; U; fr) Presto/2.1.1 Opera/9.63 (Windows NT 6.0; U; en) Presto/2.1.1 Opera/9.63 (Windows NT 6.0; U; cs) Presto/2.1.1 Opera/9.63 (Windows NT 5.2; U; en) Presto/2.1.1 Opera/9.63 (Windows NT 5.2; U; de) Presto/2.1.1 Opera/9.63 (Windows NT 5.1; U; pt-BR) Presto/2.1.1 Opera/9.62 (X11; Linux x86_64; U; ru) Presto/2.1.1 Opera/9.62 (X11; Linux i686; U; pt-BR) Presto/2.1.1 Opera/9.62 (X11; Linux i686; U; Linux Mint; en) Presto/2.1.1 Opera/9.62 (X11; Linux i686; U; it) Presto/2.1.1 Opera/9.62 (X11; Linux i686; U; fi) Presto/2.1.1 Opera/9.62 (X11; Linux i686; U; en) Presto/2.1.1 Opera/9.62 (Windows NT 6.1; U; en) Presto/2.1.1 Opera/9.62 (Windows NT 6.0; U; pl) Presto/2.1.1 Opera/9.62 (Windows NT 6.0; U; nb) Presto/2.1.1 Opera/9.62 (Windows NT 6.0; U; en-GB) Presto/2.1.1 Opera/9.62 (Windows NT 6.0; U; en) Presto/2.1.1 Opera/9.62 (Windows NT 6.0; U; de) Presto/2.1.1 Opera/9.62 (Windows NT 5.2; U; en) Presto/2.1.1 Opera/9.62 (Windows NT 5.1; U; zh-tw) Presto/2.1.1 Opera/9.62 (Windows NT 5.1; U; zh-cn) Presto/2.1.1 Opera/9.62 (Windows NT 5.1; U; tr) Presto/2.1.1 Opera/9.62 (Windows NT 5.1; U; ru) Presto/2.1.1 Opera/9.62 (Windows NT 5.1; U; pt-BR) Presto/2.1.1 Opera/9.62 (Windows NT 5.1; U; pl) Presto/2.1.1 Opera/9.62 (Windows NT 5.1; U; nn) Presto/2.1.1 Opera/9.61 (X11; Linux x86_64; U; fr) Presto/2.1.1 Opera/9.61 (X11; Linux i686; U; ru) Presto/2.1.1 Opera/9.61 (X11; Linux i686; U; pl) Presto/2.1.1 Opera/9.61 (X11; Linux i686; U; en) Presto/2.1.1 Opera/9.61 (X11; Linux i686; U; de) Presto/2.1.1 Opera/9.61 (Windows NT 6.0; U; ru) Presto/2.1.1 Opera/9.61 (Windows NT 6.0; U; pt-BR) Presto/2.1.1 Opera/9.61 (Windows NT 6.0; U; http://lucideer.com; en-GB) Presto/2.1.1 Opera/9.61 (Windows NT 6.0; U; en) Presto/2.1.1 Opera/9.61 (Windows NT 5.2; U; en) Presto/2.1.1 Opera/9.61 (Windows NT 5.1; U; zh-tw) Presto/2.1.1 Opera/9.61 (Windows NT 5.1; U; zh-cn) Presto/2.1.1 Opera/9.61 (Windows NT 5.1; U; ru) Presto/2.1.1 Opera/9.61 (Windows NT 5.1; U; fr) Presto/2.1.1 Opera/9.61 (Windows NT 5.1; U; en-GB) Presto/2.1.1 Opera/9.61 (Windows NT 5.1; U; en) Presto/2.1.1 Opera/9.61 (Windows NT 5.1; U; de) Presto/2.1.1 Opera/9.61 (Windows NT 5.1; U; cs) Presto/2.1.1 Opera/9.61 (Macintosh; Intel Mac OS X; U; de) Presto/2.1.1 Mozilla/5.0 (Windows NT 5.1; U; en-GB; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.61 Opera/9.60 (X11; Linux x86_64; U) Opera/9.60 (X11; Linux i686; U; ru) Presto/2.1.1 Opera/9.60 (X11; Linux i686; U; en-GB) Presto/2.1.1 Opera/9.60 (Windows NT 6.0; U; uk) Presto/2.1.1 Opera/9.60 (Windows NT 6.0; U; ru) Presto/2.1.1 Opera/9.60 (Windows NT 6.0; U; pl) Presto/2.1.1 Opera/9.60 (Windows NT 6.0; U; de) Presto/2.1.1 Opera/9.60 (Windows NT 6.0; U; bg) Presto/2.1.1 Opera/9.60 (Windows NT 5.1; U; tr) Presto/2.1.1 Opera/9.60 (Windows NT 5.1; U; sv) Presto/2.1.1 Opera/9.60 (Windows NT 5.1; U; es-ES) Presto/2.1.1 Opera/9.60 (Windows NT 5.1; U; en-GB) Presto/2.1.1 Opera/9.60 (Windows NT 5.0; U; en) Presto/2.1.1 Mozilla/5.0 (X11; Linux x86_64; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.60 Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux x86_64; en) Opera 9.60 Opera/9.52 (X11; Linux x86_64; U; ru) Opera/9.52 (X11; Linux x86_64; U; en) Opera/9.52 (X11; Linux x86_64; U) Opera/9.52 (X11; Linux ppc; U; de) Opera/9.52 (X11; Linux i686; U; fr) Opera/9.52 (X11; Linux i686; U; en) Opera/9.52 (X11; Linux i686; U; cs) Opera/9.52 (Windows NT 6.0; U; Opera/9.52 (X11; Linux x86_64; U); en) Opera/9.52 (Windows NT 6.0; U; fr) Opera/9.52 (Windows NT 6.0; U; en) Opera/9.52 (Windows NT 6.0; U; de) Opera/9.52 (Windows NT 5.2; U; ru) Opera/9.52 (Windows NT 5.0; U; en) Opera/9.52 (Macintosh; PPC Mac OS X; U; ja) Opera/9.52 (Macintosh; PPC Mac OS X; U; fr) Opera/9.52 (Macintosh; Intel Mac OS X; U; pt-BR) Opera/9.52 (Macintosh; Intel Mac OS X; U; pt) Mozilla/5.0 (Windows NT 5.1; U; de; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.52 Mozilla/5.0 (Windows NT 5.1; U; ; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.52 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 9.52 Opera/9.51 (X11; Linux i686; U; Linux Mint; en) Opera/9.51 (X11; Linux i686; U; fr) Opera/9.51 (X11; Linux i686; U; de) Opera/9.51 (Windows NT 6.0; U; sv) Opera/9.51 (Windows NT 6.0; U; es) Opera/9.51 (Windows NT 6.0; U; en) Opera/9.51 (Windows NT 5.2; U; en) Opera/9.51 (Windows NT 5.1; U; nn) Opera/9.51 (Windows NT 5.1; U; fr) Opera/9.51 (Windows NT 5.1; U; es-LA) Opera/9.51 (Windows NT 5.1; U; es-AR) Opera/9.51 (Windows NT 5.1; U; en-GB) Opera/9.51 (Windows NT 5.1; U; en) Opera/9.51 (Windows NT 5.1; U; da) Opera/9.51 (Macintosh; Intel Mac OS X; U; en) Mozilla/5.0 (X11; Linux i686; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.51 Mozilla/5.0 (Windows NT 6.0; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.51 Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.51 Mozilla/5.0 (Windows NT 5.1; U; en-GB; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.51 Mozilla/5.0 (Windows NT 5.1; U; de; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.51 Opera/9.50 (X11; Linux x86_64; U; pl) Opera/9.50 (X11; Linux x86_64; U; nb) Opera/9.50 (X11; Linux ppc; U; en) Opera/9.50 (X11; Linux i686; U; es-ES) Opera/9.50 (Windows NT 5.2; U; it) Opera/9.50 (Windows NT 5.1; U; ru) Opera/9.50 (Windows NT 5.1; U; nn) Opera/9.50 (Windows NT 5.1; U; nl) Opera/9.50 (Windows NT 5.1; U; it) Opera/9.50 (Windows NT 5.1; U; es-ES) Opera/9.50 (Macintosh; Intel Mac OS X; U; en) Opera/9.50 (Macintosh; Intel Mac OS X; U; de) Mozilla/5.0 (Windows NT 5.1; U; zh-cn; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.50 Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux x86_64; en) Opera 9.50 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.0; en) Opera 9.50 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; en) Opera 9.50 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; de) Opera 9.50 Opera/9.5 (Windows NT 6.0; U; en) Opera/9.5 (Windows NT 5.1; U; fr) Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9b3) Gecko/2008020514 Opera 9.5 Opera 9.4 (Windows NT 6.1; U; en) Opera 9.4 (Windows NT 5.3; U; en) Opera/9.30 (Nintendo Wii; U; ; 2071; Wii Shop Channel/1.0; en) Opera/9.30 (Nintendo Wii; U; ; 2047-7;en) Opera/9.30 (Nintendo Wii; U; ; 2047-7; fr) Opera/9.30 (Nintendo Wii; U; ; 2047-7; de) Opera/9.27 (X11; Linux i686; U; fr) Opera/9.27 (X11; Linux i686; U; en) Opera/9.27 (Windows NT 5.2; U; en) Opera/9.27 (Windows NT 5.1; U; ja) Opera/9.27 (Macintosh; Intel Mac OS X; U; sv) Mozilla/5.0 (Windows NT 5.2; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.27 Mozilla/5.0 (Windows NT 5.1; U; es-la; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.27 Mozilla/5.0 (Macintosh; Intel Mac OS X; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.27 Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; en) Opera 9.27 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; en) Opera 9.27 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; es-la) Opera 9.27 Opera/9.26 (Windows NT 5.1; U; zh-cn) Opera/9.26 (Windows NT 5.1; U; pl) Opera/9.26 (Windows NT 5.1; U; nl) Opera/9.26 (Windows NT 5.1; U; MEGAUPLOAD 2.0; en) Opera/9.26 (Windows NT 5.1; U; de) Opera/9.26 (Macintosh; PPC Mac OS X; U; en) Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.26 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.0; en) Opera 9.26 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.26 Opera/9.25 (X11; Linux i686; U; fr-ca) Opera/9.25 (X11; Linux i686; U; fr) Opera/9.25 (X11; Linux i686; U; en) Opera/9.25 (Windows NT 6.0; U; SV1; MEGAUPLOAD 2.0; ru) Opera/9.25 (Windows NT 6.0; U; sv) Opera/9.25 (Windows NT 6.0; U; ru) Opera/9.25 (Windows NT 6.0; U; MEGAUPLOAD 1.0; ru) Opera/9.25 (Windows NT 6.0; U; en-US) Opera/9.25 (Windows NT 5.2; U; en) Opera/9.25 (Windows NT 5.1; U; zh-cn) Opera/9.25 (Windows NT 5.1; U; ru) Opera/9.25 (Windows NT 5.1; U; MEGAUPLOAD 1.0; pt-br) Opera/9.25 (Windows NT 5.1; U; lt) Opera/9.25 (Windows NT 5.1; U; de) Opera/9.25 (Windows NT 5.0; U; en) Opera/9.25 (Windows NT 5.0; U; cs) Opera/9.25 (Windows NT 4.0; U; en) Opera/9.25 (OpenSolaris; U; en) Opera/9.25 (Macintosh; PPC Mac OS X; U; en) Opera/9.25 (Macintosh; Intel Mac OS X; U; en) Opera/9.24 (X11; SunOS i86pc; U; en) Opera/9.24 (X11; Linux i686; U; de) Opera/9.24 (Windows NT 5.1; U; tr) Opera/9.24 (Windows NT 5.1; U; ru) Opera/9.24 (Windows NT 5.0; U; ru) Opera/9.24 (Macintosh; PPC Mac OS X; U; en) Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.24 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.24 Mozilla/4.0 (compatible; MSIE 6.0; Mac_PowerPC; en) Opera 9.24 Opera/9.23 (X11; Linux x86_64; U; en) Opera/9.23 (X11; Linux i686; U; es-es) Opera/9.23 (X11; Linux i686; U; en) Opera/9.23 (Windows NT 6.0; U; de) Opera/9.23 (Windows NT 5.1; U; zh-cn) Opera/9.23 (Windows NT 5.1; U; SV1; MEGAUPLOAD 1.0; ru) Opera/9.23 (Windows NT 5.1; U; pt) Opera/9.23 (Windows NT 5.1; U; ja) Opera/9.23 (Windows NT 5.1; U; it) Opera/9.23 (Windows NT 5.1; U; fi) Opera/9.23 (Windows NT 5.1; U; en) Opera/9.23 (Windows NT 5.1; U; de) Opera/9.23 (Windows NT 5.1; U; da) Opera/9.23 (Windows NT 5.0; U; en) Opera/9.23 (Windows NT 5.0; U; de) Opera/9.23 (Nintendo Wii; U; ; 1038-58; Wii Internet Channel/1.0; en) Opera/9.23 (Macintosh; Intel Mac OS X; U; ja) Opera/9.23 (Mac OS X; ru) Opera/9.23 (Mac OS X; fr) Mozilla/5.0 (X11; Linux i686; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.23 Opera/9.22 (X11; OpenBSD i386; U; en) Opera/9.22 (X11; Linux i686; U; en) Opera/9.22 (X11; Linux i686; U; de) Opera/9.22 (Windows NT 6.0; U; ru) Opera/9.22 (Windows NT 6.0; U; en) Opera/9.22 (Windows NT 5.1; U; SV1; MEGAUPLOAD 2.0; ru) Opera/9.22 (Windows NT 5.1; U; SV1; MEGAUPLOAD 1.0; ru) Opera/9.22 (Windows NT 5.1; U; pl) Opera/9.22 (Windows NT 5.1; U; fr) Opera/9.22 (Windows NT 5.1; U; en) Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.22 Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; en) Opera 9.22 Opera/9.21 (X11; Linux x86_64; U; en) Opera/9.21 (X11; Linux i686; U; es-es) Opera/9.21 (X11; Linux i686; U; en) Opera/9.21 (X11; Linux i686; U; de) Opera/9.21 (Windows NT 6.0; U; nb) Opera/9.21 (Windows NT 6.0; U; en) Opera/9.21 (Windows NT 5.2; U; en) Opera/9.21 (Windows NT 5.1; U; SV1; MEGAUPLOAD 1.0; ru) Opera/9.21 (Windows NT 5.1; U; ru) Opera/9.21 (Windows NT 5.1; U; pt-br) Opera/9.21 (Windows NT 5.1; U; pl) Opera/9.21 (Windows NT 5.1; U; nl) Opera/9.21 (Windows NT 5.1; U; MEGAUPLOAD 1.0; en) Opera/9.21 (Windows NT 5.1; U; fr) Opera/9.21 (Windows NT 5.1; U; en) Opera/9.21 (Windows NT 5.1; U; de) Opera/9.21 (Windows NT 5.0; U; de) Opera/9.21 (Windows 98; U; en) Opera/9.21 (Macintosh; PPC Mac OS X; U; en) Opera/9.21 (Macintosh; Intel Mac OS X; U; en) Opera/9.20(Windows NT 5.1; U; en) Opera/9.20 (X11; Linux x86_64; U; en) Opera/9.20 (X11; Linux ppc; U; en) Opera/9.20 (X11; Linux i686; U; tr) Opera/9.20 (X11; Linux i686; U; ru) Opera/9.20 (X11; Linux i686; U; pl) Opera/9.20 (X11; Linux i686; U; es-es) Opera/9.20 (X11; Linux i686; U; en) Opera/9.20 (X11; Linux i586; U; en) Opera/9.20 (Windows NT 6.0; U; es-es) Opera/9.20 (Windows NT 6.0; U; en) Opera/9.20 (Windows NT 6.0; U; de) Opera/9.20 (Windows NT 5.2; U; en) Opera/9.20 (Windows NT 5.1; U; zh-tw) Opera/9.20 (Windows NT 5.1; U; nb) Opera/9.20 (Windows NT 5.1; U; MEGAUPLOAD=1.0; es-es) Opera/9.20 (Windows NT 5.1; U; it) Opera/9.20 (Windows NT 5.1; U; es-es) Opera/9.20 (Windows NT 5.1; U; es-AR) Opera/9.20 (Windows NT 5.1; U; en) Opera/9.12 (X11; Linux i686; U; en) (Ubuntu) Opera/9.12 (Windows NT 5.0; U; ru) Opera/9.12 (Windows NT 5.0; U) Opera/9.10 (X11; Linux; U; en) Opera/9.10 (X11; Linux x86_64; U; en) Opera/9.10 (X11; Linux i686; U; pl) Opera/9.10 (X11; Linux i686; U; kubuntu;pl) Opera/9.10 (X11; Linux i686; U; en) Opera/9.10 (X11; Linux i386; U; en) Opera/9.10 (Windows NT 6.0; U; it-IT) Opera/9.10 (Windows NT 6.0; U; en) Opera/9.10 (Windows NT 5.2; U; en) Opera/9.10 (Windows NT 5.2; U; de) Opera/9.10 (Windows NT 5.1; U; zh-tw) Opera/9.10 (Windows NT 5.1; U; sv) Opera/9.10 (Windows NT 5.1; U; pt) Opera/9.10 (Windows NT 5.1; U; pl) Opera/9.10 (Windows NT 5.1; U; nl) Opera/9.10 (Windows NT 5.1; U; MEGAUPLOAD 1.0; pl) Opera/9.10 (Windows NT 5.1; U; it) Opera/9.10 (Windows NT 5.1; U; fi) Opera/9.10 (Windows NT 5.1; U; es-es) Opera/9.10 (Windows NT 5.1; U; en) Opera/9.02 (X11; Linux i686; U; pl) Opera/9.02 (X11; Linux i686; U; hu) Opera/9.02 (X11; Linux i686; U; en) Opera/9.02 (X11; Linux i686; U; de) Opera/9.02 (Windows XP; U; ru) Opera/9.02 (Windows NT 5.2; U; en) Opera/9.02 (Windows NT 5.2; U; de) Opera/9.02 (Windows NT 5.1; U; zh-cn) Opera/9.02 (Windows NT 5.1; U; ru) Opera/9.02 (Windows NT 5.1; U; pt-br) Opera/9.02 (Windows NT 5.1; U; pl) Opera/9.02 (Windows NT 5.1; U; nb) Opera/9.02 (Windows NT 5.1; U; ja) Opera/9.02 (Windows NT 5.1; U; fi) Opera/9.02 (Windows NT 5.1; U; en) Opera/9.02 (Windows NT 5.1; U; de) Opera/9.02 (Windows NT 5.0; U; sv) Opera/9.02 (Windows NT 5.0; U; pl) Opera/9.02 (Windows NT 5.0; U; en) Opera/9.02 (Windows NT 5.0; U; de) Opera/9.01 (X11; OpenBSD i386; U; en) Opera/9.01 (X11; Linux i686; U; en) Opera/9.01 (X11; FreeBSD 6 i386; U;pl) Opera/9.01 (X11; FreeBSD 6 i386; U; en) Opera/9.01 (Windows NT 5.2; U; ru) Opera/9.01 (Windows NT 5.2; U; en) Opera/9.01 (Windows NT 5.1; U; ru) Opera/9.01 (Windows NT 5.1; U; pl) Opera/9.01 (Windows NT 5.1; U; ja) Opera/9.01 (Windows NT 5.1; U; es-es) Opera/9.01 (Windows NT 5.1; U; en) Opera/9.01 (Windows NT 5.1; U; de) Opera/9.01 (Windows NT 5.1; U; da) Opera/9.01 (Windows NT 5.1; U; cs) Opera/9.01 (Windows NT 5.1; U; bg) Opera/9.01 (Windows NT 5.1) Opera/9.01 (Windows NT 5.0; U; en) Opera/9.01 (Windows NT 5.0; U; de) Opera/9.01 (Macintosh; PPC Mac OS X; U; it) Opera/9.01 (Macintosh; PPC Mac OS X; U; en) Opera/9.00 (X11; Linux i686; U; pl) Opera/9.00 (X11; Linux i686; U; en) Opera/9.00 (X11; Linux i686; U; de) Opera/9.00 (Windows; U) Opera/9.00 (Windows NT 5.2; U; ru) Opera/9.00 (Windows NT 5.2; U; pl) Opera/9.00 (Windows NT 5.2; U; en) Opera/9.00 (Windows NT 5.1; U; ru) Opera/9.00 (Windows NT 5.1; U; pl) Opera/9.00 (Windows NT 5.1; U; nl) Opera/9.00 (Windows NT 5.1; U; ja) Opera/9.00 (Windows NT 5.1; U; it) Opera/9.00 (Windows NT 5.1; U; fr) Opera/9.00 (Windows NT 5.1; U; fi) Opera/9.00 (Windows NT 5.1; U; es-es) Opera/9.00 (Windows NT 5.1; U; en) Opera/9.00 (Windows NT 5.1; U; de) Opera/9.00 (Windows NT 5.0; U; en) Opera/9.00 (Nintindo Wii; U; ; 103858; Wii Shop Channel/1.0; en) Opera/9.00 (Nintendo Wii; U; ; 1038-58; Wii Internet Channel/1.0; en) Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) Opera 8.65 [en] Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; Sprint:PPC-6700) Opera 8.65 [en] Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; PPC; 320x320)Opera 8.65 [en] Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; PPC; 320x320) Opera 8.65 [en] Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; PPC; 240x320) Opera 8.65 [zh-cn] Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; PPC; 240x320) Opera 8.65 [nl] Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; PPC; 240x320) Opera 8.65 [de] Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; PPC; 240x240) Opera 8.65 [en] Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; PPC) Opera 8.65 [en] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) Opera 8.60 [en] Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; PPC; 240x320) Opera 8.60 [en] Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; PPC; 240x240) Opera 8.60 [en] Opera/8.54 (X11; Linux i686; U; pl) Opera/8.54 (X11; Linux i686; U; de) Opera/8.54 (Windows NT 5.1; U; ru) Opera/8.54 (Windows NT 5.1; U; pl) Opera/8.54 (Windows NT 5.1; U; en) Opera/8.54 (Windows NT 5.0; U; en) Opera/8.54 (Windows NT 5.0; U; de) Opera/8.54 (Windows 98; U; en) Mozilla/5.0 (Windows NT 5.1; U; pl) Opera 8.54 Mozilla/5.0 (Windows 98; U; en) Opera 8.54 Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; en) Opera 8.54 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.54 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; pl) Opera 8.54 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; fr) Opera 8.54 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.54 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; de) Opera 8.54 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; da) Opera 8.54 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; pl) Opera 8.54 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; en) Opera 8.54 Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; en) Opera 8.54 Opera/8.53 (Windows NT 5.2; U; en) Opera/8.53 (Windows NT 5.1; U; pt) Opera/8.53 (Windows NT 5.1; U; en) Opera/8.53 (Windows NT 5.1; U; de) Opera/8.53 (Windows NT 5.0; U; en) Opera/8.53 (Windows 98; U; en) Mozilla/5.0 (Windows NT 5.1; U; en) Opera 8.53 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; sv) Opera 8.53 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.53 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.53 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; en) Opera 8.53 Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; en) Opera 8.53 Opera/8.52 (X11; Linux x86_64; U; en) Opera/8.52 (X11; Linux i686; U; en) Opera/8.52 (Windows NT 5.1; U; ru) Opera/8.52 (Windows NT 5.1; U; en) Opera/8.52 (Windows NT 5.0; U; en) Opera/8.52 (Windows ME; U; en) Mozilla/5.0 (X11; Linux i686; U; en) Opera 8.52 Mozilla/5.0 (Windows NT 5.1; U; en) Opera 8.52 Mozilla/5.0 (Windows NT 5.1; U; de) Opera 8.52 Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; en) Opera 8.52 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; pl) Opera 8.52 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.52 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; de) Opera 8.52 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; en) Opera 8.52 Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; en) Opera 8.52 Opera/8.51 (X11; U; Linux i686; en-US; rv:1.8) Opera/8.51 (X11; Linux x86_64; U; en) Opera/8.51 (X11; Linux i686; U; en) Opera/8.51 (Windows NT 5.1; U; pl) Opera/8.51 (Windows NT 5.1; U; nb) Opera/8.51 (Windows NT 5.1; U; fr) Opera/8.51 (Windows NT 5.1; U; en) Opera/8.51 (Windows NT 5.1; U; de) Opera/8.51 (Windows NT 5.0; U; en) Opera/8.51 (Windows 98; U; en) Opera/8.51 (Macintosh; PPC Mac OS X; U; de) Opera/8.51 (FreeBSD 5.1; U; en) Mozilla/5.0 (Windows NT 5.1; U; ru) Opera 8.51 Mozilla/5.0 (Windows NT 5.1; U; fr) Opera 8.51 Mozilla/5.0 (Windows NT 5.1; U; en) Opera 8.51 Mozilla/5.0 (Windows ME; U; en) Opera 8.51 Mozilla/5.0 (Macintosh; PPC Mac OS X; U; en) Opera 8.51 Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; ru) Opera 8.51 Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; en) Opera 8.51 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; sv) Opera 8.51 Opera/8.50 (Windows NT 5.1; U; ru) Opera/8.50 (Windows NT 5.1; U; pl) Opera/8.50 (Windows NT 5.1; U; fr) Opera/8.50 (Windows NT 5.1; U; es-ES) Opera/8.50 (Windows NT 5.1; U; en) Opera/8.50 (Windows NT 5.1; U; de) Opera/8.50 (Windows NT 5.0; U; fr) Opera/8.50 (Windows NT 5.0; U; en) Opera/8.50 (Windows NT 5.0; U; de) Opera/8.50 (Windows ME; U; en) Opera/8.50 (Windows 98; U; ru) Opera/8.50 (Windows 98; U; en) Mozilla/5.0 (Windows NT 5.1; U; en) Opera 8.50 Mozilla/5.0 (Windows NT 5.1; U; de) Opera 8.50 Mozilla/5.0 (Windows NT 5.0; U; de) Opera 8.50 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; ru) Opera 8.50 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; en) Opera 8.50 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; tr) Opera 8.50 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; sv) Opera 8.50 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.50 Opera/8.10 (Windows NT 5.1; U; en) Opera/8.02 (Windows NT 5.1; U; ru) Opera/8.02 (Windows NT 5.1; U; en) Opera/8.02 (Windows NT 5.1; U; de) Mozilla/5.0 (Windows NT 5.1; U; en) Opera 8.02 Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; en) Opera 8.02 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.02 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; de) Opera 8.02 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; en) Opera 8.02 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; de) Opera 8.02 Mozilla/4.0 (compatible; MSIE 6.0; Windows ME; pl) Opera 8.02 Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; de) Opera 8.02 Opera/8.01 (Windows NT 5.1; U; pl) Opera/8.01 (Windows NT 5.1; U; fr) Opera/8.01 (Windows NT 5.1; U; en) Opera/8.01 (Windows NT 5.1; U; de) Opera/8.01 (Windows NT 5.0; U; de) Opera/8.01 (Macintosh; U; PPC Mac OS; en) Opera/8.01 (Macintosh; PPC Mac OS X; U; en) Mozilla/5.0 (Windows NT 5.1; U; en) Opera 8.01 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.01 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.01 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; de) Opera 8.01 Opera/8.00 (Windows NT 5.1; U; en) Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.00 Opera/8.0 (X11; Linux i686; U; cs) Opera/8.0 (Windows NT 5.1; U; en) Mozilla/5.0 (Windows NT 5.1; U; en) Opera 8.0 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.0 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; IT) Opera 8.0 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.0 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; de) Opera 8.0 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; en) Opera 8.0 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; de) Opera 8.0 Mozilla/4.0 (compatible; MSIE 6.0; Windows CE) Opera 8.0 [en] Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; en) Opera 8.0 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 7.60 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.54u1 [en] Mozilla/4.0 (compatible; MSIE 6.0; Windows 98) Opera 7.54u1 [en] Opera/7.54 (X11; Linux i686; U) [en] Opera/7.54 (Windows NT 5.1; U) [en] Opera/7.54 (Windows NT 5.1; U) [it] Opera/7.54 (Windows NT 5.1; U) [en] Opera/7.54 (Windows NT 5.1; U) [de] Opera/7.54 (Windows NT 5.0; U) [en] Opera/7.54 (Windows NT 5.0; U) [de] Opera/7.54 (Windows 98; U) [de] Mozilla/5.0 (X11; Linux i686; U) Opera 7.54 [en] Mozilla/5.0 (X11; Linux i686; U) Opera 7.54 [en] Mozilla/5.0 (Windows NT 5.1; U) Opera 7.54 [de] Mozilla/5.0 (Windows NT 5.0; U) Opera 7.54 [en] Mozilla/4.78 (Windows NT 5.1; U) Opera 7.54 [de] Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686) Opera 7.54 [en] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.54 [en] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.54 [en] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.54 [de] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.54 [pl] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.54 [de] Mozilla/4.0 (compatible; MSIE 5.23; Mac_PowerPC) Opera 7.54 [en] Opera/7.53 (X11; Linux i686; U) [en_US] Opera/7.53 (Windows NT 5.1; U) [en] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.53 [en] Mozilla/4.0 (compatible; MSIE 6.0; Windows ME) Opera 7.53 [en] Opera/7.52 (Windows NT 5.1; U) [en] Opera/7.52 (Windows NT 5.1; U) [en] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.52 [en] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.52 [en] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.52 [en] Opera/7.51 (X11; SunOS sun4u; U) [de] Opera/7.51 (Windows NT 5.1; U) [en] Opera/7.51 (Linux) [en] Mozilla/4.78 (Windows NT 5.1; U) Opera 7.51 [en] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.51 [ru] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.51 [en] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.51 [en] Opera/7.50 (Windows XP; U) Opera/7.50 (Windows NT 5.1; U) [en] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.50 [ru] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.50 [en] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.50 [ru] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.50 [en] Mozilla/4.0 (compatible; MSIE 6.0; Windows 98) Opera 7.50 [en] Mozilla/4.0 (compatible; MSIE 6.0; ; Linux i686) Opera 7.50 [en] Opera/7.23 (Windows NT 6.0; U) [zh-cn] Opera/7.23 (Windows NT 5.1; U; sv) Opera/7.23 (Windows NT 5.0; U) [en] Opera/7.23 (Windows NT 5.0; U) [fr] Opera/7.23 (Windows NT 5.0; U) [en] Opera/7.23 (Windows 98; U) [en] Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686) Opera 7.23 [fi] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.23 [ru] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.23 [ru] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.23 [en] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.23 [en-GB] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.23 [de] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.23 [en] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.23 [de] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.23 [ca] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0) Opera 7.23 [de] Mozilla/4.0 (compatible; MSIE 6.0; Windows 98) Opera 7.23 [en] Opera/7.22 (Windows NT 5.1; U) [de] Opera/7.21 (Windows NT 5.1; U) [en] Mozilla/5.0 (Windows NT 5.0; U) Opera 7.21 [en] Opera/7.20 (Windows NT 5.1; U) [en] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.20 [de] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.20 [de] Mozilla/4.0 (compatible; MSIE 6.0; Windows 98) Opera 7.20 [en] Mozilla/4.0 (compatible; MSIE 6.0; Windows 98) Opera 7.20 [de] Opera/7.11 (Windows NT 5.1; U) [pl] Opera/7.11 (Windows NT 5.1; U) [en] Opera/7.11 (Windows NT 5.1; U) [de] Opera/7.11 (Windows NT 5.0; U) [en] Opera/7.11 (Windows NT 5.0; U) [de] Opera/7.11 (Windows 98; U) [en] Opera/7.11 (Windows 98; U) [de] Opera/7.11 (Linux 2.6.0-test4 i686; U) [en] Mozilla/5.0 (Windows NT 5.1; U) Opera 7.11 [en] Mozilla/5.0 (Windows NT 5.0; U) Opera 7.11 [en] Mozilla/5.0 (Linux 2.4.21-0.13mdk i686; U) Opera 7.11 [en] Mozilla/4.78 (Windows NT 5.0; U) Opera 7.11 [en] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.11 [ru] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.11 [en] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.11 [de] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.11 [fr] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.11 [en] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.11 [de] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0) Opera 7.11 [de] Mozilla/4.0 (compatible; MSIE 6.0; Windows ME) Opera 7.11 [en] Opera/7.10 (Windows NT 5.1; U) [en] Opera/7.10 (Windows NT 5.0; U) [en] Opera/7.10 (Windows NT 4.0; U) [de] Opera/7.10 (Linux Debian;en-US) Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.10 [fr] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.10 [en] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.10 [en] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0) Opera 7.10 [de] Mozilla/3.0 (Windows NT 5.0; U) Opera 7.10 [de] Opera/7.03 (Windows NT 5.1; U) [en] Opera/7.03 (Windows NT 5.1; U) [de] Opera/7.03 (Windows NT 5.0; U) [en] Opera/7.03 (Windows NT 5.0; U) [de] Opera/7.03 (Windows NT 4.0; U) [en] Opera/7.03 (Windows 98; U) [en] Opera/7.03 (Windows 98; U) [de] Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.6) Gecko/2009020911 Ubuntu/8.10 (intrepid) Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.1) Opera 7.03 [de] Mozilla/5.0 (Windows NT 5.1; U) Opera 7.03 [de] Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.1) Opera 7.03 [en] Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.1) Opera 7.03 [de] Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.0) Opera 7.03 [en] Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.0) Opera 7.03 [de] Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows ME) Opera 7.03 [de] Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows 98) Opera 7.03 [en] Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows 98) Opera 7.03 [de] Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows 95) Opera 7.03 [de] Opera/7.02 (Windows NT 5.1; U) [fr] Opera/7.02 (Windows 98; U) [en] Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.1) Opera 7.02 [en] Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.1) Opera 7.02 [de] Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 4.0) Opera 7.02 [de] Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows ME) Opera 7.02 [en] Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows 98) Opera 7.02 [en] Opera/7.01 (Windows NT 5.1; U) [en] Opera/7.01 (Windows NT 5.0; U) [en] Opera/7.01 (Windows 98; U) [fr] Opera/7.01 (Windows 98; U) [en] Mozilla/5.0 (Windows NT 5.0; U) Opera 7.01 [en] Mozilla/4.78 (Windows NT 5.0; U) Opera 7.01 [en] Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.1) Opera 7.01 [en] Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.1) Opera 7.01 [de] Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.0) Opera 7.01 [en] Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows 98) Opera 7.01 [en] Mozilla/3.0 (Windows NT 5.0; U) Opera 7.01 [en] Opera/7.0 (Windows NT 5.1; U) [en] Opera/7.0 (Windows NT 4.0; U) [en] Opera/7.0 (Windows NT 4.0; U) [de] Opera/7.0 (Windows 98; U) [en] Opera/7.0 (Windows 2000; U) [en] Opera/7.0 (Windows 2000; U) [de] Mozilla/5.0 (Windows 2000; U) Opera 7.0 [en] Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows XP) Opera 7.0 [en] Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.1) Opera 7.0 [en] Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.0) Opera 7.0 [en] Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.0) Opera 7.0 [de] Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 4.0) Opera 7.0 [en] Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows ME) Opera 7.0 [en] Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows 98) Opera 7.0 [en] Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows 2000) Opera 7.0 [en] Opera/6.12 (Linux 2.4.20-4GB i686; U) [en] Opera/6.12 (Linux 2.4.18-14cpq i686; U) [en] Mozilla/4.0 (compatible; MSIE 5.0; UNIX) Opera 6.12 [en] Mozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.20-4GB i686) Opera 6.12 [de] Opera/6.11 (Linux 2.4.18-bf2.4 i686; U) [en] Opera/6.11 (Linux 2.4.18-4GB i686; U) [en] Opera/6.11 (Linux 2.4.10-4GB i686; U) [en] Opera/6.11 (FreeBSD 4.7-RELEASE i386; U) [en] Mozilla/5.0 (Linux 2.4.19-16mdk i686; U) Opera 6.11 [en] Mozilla/4.0 (compatible; MSIE 5.0; UNIX) Opera 6.11 [fr] Mozilla/4.0 (compatible; MSIE 5.0; UNIX) Opera 6.11 [en] Mozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.4 i686) Opera 6.11 [en] Mozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.20-13.7 i686) Opera 6.11 [de] Mozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.19-4GB i686) Opera 6.11 [en] Mozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.19-16mdk i686) Opera 6.11 [en] Mozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.18 i686) Opera 6.11 [de] Mozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.10-4GB i686) Opera 6.11 [en] Mozilla/5.0 (Linux 2.4.18-ltsp-1 i686; U) Opera 6.1 [en] Mozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.19 i686) Opera 6.1 [en] Mozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.18-4GB i686) Opera 6.1 [de] Mozilla/5.0 (Windows XP; U) Opera 6.06 [en] Mozilla/4.0 (compatible; MSIE 5.0; Windows XP) Opera 6.06 [fr] Mozilla/4.0 (compatible; MSIE 5.0; Windows XP) Opera 6.06 [de] Opera/6.05 (Windows XP; U) [en] Opera/6.05 (Windows XP; U) [en] Opera/6.05 (Windows XP; U) [de] Opera/6.05 (Windows NT 4.0; U) [ro] Opera/6.05 (Windows NT 4.0; U) [fr] Opera/6.05 (Windows NT 4.0; U) [de] Opera/6.05 (Windows ME; U) [fr] Opera/6.05 (Windows ME; U) [de] Opera/6.05 (Windows 98; U) [fr] Opera/6.05 (Windows 98; U) [en] Opera/6.05 (Windows 98; U) [de] Opera/6.05 (Windows 2000; U) [oc] Opera/6.05 (Windows 2000; U) [ja] Opera/6.05 (Windows 2000; U) [it] Opera/6.05 (Windows 2000; U) [fr] Opera/6.05 (Windows 2000; U) [en] Opera/6.05 (Windows 2000; U) [de] Mozilla/5.0 (Windows XP; U) Opera 6.05 [de] Mozilla/5.0 (Windows NT 4.0; U) Opera 6.05 [en] Mozilla/5.0 (Windows ME; U) Opera 6.05 [de] Opera/6.04 (Windows XP; U) [en] Opera/6.04 (Windows XP; U) [de] Opera/6.04 (Windows NT 4.0; U) [en] Opera/6.04 (Windows NT 4.0; U) [de] Opera/6.04 (Windows 98; U) [en-GB] Opera/6.04 (Windows 2000; U) [en] Opera/6.04 (Windows 2000; U) [de] Mozilla/5.0 (Windows 2000; U) Opera 6.04 [en] Mozilla/4.78 (Windows 2000; U) Opera 6.04 [de] Mozilla/4.0 (compatible; MSIE 5.0; Windows XP) Opera 6.04 [fr] Mozilla/4.0 (compatible; MSIE 5.0; Windows XP) Opera 6.04 [en] Mozilla/4.0 (compatible; MSIE 5.0; Windows XP) Opera 6.04 [de] Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 4.0) Opera 6.04 [en] Mozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.04 [pl] Mozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.04 [en] Mozilla/4.0 (compatible; MSIE 5.0; Windows 2000) Opera 6.04 [en] Mozilla/4.0 (compatible; MSIE 5.0; Windows 2000) Opera 6.04 [de] Opera/6.04 (Windows XP; U) [de] Opera/6.04 (Windows 2000; U) [en] Mozilla/4.0 (compatible; MSIE 5.0; Windows XP) Opera 6.04 [en] Opera/6.03 (Windows NT 4.0; U) [en] Opera/6.03 (Windows 98; U) [en] Opera/6.03 (Windows 2000; U) [en] Opera/6.03 (Linux 2.4.18-18.7.x i686; U) [en] Mozilla/5.0 (Windows 2000; U) Opera 6.03 [en] Mozilla/5.0 (Linux 2.4.18-18.7.x i686; U) Opera 6.03 [en] Mozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.03 [en] Mozilla/4.0 (compatible; MSIE 5.0; Windows 2000) Opera 6.03 [en] Mozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.20-4GB i686) Opera 6.03 [en] Mozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.19-4GB i686) Opera 6.03 [en] Mozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.18-4GB i686) Opera 6.03 [en] Mozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.0-64GB-SMP i686) Opera 6.03 [en] Opera/6.02 (Windows NT 4.0; U) [de] Mozilla/5.0 (Windows 2000; U) Opera 6.02 [en] Mozilla/5.0 (Linux; U) Opera 6.02 [en] Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 4.0) Opera 6.02 [en] Mozilla/4.0 (compatible; MSIE 5.0; Windows 95) Opera 6.02 [en] Mozilla/4.0 (compatible; MSIE 5.0; Windows 95) Opera 6.02 [de] Mozilla/4.0 (compatible; MSIE 5.0; Windows 2000) Opera 6.02 [en] Mozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.20-686 i686) Opera 6.02 [en] Mozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.18-4GB i686) Opera 6.02 [en] Opera/6.02 (Windows NT 4.0; U) [de] Opera/6.01 (Windows XP; U) [de] Opera/6.01 (Windows 98; U) [en] Opera/6.01 (Windows 98; U) [de] Opera/6.01 (Windows 2000; U) [en] Opera/6.01 (Windows 2000; U) [de] Mozilla/5.0 (Windows 2000; U) Opera 6.01 [en] Mozilla/5.0 (Windows 2000; U) Opera 6.01 [de] Mozilla/4.78 (Windows 2000; U) Opera 6.01 [en] Mozilla/4.0 (compatible; MSIE 5.0; Windows XP) Opera 6.01 [it] Mozilla/4.0 (compatible; MSIE 5.0; Windows XP) Opera 6.01 [et] Mozilla/4.0 (compatible; MSIE 5.0; Windows XP) Opera 6.01 [de] Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 4.0) Opera 6.01 [en] Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 4.0) Opera 6.01 [de] Mozilla/4.0 (compatible; MSIE 5.0; Windows ME) Opera 6.01 [en] Mozilla/4.0 (compatible; MSIE 5.0; Windows ME) Opera 6.01 [de] Mozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.01 [it] Mozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.01 [fr] Mozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.01 [en] Mozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.01 [de] Mozilla/4.0 (compatible; MSIE 5.0; Windows 95) Opera 6.01 [de] Opera/6.0 (Windows XP; U) [de] Opera/6.0 (Windows ME; U) [de] Opera/6.0 (Windows 2000; U) [fr] Opera/6.0 (Windows 2000; U) [de] Opera/6.0 (Macintosh; PPC Mac OS X; U) Mozilla/4.76 (Windows NT 4.0; U) Opera 6.0 [de] Mozilla/4.0 (compatible; MSIE 5.0; Windows XP) Opera 6.0 [en] Mozilla/4.0 (compatible; MSIE 5.0; Windows XP) Opera 6.0 [de] Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 4.0) Opera 6.0 [en] Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 4.0) Opera 6.0 [de] Mozilla/4.0 (compatible; MSIE 5.0; Windows ME) Opera 6.0 [de] Mozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.0 [en] Mozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.0 [fr] Mozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.0 [en] Mozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.0 [de] Mozilla/4.0 (compatible; MSIE 5.0; Windows 2000) Opera 6.0 [en] Mozilla/4.0 (compatible; MSIE 5.0; Windows 2000) Opera 6.0 [en] Mozilla/4.0 (compatible; MSIE 5.0; Windows 2000) Opera 6.0 [de] Mozilla/4.0 (compatible; MSIE 5.0; Mac_PowerPC) Opera 6.0 [en] Mozilla/4.0 (compatible; MSIE 5.0; Mac_PowerPC) Opera 6.0 [de] Opera/5.12 (Windows NT 5.1; U) [de] Opera/5.12 (Windows 98; U) [en] Mozilla/5.0 (Windows 98; U) Opera 5.12 [de] Mozilla/4.76 (Windows NT 4.0; U) Opera 5.12 [en] Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 4.0) Opera 5.12 [de] Mozilla/4.0 (compatible; MSIE 5.0; Windows ME) Opera 5.12 [it] Mozilla/4.0 (compatible; MSIE 5.0; Windows ME) Opera 5.12 [de] Mozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 5.12 [it] Mozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 5.12 [en] Mozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 5.12 [de] Mozilla/4.0 (compatible; MSIE 5.0; Mac_PowerPC) Opera 5.12 [en] Opera/5.12 (Windows NT 5.1; U) [de] Opera/5.11 (Windows 98; U) [en] Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 4.0) Opera 5.11 [de] Mozilla/4.0 (compatible; MSIE 5.0; Windows ME) Opera 5.11 [en] Opera/5.02 (Windows 98; U) [en] Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 5.1) Opera 5.02 [en] Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 4.0) Opera 5.02 [en] Mozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 5.02 [en] Opera/5.02 (Windows NT 5.0; U) [en] Opera/5.0 (SunOS 5.8 sun4u; U) [en] Mozilla/5.0 (SunOS 5.8 sun4u; U) Opera 5.0 [en] Mozilla/4.0 (compatible; MSIE 5.0; SunOS 5.8 sun4u) Opera 5.0 [en] Mozilla/4.0 (compatible; MSIE 5.0; Mac_PowerPC) Opera 5.0 [en] Mozilla/4.0 (compatible; MSIE 5.0; Linux) Opera 5.0 [en] Mozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.4-4GB i686) Opera 5.0 [en] Mozilla/4.0 (compatible; MSIE 5.0; Linux 2.4.0-4GB i686) Opera 5.0 [en] Opera/4.02 (Windows 98; U) [en] Opera/9.80 (Windows NT 6.1; U; pl) Presto/2.6.31 Version/10.70 Opera/9.80 (X11; Linux i686; U; pl) Presto/2.6.30 Version/10.61 Opera/9.80 (Windows NT 6.1; U; en) Presto/2.6.30 Version/10.61 Opera/9.80 (Macintosh; Intel Mac OS X; U; nl) Presto/2.6.30 Version/10.61 Opera/9.80 (X11; Linux i686; U; en) Presto/2.5.27 Version/10.60 Opera/9.80 (Windows NT 6.0; U; nl) Presto/2.6.30 Version/10.60 Opera/10.60 (Windows NT 5.1; U; zh-cn) Presto/2.6.30 Version/10.60 Opera/10.60 (Windows NT 5.1; U; en-US) Presto/2.6.30 Version/10.60 Opera/9.80 (X11; Linux i686; U; it) Presto/2.5.24 Version/10.54 Opera/9.80 (X11; Linux i686; U; en-GB) Presto/2.5.24 Version/10.53 Mozilla/5.0 (Windows NT 5.1; U; zh-cn; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.53 Mozilla/5.0 (Windows NT 5.1; U; Firefox/5.0; en; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.53 Mozilla/5.0 (Windows NT 5.1; U; Firefox/4.5; en; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.53 Mozilla/5.0 (Windows NT 5.1; U; Firefox/3.5; en; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.53 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; ko) Opera 10.53 Opera/9.80 (Windows NT 6.1; U; fr) Presto/2.5.24 Version/10.52 Opera/9.80 (Windows NT 6.1; U; en) Presto/2.5.22 Version/10.51 Opera/9.80 (Windows NT 6.0; U; cs) Presto/2.5.22 Version/10.51 Opera/9.80 (Windows NT 5.2; U; ru) Presto/2.5.22 Version/10.51 Opera/9.80 (Linux i686; U; en) Presto/2.5.22 Version/10.51 Mozilla/5.0 (Windows NT 6.1; U; en-GB; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.51 Mozilla/5.0 (Linux i686; U; en; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.51 Mozilla/4.0 (compatible; MSIE 8.0; Linux i686; en) Opera 10.51 Opera/9.80 (Windows NT 6.1; U; zh-tw) Presto/2.5.22 Version/10.50 Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.5.22 Version/10.50 Opera/9.80 (Windows NT 6.1; U; sk) Presto/2.6.22 Version/10.50 Opera/9.80 (Windows NT 6.1; U; ja) Presto/2.5.22 Version/10.50 Opera/9.80 (Windows NT 6.0; U; zh-cn) Presto/2.5.22 Version/10.50 Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.5.22 Version/10.50 Opera/10.50 (Windows NT 6.1; U; en-GB) Presto/2.2.2 Opera/9.80 (X11; Linux x86_64; U; it) Presto/2.2.15 Version/10.10 Opera/9.80 (Windows NT 6.1; U; de) Presto/2.2.15 Version/10.10 Opera/9.80 (Windows NT 6.0; U; Gecko/20100115; pl) Presto/2.2.15 Version/10.10 Opera/9.80 (Windows NT 6.0; U; en) Presto/2.2.15 Version/10.10 Opera/9.80 (Windows NT 5.1; U; de) Presto/2.2.15 Version/10.10 Opera/9.80 (Windows NT 5.1; U; cs) Presto/2.2.15 Version/10.10 Mozilla/5.0 (Windows NT 6.0; U; tr; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 10.10 Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; de) Opera 10.10 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.0; tr) Opera 10.10 Opera/9.80 (X11; Linux x86_64; U; en-GB) Presto/2.2.15 Version/10.01 Opera/9.80 (X11; Linux x86_64; U; en) Presto/2.2.15 Version/10.00 Opera/9.80 (X11; Linux x86_64; U; de) Presto/2.2.15 Version/10.00 Opera/9.80 (X11; Linux i686; U; ru) Presto/2.2.15 Version/10.00 Opera/9.80 (X11; Linux i686; U; pt-BR) Presto/2.2.15 Version/10.00 Opera/9.80 (X11; Linux i686; U; pl) Presto/2.2.15 Version/10.00 Opera/9.80 (X11; Linux i686; U; nb) Presto/2.2.15 Version/10.00 Opera/9.80 (X11; Linux i686; U; en-GB) Presto/2.2.15 Version/10.00 Opera/9.80 (X11; Linux i686; U; en) Presto/2.2.15 Version/10.00 Opera/9.80 (X11; Linux i686; U; Debian; pl) Presto/2.2.15 Version/10.00 Opera/9.80 (X11; Linux i686; U; de) Presto/2.2.15 Version/10.00 Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.2.15 Version/10.00 Opera/9.80 (Windows NT 6.1; U; fi) Presto/2.2.15 Version/10.00 Opera/9.80 (Windows NT 6.1; U; en) Presto/2.2.15 Version/10.00 Opera/9.80 (Windows NT 6.1; U; de) Presto/2.2.15 Version/10.00 Opera/9.80 (Windows NT 6.1; U; cs) Presto/2.2.15 Version/10.00 Opera/9.80 (Windows NT 6.0; U; en) Presto/2.2.15 Version/10.00 Opera/9.80 (Windows NT 6.0; U; de) Presto/2.2.15 Version/10.00 Opera/9.80 (Windows NT 5.2; U; en) Presto/2.2.15 Version/10.00 Opera/9.80 (Windows NT 5.1; U; zh-cn) Presto/2.2.15 Version/10.00 Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.2.15 Version/10.00 Mozilla/5.0 (Macintosh; ; Intel Mac OS X; fr; rv:1.8.1.1) Gecko/20061204 Opera Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera Mozilla/4.0 (compatible; MSIE 6.0; Windows CE) OperaQueue.pm.bak000644000000000000 1212011614255470 17311 0ustar00rootroot000000000000Scrappy-0.94112090/lib/Scrappy# ABSTRACT: Scrappy HTTP Request Flow-Control System # Dist::Zilla: +PodWeaver package Scrappy::Queue; BEGIN { $Scrappy::Queue::VERSION = '0.94112090'; } # load OO System use Moose; # load other libraries use Array::Unique; use URI; # queue and cursor variables for navigation our @_queue = (); tie @_queue, 'Array::Unique'; our $_cursor = -1; sub list { return @_queue; } sub add { my $self = shift; my @urls = @_; # validate and formulate proper URLs for (my $i = 0; $i < @urls; $i++) { my $u = URI->new($urls[$i]); if ('URI::' =~ ref $u) { $urls[$i] = $u->as_string; } else { unless ($urls[$i] =~ /\w{2,}\.\w{2,}/) { delete $urls[$i]; } } } push @_queue, @urls; return $self; } sub clear { my $self = shift; @_queue = (); $_cursor = -1; return $self; } sub reset { my $self = shift; $_cursor = -1; return $self; } sub current { my $self = shift; return $_queue[$_cursor]; } sub next { my $self = shift; return $_queue[++$_cursor]; } sub previous { my $self = shift; return $_queue[--$_cursor]; } sub first { my $self = shift; $_cursor = 0; return $_queue[$_cursor]; } sub last { my $self = shift; $_cursor = scalar(@_queue) - 1; return $_queue[$_cursor]; } sub index { my $self = shift; $_cursor = shift || 0; return $_queue[$_cursor]; } sub cursor { return $_cursor; } 1; __END__ =pod =head1 NAME Scrappy::Queue - Scrappy HTTP Request Flow-Control System =head1 VERSION version 0.94112090 =head1 SYNOPSIS #!/usr/bin/perl use Scrappy::Queue; my $queue = Scrappy::Queue->new; $queue->add($url); while (my $url = $queue->next) { ... $queue->add(...); } =head1 DESCRIPTION Scrappy::Queue provides a system for saving URLs to a recordset/queue and iterating of them using the L framework. =head1 METHODS =head2 list The list method return the list of URLs in the queue. This is returned in list context. my $queue = Scrappy::Queue->new; ... my @list = $queue->list; =head2 add The add method adds new URLs to the queue. Duplicate URLs will be ignored. my $queue = Scrappy::Queue->new; $queue->add($url); =head2 clear The clear method completely empties the queue and resets the cursor (loop position). my $queue = Scrappy::Queue->new; $queue->add(...); $queue->add(...); $queue->add(...); $queue->clear; =head2 reset The reset method resets the cursor (loop position). my $queue = Scrappy::Queue->new; $queue->add(...); $queue->add(...); $queue->add(...); while (my $url = $queue->next) { $queue->reset if ...; # beware the infinate loop } $queue->reset; =head2 current The current method returns the URL in the current loop position. my $queue = Scrappy::Queue->new; $queue->add(...); $queue->add(...); $queue->add(...); while (my $url = $queue->next) { last if ...; } print 'great' if $url eq $queue->current; =head2 next The next method moves the cursor to the next loop position and returns the URL. my $queue = Scrappy::Queue->new; $queue->add(...); $queue->add(...); $queue->add(...); while (my $url = $queue->next) { ... } =head2 previous The previous method moves the cursor to the previous loop position and returns the URL. my $queue = Scrappy::Queue->new; $queue->add(...); $queue->add(...); $queue->add(...); while (my $url = $queue->next) { ... } print $queue->previous; =head2 first The first method moves the cursor to the first loop position and returns the URL. my $queue = Scrappy::Queue->new; $queue->add(...); $queue->add(...); $queue->add(...); print $queue->first; =head2 last The last method moves the cursor to the last loop position and returns the URL. my $queue = Scrappy::Queue->new; $queue->add(...); $queue->add(...); $queue->add(...); print $queue->last; =head2 index The index method moves the cursor to the specified loop position and returns the URL. The loop position is a standard array index position. my $queue = Scrappy::Queue->new; $queue->add(...); $queue->add(...); $queue->add(...); print $queue->index(1); =head2 cursor The cursor method returns the current loop position. my $queue = Scrappy::Queue->new; print $queue->cursor; =head1 AUTHOR Al Newkirk =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2010 by awncorp. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut 00_test_function_url.t000644000000000000 26111614255470 17404 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 1) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); use_ok 'Scrappy'; 00_test_function_get.t000644000000000000 26111614255470 17361 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 1) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); use_ok 'Scrappy'; 00_test_function_log.t000644000000000000 26111614255470 17363 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 1) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); use_ok 'Scrappy'; safari.txt000644000000000000 15335411614255470 17627 0ustar00rootroot000000000000Scrappy-0.94112090/share/supportMozilla/5.0 (Windows; U; Windows NT 6.1; ja-JP) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Mozilla/5.0 (Windows; U; Windows NT 6.0; ja-JP) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; ja-jp) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; fr) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; zh-cn) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; ru-ru) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; ko-kr) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; it-it) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us) AppleWebKit/534.1+ (KHTML, like Gecko) Version/5.0 Safari/533.16 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-au) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; el-gr) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; ca-es) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; zh-tw) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; ja-jp) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; it-it) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; fr-fr) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; es-es) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; nl-nl) AppleWebKit/533.16 (KHTML, like Gecko) Version/4.1 Safari/533.16 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; ja-jp) AppleWebKit/533.16 (KHTML, like Gecko) Version/4.1 Safari/533.16 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; de-de) AppleWebKit/533.16 (KHTML, like Gecko) Version/4.1 Safari/533.16 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_7; en-us) AppleWebKit/533.4 (KHTML, like Gecko) Version/4.1 Safari/533.4 Mozilla/5.0 (Windows; U; Windows NT 5.1; en) AppleWebKit/526.9 (KHTML, like Gecko) Version/4.0dp1 Safari/526.8 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; tr) AppleWebKit/528.4+ (KHTML, like Gecko) Version/4.0dp1 Safari/526.11.2 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; en) AppleWebKit/528.4+ (KHTML, like Gecko) Version/4.0dp1 Safari/526.11.2 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; de) AppleWebKit/528.4+ (KHTML, like Gecko) Version/4.0dp1 Safari/526.11.2 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.1b3pre) Gecko/20081212 Mozilla/5.0 (Windows; U; Windows NT 5.1; en) AppleWebKit/526.9 (KHTML, like Gecko) Version/4.0dp1 Safari/526.8 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-gb) AppleWebKit/528.10+ (KHTML, like Gecko) Version/4.0dp1 Safari/526.11.2 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_4; en-us) AppleWebKit/528.4+ (KHTML, like Gecko) Version/4.0dp1 Safari/526.11.2 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_4; en-gb) AppleWebKit/528.4+ (KHTML, like Gecko) Version/4.0dp1 Safari/526.11.2 Mozilla/5.0 (Windows; U; Windows NT 6.1; es-ES) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7 Mozilla/5.0 (Windows; U; Windows NT 5.1; cs-CZ) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; en-us) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; da-dk) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; ja-jp) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us) AppleWebKit/533.4+ (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; de-de) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; ja-jp) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; nl-nl) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7 Mozilla/5.0(iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10gin_lib.cc Mozilla/5.0(iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10 Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-TW) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10 Mozilla/5.0 (Windows; U; Windows NT 6.1; ko-KR) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10 Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE) AppleWebKit/532+ (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; hu-hu) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us) AppleWebKit/531.21.11 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; ru-ru) AppleWebKit/533.2+ (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; de-at) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10 Mozilla/5.0 (iPhone; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10 Mozilla/5.0 (iPhone Simulator; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7D11 Safari/531.21.10 Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; es-es) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B367 Safari/531.21.10 Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; es-es) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B360 Safari/531.21.10 Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.1021.10gin_lib.cc Mozilla/5.0 (iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-us) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; en-us) AppleWebKit/532.0+ (KHTML, like Gecko) Version/4.0.3 Safari/531.9.2009 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; en-us) AppleWebKit/532.0+ (KHTML, like Gecko) Version/4.0.3 Safari/531.9 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; nl-nl) AppleWebKit/532.3+ (KHTML, like Gecko) Version/4.0.3 Safari/531.9 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; fi-fi) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532+ (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1 Mozilla/5.0 (Windows; U; Windows NT 6.0; zh-TW) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1 Mozilla/5.0 (Windows; U; Windows NT 6.0; pl-PL) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1 Mozilla/5.0 (Windows; U; Windows NT 6.0; ja-JP) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1 Mozilla/5.0 (Windows; U; Windows NT 6.0; fr-FR) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1 Mozilla/5.0 (Windows; U; Windows NT 5.2; de-DE) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_7; en-us) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/531.2+ (KHTML, like Gecko) Version/4.0.1 Safari/530.18 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.1 Safari/530.18 Mozilla/5.0 (Windows; U; Windows NT 6.0; ru-RU) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 Mozilla/5.0 (Windows; U; Windows NT 6.0; ja-JP) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 Mozilla/5.0 (Windows; U; Windows NT 6.0; hu-HU) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 Mozilla/5.0 (Windows; U; Windows NT 6.0; he-IL) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 Mozilla/5.0 (Windows; U; Windows NT 6.0; he-IL) AppleWebKit/528+ (KHTML, like Gecko) Version/4.0 Safari/528.16 Mozilla/5.0 (Windows; U; Windows NT 6.0; fr-FR) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 Mozilla/5.0 (Windows; U; Windows NT 6.0; es-es) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 Mozilla/5.0 (Windows; U; Windows NT 6.0; en) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 Mozilla/5.0 (Windows; U; Windows NT 6.0; de-DE) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-PT) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 Mozilla/5.0 (Windows; U; Windows NT 5.1; nb-NO) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 Mozilla/5.0 (Windows; U; Windows NT 5.1; hu-HU) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 Mozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 Mozilla/5.0 (Windows; U; Windows NT 5.1; fi-FI) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16 Mozilla/5.0 (Windows; U; Windows NT 5.1; cs-CZ) AppleWebKit/525.28.3 (KHTML, like Gecko) Version/3.2.3 Safari/525.29 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; ja-jp) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/3.2.3 Safari/525.28.3 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; de-de) AppleWebKit/525.28.3 (KHTML, like Gecko) Version/3.2.3 Safari/525.28.3 Mozilla/5.0 (Windows; U; Windows NT 6.1; de-DE) AppleWebKit/525.28 (KHTML, like Gecko) Version/3.2.2 Safari/525.28.1 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.28 (KHTML, like Gecko) Version/3.2.2 Safari/525.28.1 Mozilla/5.0 (Windows; U; Windows NT 5.2; de-DE) AppleWebKit/528+ (KHTML, like Gecko) Version/3.2.2 Safari/525.28.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU) AppleWebKit/525.28 (KHTML, like Gecko) Version/3.2.2 Safari/525.28.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; nb-NO) AppleWebKit/525.28 (KHTML, like Gecko) Version/3.2.2 Safari/525.28.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; ko-KR) AppleWebKit/525.28 (KHTML, like Gecko) Version/3.2.2 Safari/525.28.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR) AppleWebKit/525.28 (KHTML, like Gecko) Version/3.2.2 Safari/525.28.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES) AppleWebKit/525.28 (KHTML, like Gecko) Version/3.2.2 Safari/525.28.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.28 (KHTML, like Gecko) Version/3.2.2 Safari/525.28.1 Mozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 Mozilla/5.0 (Windows; U; Windows NT 5.2; de-DE) AppleWebKit/528+ (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_6; nl-nl) AppleWebKit/530.0+ (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_6; fr-fr) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_6; en-us) AppleWebKit/530.1+ (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; sv-se) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; pl-pl) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; it-it) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; fr-fr) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; es-es) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; zh-tw) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; ru-ru) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; nb-no) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; ko-kr) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; it-it) AppleWebKit/528.8+ (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; it-it) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; hr-hr) AppleWebKit/530.1+ (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; fr-fr) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; es-es) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 Mozilla/5.0 (Windows; U; Windows NT 6.0; hu-HU) AppleWebKit/525.26.2 (KHTML, like Gecko) Version/3.2 Safari/525.26.13 Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU) AppleWebKit/525.26.2 (KHTML, like Gecko) Version/3.2 Safari/525.26.13 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_5; fi-fi) AppleWebKit/525.26.2 (KHTML, like Gecko) Version/3.2 Safari/525.26.12 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_5; en-us) AppleWebKit/525.26.2 (KHTML, like Gecko) Version/3.2 Safari/525.26.12 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; sv-se) AppleWebKit/525.26.2 (KHTML, like Gecko) Version/3.2 Safari/525.26.12 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; ja-jp) AppleWebKit/525.26.2 (KHTML, like Gecko) Version/3.2 Safari/525.26.12 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; en-us) AppleWebKit/525.25 (KHTML, like Gecko) Version/3.2 Safari/525.25 Mozilla/5.0 (Windows; U; Windows NT 6.0; pl-PL) AppleWebKit/525.19 (KHTML, like Gecko) Version/3.1.2 Safari/525.21 Mozilla/5.0 (Windows; U; Windows NT 6.0; fr-FR) AppleWebKit/525.19 (KHTML, like Gecko) Version/3.1.2 Safari/525.21 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Version/3.1.2 Safari/525.21 Mozilla/5.0 (Windows; U; Windows NT 5.2; pt-BR) AppleWebKit/525.19 (KHTML, like Gecko) Version/3.1.2 Safari/525.21 Mozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL) AppleWebKit/525.19 (KHTML, like Gecko) Version/3.1.2 Safari/525.21 Mozilla/5.0 (Windows; U; Windows NT 5.1; it-IT) AppleWebKit/525.19 (KHTML, like Gecko) Version/3.1.2 Safari/525.21 Mozilla/5.0 (Windows; U; Windows NT 5.1; it-IT) AppleWebKit/525+ (KHTML, like Gecko) Version/3.1.2 Safari/525.21 Mozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR) AppleWebKit/525.19 (KHTML, like Gecko) Version/3.1.2 Safari/525.21 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB) AppleWebKit/525.19 (KHTML, like Gecko) Version/3.1.2 Safari/525.21 Mozilla/5.0 (Windows; U; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.1.2 Safari/525.21 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_6; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_5; fr-fr) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_4; fr-fr) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; sv-se) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.2 Safari/525.22 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; fr) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.2 Safari/525.22 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/530.6+ (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/528.7+ (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/528.4+ (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-gb) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.17 Mozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.17 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.17 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525+ (KHTML, like Gecko) Version/3.1.1 Safari/525.17 Mozilla/5.0 (Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_0_1 like Mac OS X; fr-fr) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5G77 Safari/525.20 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_3; sv-se) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.20 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_3; en-us) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.20 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_3; en) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.20 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_2; en) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.18 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; ja-jp) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.18 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; en) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.18 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; de-de) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.20 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Safari/525.20 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_3; nl-nl) AppleWebKit/527+ (KHTML, like Gecko) Version/3.1.1 Safari/525.20 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_3; nb-no) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.20 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_3; hu-hu) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.20 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_3; es-es) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.20 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_3; en-ca) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.20 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_2; ja-jp) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.18 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_2; fr-fr) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.18 Mozilla/5.0 (Windows; U; Windows NT 5.2; ru-RU) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13 Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13 Mozilla/5.0 (Windows; U; Windows NT 5.1; da-DK) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_4; en-us) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1 Safari/525.13 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_2; en-gb) AppleWebKit/526+ (KHTML, like Gecko) Version/3.1 Safari/525.9 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_2; en-gb) AppleWebKit/526+ (KHTML, like Gecko) Version/3.1 iPhone Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; nl-nl) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.1 Safari/525.13 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_2; pt-br) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_2; it-it) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_2; fr-fr) AppleWebKit/525.9 (KHTML, like Gecko) Version/3.1 Safari/525.9 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_2; es-es) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_2; en-us) AppleWebKit/526.1+ (KHTML, like Gecko) Version/3.1 Safari/525.13 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_2; en-us) AppleWebKit/525.9 (KHTML, like Gecko) Version/3.1 Safari/525.9 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_2; en-us) AppleWebKit/525.7 (KHTML, like Gecko) Version/3.1 Safari/525.7 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_2; en-gb) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_2; en-au) AppleWebKit/525.8+ (KHTML, like Gecko) Version/3.1 Safari/525.6 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_4_11; en-us) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13 Mozilla/5.0 (X11; U; Linux i386; en-GB; rv:1.8.1.7) AppleWebKit (KHTML, like Gecko) (KHTML, like Gecko) Gecko/20070914 Firefox/2.0.0.11 Version/3.0.4 Safari/523.11 Mozilla/5.0 (Windows; U; Windows NT 6.0; en) AppleWebKit/525+ (KHTML, like Gecko) Version/3.0.4 Safari/523.11 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; sv-se) AppleWebKit/523.12.2 (KHTML, like Gecko) Version/3.0.4 Safari/523.12.2 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/523.10.3 (KHTML, like Gecko) Version/3.0.4 Safari/523.10 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/523.10.3 (KHTML, like Gecko) Version/3.0.4 Safari/523.10 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_4; en-us) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.0.4 Safari/523.10 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; en) AppleWebKit/525.3+ (KHTML, like Gecko) Version/3.0.4 Safari/523.12.2 Mozilla/5.0 (Macintosh; U; Intel Mac OS X; sv-se) AppleWebKit/523.12.2 (KHTML, like Gecko) Version/3.0.4 Safari/523.12.2 Mozilla/5.0 (Macintosh; U; Intel Mac OS X; sv-se) AppleWebKit/523.10.6 (KHTML, like Gecko) Version/3.0.4 Safari/523.10.6 Mozilla/5.0 (Macintosh; U; Intel Mac OS X; sv-se) AppleWebKit/523.10.3 (KHTML, like Gecko) Version/3.0.4 Safari/523.10 Mozilla/5.0 (Macintosh; U; Intel Mac OS X; ko-kr) AppleWebKit/523.15.1 (KHTML, like Gecko) Version/3.0.4 Safari/523.15 Mozilla/5.0 (Macintosh; U; Intel Mac OS X; ja-jp) AppleWebKit/523.12.2 (KHTML, like Gecko) Version/3.0.4 Safari/523.12.2 Mozilla/5.0 (Macintosh; U; Intel Mac OS X; ja-jp) AppleWebKit/523.10.3 (KHTML, like Gecko) Version/3.0.4 Safari/523.10 Mozilla/5.0 (Macintosh; U; Intel Mac OS X; it-it) AppleWebKit/523.12.2 (KHTML, like Gecko) Version/3.0.4 Safari/523.12.2 Mozilla/5.0 (Macintosh; U; Intel Mac OS X; it-it) AppleWebKit/523.10.6 (KHTML, like Gecko) Version/3.0.4 Safari/523.10.6 Mozilla/5.0 (Macintosh; U; Intel Mac OS X; fr-fr) AppleWebKit/525.1+ (KHTML, like Gecko) Version/3.0.4 Safari/523.10 Mozilla/5.0 (Macintosh; U; Intel Mac OS X; fr-fr) AppleWebKit/523.10.3 (KHTML, like Gecko) Version/3.0.4 Safari/523.10 Mozilla/5.0 (Macintosh; U; Intel Mac OS X; fr) AppleWebKit/523.12.2 (KHTML, like Gecko) Version/3.0.4 Safari/523.12.2 Mozilla/5.0 (Macintosh; U; Intel Mac OS X; es-es) AppleWebKit/523.15.1 (KHTML, like Gecko) Version/3.0.4 Safari/523.15 Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit/525.1+ (KHTML, like Gecko) Version/3.0.4 Safari/523.10 Mozilla/5.0 (Windows; U; Windows NT 6.0; en) AppleWebKit/522.15.5 (KHTML, like Gecko) Version/3.0.3 Safari/522.15.5 Mozilla/5.0 (Windows; U; Windows NT 6.0; cs) AppleWebKit/522.15.5 (KHTML, like Gecko) Version/3.0.3 Safari/522.15.5 Mozilla/5.0 (Windows; U; Windows NT 5.1; sv) AppleWebKit/522.15.5 (KHTML, like Gecko) Version/3.0.3 Safari/522.15.5 Mozilla/5.0 (Windows; U; Windows NT 5.1; fr) AppleWebKit/522.15.5 (KHTML, like Gecko) Version/3.0.3 Safari/522.15.5 Mozilla/5.0 (Windows; U; Windows NT 5.1; en) AppleWebKit/522.15.5 (KHTML, like Gecko) Version/3.0.3 Safari/522.15.5 Mozilla/5.0 (Windows; U; Windows NT 5.1; de) AppleWebKit/522.15.5 (KHTML, like Gecko) Version/3.0.3 Safari/522.15.5 Mozilla/5.0 (Windows; U; Windows NT 5.1; da-DK) AppleWebKit/523.11.1+ (KHTML, like Gecko) Version/3.0.3 Safari/522.15.5 Mozilla/5.0 (Windows; U; Windows NT 5.1; da) AppleWebKit/522.15.5 (KHTML, like Gecko) Version/3.0.3 Safari/522.15.5 Mozilla/5.0 (Windows; U; Windows NT 5.1; cs) AppleWebKit/522.15.5 (KHTML, like Gecko) Version/3.0.3 Safari/522.15.5 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/523.6 (KHTML, like Gecko) Version/3.0.3 Safari/523.6 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/523.3+ (KHTML, like Gecko) Version/3.0.3 Safari/522.12.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/522.11.1 (KHTML, like Gecko) Version/3.0.3 Safari/522.12.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; ca-es) AppleWebKit/522.11.1 (KHTML, like Gecko) Version/3.0.3 Safari/522.12.1 Mozilla/5.0 (Macintosh; U; Intel Mac OS X; ru-ru) AppleWebKit/522.11.1 (KHTML, like Gecko) Version/3.0.3 Safari/522.12.1 Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit/522.11.1 (KHTML, like Gecko) Version/3.0.3 Safari/522.12.1 Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/523.9+ (KHTML, like Gecko) Version/3.0.3 Safari/522.12.1 Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/523.5+ (KHTML, like Gecko) Version/3.0.3 Safari/522.12.1 Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/523.2+ (KHTML, like Gecko) Version/3.0.3 Safari/522.12.1 Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/522.11.1 (KHTML, like Gecko) Version/3.0.3 Safari/522.12.1 Mozilla/5.0 (Macintosh; U; Intel Mac OS X; de-de) AppleWebKit/522.11.1 (KHTML, like Gecko) Version/3.0.3 Safari/522.12.1 Mozilla/5.0 (Windows; U; Windows NT 6.0; nl) AppleWebKit/522.13.1 (KHTML, like Gecko) Version/3.0.2 Safari/522.13.1 Mozilla/5.0 (Windows; U; Windows NT 5.2; zh) AppleWebKit/522.13.1 (KHTML, like Gecko) Version/3.0.2 Safari/522.13.1 Mozilla/5.0 (Windows; U; Windows NT 5.2; en) AppleWebKit/522.13.1 (KHTML, like Gecko) Version/3.0.2 Safari/522.13.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; nl) AppleWebKit/522.13.1 (KHTML, like Gecko) Version/3.0.2 Safari/522.13.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; it) AppleWebKit/522.13.1 (KHTML, like Gecko) Version/3.0.2 Safari/522.13.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en) AppleWebKit/522.13.1 (KHTML, like Gecko) Version/3.0.2 Safari/522.13.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; el) AppleWebKit/522.13.1 (KHTML, like Gecko) Version/3.0.2 Safari/522.13.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; cs) AppleWebKit/522.13.1 (KHTML, like Gecko) Version/3.0.2 Safari/522.13.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/522.11 (KHTML, like Gecko) Version/3.0.2 Safari/522.12 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/522+ (KHTML, like Gecko) Version/3.0.2 Safari/522.12 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/522.11 (KHTML, like Gecko) Version/3.0.2 Safari/522.12 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/522.11 (KHTML, like Gecko) Version/3.0.2 Safari/522.12 Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/522.11 (KHTML, like Gecko) Version/3.0.2 Safari/522.12 Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/522+ (KHTML, like Gecko) Version/3.0.2 Safari/522.12 Mozilla/5.0 (Windows; U; Windows NT 6.0; fi) AppleWebKit/522.12.1 (KHTML, like Gecko) Version/3.0.1 Safari/522.12.2 Mozilla/5.0 (Windows; U; Windows NT 6.0; en) AppleWebKit/522.12.1 (KHTML, like Gecko) Version/3.0.1 Safari/522.12.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; th) AppleWebKit/522.12.1 (KHTML, like Gecko) Version/3.0.1 Safari/522.12.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; sv) AppleWebKit/522.12.1 (KHTML, like Gecko) Version/3.0.1 Safari/522.12.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; nl) AppleWebKit/522.12.1 (KHTML, like Gecko) Version/3.0.1 Safari/522.12.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; en) AppleWebKit/522.4.1+ (KHTML, like Gecko) Version/3.0.1 Safari/522.12.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; en) AppleWebKit/522.12.1 (KHTML, like Gecko) Version/3.0.1 Safari/522.12.2 Mozilla/5.0 (Windows; U; Windows NT 5.0; en) AppleWebKit/522.12.1 (KHTML, like Gecko) Version/3.0.1 Safari/522.12.2 Mozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE) AppleWebKit/523.13 (KHTML, like Gecko) Version/3.0 Safari/523.13 Mozilla/5.0 (Windows; U; Windows NT 6.0; nl) AppleWebKit/522.11.3 (KHTML, like Gecko) Version/3.0 Safari/522.11.3 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/523.15 (KHTML, like Gecko) Version/3.0 Safari/523.15 Mozilla/5.0 (Windows; U; Windows NT 6.0; da-DK) AppleWebKit/523.12.9 (KHTML, like Gecko) Version/3.0 Safari/523.12.9 Mozilla/5.0 (Windows; U; Windows NT 5.2; pt) AppleWebKit/522.11.3 (KHTML, like Gecko) Version/3.0 Safari/522.11.3 Mozilla/5.0 (Windows; U; Windows NT 5.2; nl) AppleWebKit/522.11.3 (KHTML, like Gecko) Version/3.0 Safari/522.11.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW) AppleWebKit/523.15 (KHTML, like Gecko) Version/3.0 Safari/523.15 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh) AppleWebKit/522.11.3 (KHTML, like Gecko) Version/3.0 Safari/522.11.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; tr-TR) AppleWebKit/523.15 (KHTML, like Gecko) Version/3.0 Safari/523.15 Mozilla/5.0 (Windows; U; Windows NT 5.1; sv) AppleWebKit/522.11.3 (KHTML, like Gecko) Version/3.0 Safari/522.11.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; ru) AppleWebKit/522.11.3 (KHTML, like Gecko) Version/3.0 Safari/522.11.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR) AppleWebKit/525+ (KHTML, like Gecko) Version/3.0 Safari/523.15 Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR) AppleWebKit/523.15 (KHTML, like Gecko) Version/3.0 Safari/523.15 Mozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL) AppleWebKit/523.15 (KHTML, like Gecko) Version/3.0 Safari/523.15 Mozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL) AppleWebKit/523.12.9 (KHTML, like Gecko) Version/3.0 Safari/523.12.9 Mozilla/5.0 (Windows; U; Windows NT 5.1; nl) AppleWebKit/522.11.3 (KHTML, like Gecko) Version/3.0 Safari/522.11.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; nb) AppleWebKit/522.11.3 (KHTML, like Gecko) Version/3.0 Safari/522.11.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; id) AppleWebKit/522.11.3 (KHTML, like Gecko) Version/3.0 Safari/522.11.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; hr) AppleWebKit/522.11.3 (KHTML, like Gecko) Version/3.0 Safari/522.11.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR) AppleWebKit/523.15 (KHTML, like Gecko) Version/3.0 Safari/523.15 Mozilla/5.0 (Linux; U; Ubuntu; en-us) AppleWebKit/525.13 (KHTML, like Gecko) Version/2.2 Firefox/525.13 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; sv-se) AppleWebKit/419 (KHTML, like Gecko) Safari/419.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; sv-se) AppleWebKit/418.9 (KHTML, like Gecko) Safari/419.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; sv-se) AppleWebKit/418.9 (KHTML, like Gecko) Safari/ Mozilla/5.0 (Macintosh; U; PPC Mac OS X; pt-pt) AppleWebKit/418.9.1 (KHTML, like Gecko) Safari/419.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; nl-nl) AppleWebKit/418.8 (KHTML, like Gecko) Safari/419.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/418.9.1 (KHTML, like Gecko) Safari/419.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/418.9 (KHTML, like Gecko) Safari/419.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; it-it) AppleWebKit/419 (KHTML, like Gecko) Safari/419.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; it-it) AppleWebKit/418.9 (KHTML, like Gecko) Safari/419.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/418.9.1 (KHTML, like Gecko) Safari/419.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fi-fi) AppleWebKit/418.8 (KHTML, like Gecko) Safari/419.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; es-es) AppleWebKit/418.8 (KHTML, like Gecko) Safari/419.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; es) AppleWebKit/419 (KHTML, like Gecko) Safari/419.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en_CA) AppleWebKit/419 (KHTML, like Gecko) Safari/419.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/418.9 (KHTML, like Gecko) Safari/419.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/418.8 (KHTML, like Gecko) Safari/419.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/419 (KHTML, like Gecko) Safari/419.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/418.9.1 (KHTML, like Gecko) Safari/419.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/418.9 (KHTML, like Gecko) Safari/419.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/418.9 (KHTML, like Gecko) Mozilla/5.0 (Macintosh; U; PPC Mac OS X; tr-tr) AppleWebKit/418 (KHTML, like Gecko) Safari/417.9.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; sv-se) AppleWebKit/418 (KHTML, like Gecko) Safari/417.9.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; sv-se) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.8_Adobe Mozilla/5.0 (Macintosh; U; PPC Mac OS X; nl-nl) AppleWebKit/418 (KHTML, like Gecko) Safari/417.9.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; nl-nl) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.9.2 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; nl-nl) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.8 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; nb-no) AppleWebKit/418 (KHTML, like Gecko) Safari/417.9.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; nb-no) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.8 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; it-it) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.9.2 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; it-it) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.8 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.8 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.8 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/417.9 (KHTML, like Gecko) Mozilla/5.0 (Macintosh; U; PPC Mac OS X; es) AppleWebKit/418 (KHTML, like Gecko) Safari/417.9.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; es) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.8 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/418 (KHTML, like Gecko) Safari/417.9.2 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.9.2 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.8 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/418 (KHTML, like Gecko) Safari/417.9.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/418 (KHTML, like Gecko) Safari/417.9.2 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; nl-nl) AppleWebKit/416.12 (KHTML, like Gecko) Safari/416.13 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; nl-nl) AppleWebKit/416.11 (KHTML, like Gecko) Safari/416.12 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; nl-nl) AppleWebKit/416.11 (KHTML, like Gecko) Safari/312 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; nb-no) AppleWebKit/416.12 (KHTML, like Gecko) Safari/416.13 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/416.12 (KHTML, like Gecko) Safari/416.13 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; it-it) AppleWebKit/416.12 (KHTML, like Gecko) Safari/416.13 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/416.12 (KHTML, like Gecko) Safari/416.13 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/416.11 (KHTML, like Gecko) Safari/416.12 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/416.12 (KHTML, like Gecko) Safari/416.13_Adobe Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/416.12 (KHTML, like Gecko) Safari/416.13 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/416.12 (KHTML, like Gecko) Safari/412.5 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/416.11 (KHTML, like Gecko) Safari/416.12 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/416.12 (KHTML, like Gecko) Safari/416.13 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/416.11 (KHTML, like Gecko) Safari/416.12 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-ca) AppleWebKit/416.11 (KHTML, like Gecko) Safari/416.12 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/416.12 (KHTML, like Gecko) Safari/416.13 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/416.11 (KHTML, like Gecko) Safari/416.12 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/416.11 (KHTML, like Gecko) Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/416.12 (KHTML, like Gecko) Safari/416.13_Adobe Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/416.12 (KHTML, like Gecko) Safari/416.13 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/412.7 (KHTML, like Gecko) Safari/412.5 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; it-it) AppleWebKit/412.7 (KHTML, like Gecko) Safari/412.5 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/412.7 (KHTML, like Gecko) Safari/412.5 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/412.7 (KHTML, like Gecko) Safari/412.5 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/412.7 (KHTML, like Gecko) Safari/412.5 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/412.7 (KHTML, like Gecko) Safari/412.6 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/412.7 (KHTML, like Gecko) Safari/412.5 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/412.7 (KHTML, like Gecko) Safari/412.5_Adobe Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/412.7 (KHTML, like Gecko) Safari/412.5 Mozilla/5.0 (Macintosh; U; PPC Mac OS; pl-pl) AppleWebKit/412 (KHTML, like Gecko) Safari/412 Mozilla/5.0 (Macintosh; U; PPC Mac OS; en-en) AppleWebKit/412 (KHTML, like Gecko) Safari/412 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; it-it) AppleWebKit/412.6 (KHTML, like Gecko) Safari/412.2 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/412 (KHTML, like Gecko) Safari/412 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/412.6 (KHTML, like Gecko) Safari/412.2 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/412 (KHTML, like Gecko) Safari/412 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; es-ES) AppleWebKit/412 (KHTML, like Gecko) Safari/412 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en_US) AppleWebKit/412 (KHTML, like Gecko) Safari/412 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/412.6 (KHTML, like Gecko) Safari/412.2 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/412 (KHTML, like Gecko) Safari/412 Privoxy/3.0 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/412 (KHTML, like Gecko) Safari/412 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/412.6.2 (KHTML, like Gecko) Safari/412.2.2 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/412.6.2 (KHTML, like Gecko) Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/412.6 (KHTML, like Gecko) Safari/412.2 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/412 (KHTML, like Gecko) Safari/412 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/412.6.2 (KHTML, like Gecko) Safari/412.2.2 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/412.6 (KHTML, like Gecko) Safari/412.2_Adobe Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/412.6 (KHTML, like Gecko) Safari/412.2 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/412.6 (KHTML, like Gecko) Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/412 (KHTML, like Gecko) Safari/412 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; sv-se) AppleWebKit/312.8 (KHTML, like Gecko) Safari/312.5 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; it-it) AppleWebKit/312.8 (KHTML, like Gecko) Safari/312.6 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/312.8 (KHTML, like Gecko) Safari/312.6 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/312.8 (KHTML, like Gecko) Safari/312.5 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/312.8 (KHTML, like Gecko) Safari/312.5 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/312.8.1 (KHTML, like Gecko) Safari/312.6 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/312.8 (KHTML, like Gecko) Safari/312.6 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/312.8 (KHTML, like Gecko) Safari/312.5 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/312.8 (KHTML, like Gecko) Safari/312.6 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/312.8 (KHTML, like Gecko) Safari/312.5 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/312.8 (KHTML, like Gecko) Safari/312.3.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/312.8.1 (KHTML, like Gecko) Safari/312.6 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/312.8 (KHTML, like Gecko) Safari/312.5_Adobe Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/312.8 (KHTML, like Gecko) Safari/312.5 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; sv-se) AppleWebKit/312.5.2 (KHTML, like Gecko) Safari/312.3.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; sv-se) AppleWebKit/312.5.1 (KHTML, like Gecko) Safari/312.3.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/312.5.1 (KHTML, like Gecko) Safari/312.3.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; it-it) AppleWebKit/312.5.1 (KHTML, like Gecko) Safari/312.3.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/312.5.2 (KHTML, like Gecko) Safari/312.3.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/312.5.1 (KHTML, like Gecko) Safari/312.3.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/312.5 (KHTML, like Gecko) Safari/312.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/312.5.2 (KHTML, like Gecko) Safari/312.3.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/312.5.1 (KHTML, like Gecko) Safari/312.3.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/312.5 (KHTML, like Gecko) Safari/312.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; es-es) AppleWebKit/312.5.2 (KHTML, like Gecko) Safari/312.3.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; es) AppleWebKit/312.5.1 (KHTML, like Gecko) Safari/312.3.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/312.5.1 (KHTML, like Gecko) Safari/312.3.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/312.5 (KHTML, like Gecko) Safari/312.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/312.5.2 (KHTML, like Gecko) Safari/312.3.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/312.5.2 (KHTML, like Gecko) Safari/125 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/312.5.1 (KHTML, like Gecko) Safari/312.3.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/312.5.1 (KHTML, like Gecko) Safari/125.9 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/312.5 (KHTML, like Gecko) Safari/312.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/312.5.2 (KHTML, like Gecko) Safari/312.3.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; it-it) AppleWebKit/312.1 (KHTML, like Gecko) Safari/312 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/312.1.1 (KHTML, like Gecko) Safari/312 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/312.1 (KHTML, like Gecko) Safari/312 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/312.1 (KHTML, like Gecko) Safari/125 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-ch) AppleWebKit/312.1.1 (KHTML, like Gecko) Safari/312 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-ca) AppleWebKit/312.1 (KHTML, like Gecko) Safari/312 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/312.1 (KHTML, like Gecko) Safari/312 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/312.1 (KHTML, like Gecko) Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/312.1.1 (KHTML, like Gecko) Safari/312 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/312.1 (KHTML, like Gecko) Safari/312 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/312.1.1 (KHTML, like Gecko) Safari/312 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/312.1 (KHTML, like Gecko) Safari/312.3.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/312.1 (KHTML, like Gecko) Safari/312 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-ch) AppleWebKit/312.1 (KHTML, like Gecko) Safari/312 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/125.5.6 (KHTML, like Gecko) Safari/125.12 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/125.5.5 (KHTML, like Gecko) Safari/125.12 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/125.5.5 (KHTML, like Gecko) Safari/125.11 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-ch) AppleWebKit/125.5.5 (KHTML, like Gecko) Safari/125.12 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-ch) AppleWebKit/125.5.5 (KHTML, like Gecko) Safari/125.11 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/125.5.7 (KHTML, like Gecko) Safari/125.12 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/125.5.6 (KHTML, like Gecko) Safari/125.12 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/125.5.5 (KHTML, like Gecko) Safari/125.12 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/125.5.5 (KHTML, like Gecko) Safari/125.11 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.5.7 (KHTML, like Gecko) Safari/125.12 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.5.6 (KHTML, like Gecko) Safari/125.12 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.5.5 (KHTML, like Gecko) Safari/125.5.5 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.5.5 (KHTML, like Gecko) Safari/125.12 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.5.5 (KHTML, like Gecko) Safari/125.11 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.5.5 (KHTML, like Gecko) Safari/125 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/125.5.7 (KHTML, like Gecko) Safari/125.12 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/125.5.6 (KHTML, like Gecko) Safari/125.12_Adobe Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/125.5.6 (KHTML, like Gecko) Safari/125.12 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/125.5.5 (KHTML, like Gecko) Safari/125.12_Adobe Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/125.5.5 (KHTML, like Gecko) Safari/125.12 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/125.4 (KHTML, like Gecko) Safari/125.9 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/125.5 (KHTML, like Gecko) Safari/125.9 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/125.4 (KHTML, like Gecko) Safari/125.9 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en_CA) AppleWebKit/125.4 (KHTML, like Gecko) Safari/125.9 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/125.4 (KHTML, like Gecko) Safari/125.9 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-au) AppleWebKit/125.4 (KHTML, like Gecko) Safari/125.9 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.5 (KHTML, like Gecko) Safari/125.9 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.4 (KHTML, like Gecko) Safari/125.9 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.4 (KHTML, like Gecko) Safari/100 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/125.4 (KHTML, like Gecko) Safari/125.9 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; es-es) AppleWebKit/125.2 (KHTML, like Gecko) Safari/125.8 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/125.2 (KHTML, like Gecko) Safari/125.7 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-gb) AppleWebKit/125.2 (KHTML, like Gecko) Safari/125.8 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.2 (KHTML, like Gecko) Safari/85.8 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.2 (KHTML, like Gecko) Safari/125.8 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.2 (KHTML, like Gecko) Safari/125.7 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.2 (KHTML, like Gecko) Safari/125.8 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/125.2 (KHTML, like Gecko) Safari/125.8 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/125.2 (KHTML, like Gecko) Safari/125.7 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; it-it) AppleWebKit/124 (KHTML, like Gecko) Safari/125.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/124 (KHTML, like Gecko) Safari/125 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/124 (KHTML, like Gecko) Safari/125 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/124 (KHTML, like Gecko) Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/124 (KHTML, like Gecko) Safari/125.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/124 (KHTML, like Gecko) Safari/125 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/85.8.5 (KHTML, like Gecko) Safari/85.8.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/85.8.5 (KHTML, like Gecko) Safari/85.8.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/85.8.5 (KHTML, like Gecko) Safari/85.8.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/85.8.2 (KHTML, like Gecko) Safari/85.8 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-gb) AppleWebKit/85.8.5 (KHTML, like Gecko) Safari/85.8.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/85.8.5 (KHTML, like Gecko) Safari/85.8.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/85.8.2 (KHTML, like Gecko) Safari/85.8.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.8.5 (KHTML, like Gecko) Safari/85.8.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.8.5 (KHTML, like Gecko) Safari/85 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.8.2 (KHTML, like Gecko) Safari/85.8 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; sv-se) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.6 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.7 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092816 Mobile Safari 1.1.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fi-fi) AppleWebKit/420+ (KHTML, like Gecko) Safari/419.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/312.8.1 (KHTML, like Gecko) Safari/312.6 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/419.2 (KHTML, like Gecko) Safari/419.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/418.9.1 (KHTML, like Gecko) Safari/419.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-ch) AppleWebKit/85 (KHTML, like Gecko) Safari/85 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-CH) AppleWebKit/419.2 (KHTML, like Gecko) Safari/419.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; da-dk) AppleWebKit/522+ (KHTML, like Gecko) Safari/419.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_6; en-us) AppleWebKit/528.16 (KHTML, like Gecko) Mozilla/5.0 (Macintosh; U; Intel Mac OS X; it-IT) AppleWebKit/521.25 (KHTML, like Gecko) Safari/521.24 Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit/419.2.1 (KHTML, like Gecko) Safari/419.3 Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/522.11.1 (KHTML, like Gecko) Safari/419.3 Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/521.32.1 (KHTML, like Gecko) Safari/521.32.1 Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit (KHTML, like Gecko) Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; es-es) AppleWebKit/531.22.7 (KHTML, like Gecko) Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/528.16 (KHTML, like Gecko) Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; it-it) AppleWebKit/525.18 (KHTML, like Gecko) Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.6) Gecko/2009011912 Safari/525.27.1 Mozilla/5.0 (iPod; U; CPU iPhone OS 2_2_1 like Mac OS X; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Mobile/5H11a Mozilla/5.0 (iPod; U; CPU iPhone OS 2_2_1 like Mac OS X; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Mobile/5H11chrome.txt000644000000000000 13604111614255470 17631 0ustar00rootroot000000000000Scrappy-0.94112090/share/supportMozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.4 (KHTML, like Gecko) Chrome/6.0.481.0 Safari/534.4 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.33 Safari/534.3 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.464.0 Safari/534.3 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.464.0 Safari/534.3 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.463.0 Safari/534.3 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.462.0 Safari/534.3 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.462.0 Safari/534.3 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.461.0 Safari/534.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.461.0 Safari/534.3 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.461.0 Safari/534.3 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.460.0 Safari/534.3 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.460.0 Safari/534.3 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.460.0 Safari/534.3 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.459.0 Safari/534.3 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.458.1 Safari/534.3 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.458.1 Safari/534.3 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.458.1 Safari/534.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.458.1 Safari/534.3 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.458.1 Safari/534.3 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.458.0 Safari/534.3 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.458.0 Safari/534.3 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.457.0 Safari/534.3 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.456.0 Safari/534.3 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.2 (KHTML, like Gecko) Chrome/6.0.454.0 Safari/534.2 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.2 (KHTML, like Gecko) Chrome/6.0.453.1 Safari/534.2 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-US) AppleWebKit/534.2 (KHTML, like Gecko) Chrome/6.0.453.1 Safari/534.2 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/534.2 (KHTML, like Gecko) Chrome/6.0.453.1 Safari/534.2 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.2 (KHTML, like Gecko) Chrome/6.0.451.0 Safari/534.2 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.1 SUSE/6.0.428.0 (KHTML, like Gecko) Chrome/6.0.428.0 Safari/534.1 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.428.0 Safari/534.1 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.428.0 Safari/534.1 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-US) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.428.0 Safari/534.1 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.427.0 Safari/534.1 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.422.0 Safari/534.1 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.417.0 Safari/534.1 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.416.0 Safari/534.1 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.414.0 Safari/534.1 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.9 (KHTML, like Gecko) Chrome/6.0.400.0 Safari/533.9 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.8 (KHTML, like Gecko) Chrome/6.0.397.0 Safari/533.8 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/6.0 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_0; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4 Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.86 Safari/533.4 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.86 Safari/533.4 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_0; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.86 Safari/533.4 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.70 Safari/533.4 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.370.0 Safari/533.4 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.368.0 Safari/533.4 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.366.2 Safari/533.4 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.366.0 Safari/533.4 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.366.0 Safari/533.4 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.363.0 Safari/533.3 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.358.0 Safari/533.3 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.358.0 Safari/533.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.357.0 Safari/533.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.356.0 Safari/533.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.355.0 Safari/533.3 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.354.0 Safari/533.3 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.354.0 Safari/533.3 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.353.0 Safari/533.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.353.0 Safari/533.3 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.343.0 Safari/533.2 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.343.0 Safari/533.2 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_7_0; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.7 Safari/533.2 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.7 Safari/533.2 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.5 Safari/533.2 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.3 Safari/533.2 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.3 Safari/533.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.2 Safari/533.2 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.1 Safari/533.2 Mozilla/5.0 (X11; U; Linux i586; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.1 Safari/533.2 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/533.1 (KHTML, like Gecko) Chrome/5.0.335.0 Safari/533.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/533.16 (KHTML, like Gecko) Chrome/5.0.335.0 Safari/533.16 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.9 (KHTML, like Gecko) Chrome/5.0.310.0 Safari/532.9 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.9 (KHTML, like Gecko) Chrome/5.0.309.0 Safari/532.9 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.9 (KHTML, like Gecko) Chrome/5.0.308.0 Safari/532.9 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_0; en-US) AppleWebKit/532.9 (KHTML, like Gecko) Chrome/5.0.307.11 Safari/532.9 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.9 (KHTML, like Gecko) Chrome/5.0.307.1 Safari/532.9 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1025 Safari/532.5 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.8 (KHTML, like Gecko) Chrome/4.0.302.2 Safari/532.8 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.8 (KHTML, like Gecko) Chrome/4.0.288.1 Safari/532.8 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.8 (KHTML, like Gecko) Chrome/4.0.277.0 Safari/532.8 Mozilla/5.0 (X11; U; Slackware Linux x86_64; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.30 Safari/532.5 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.0 Safari/532.5 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.246.0 Safari/532.5 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.4 (KHTML, like Gecko) Chrome/4.0.237.0 Safari/532.4 Debian Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.3 (KHTML, like Gecko) Chrome/4.0.227.0 Safari/532.3 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.3 (KHTML, like Gecko) Chrome/4.0.224.2 Safari/532.3 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.3 (KHTML, like Gecko) Chrome/4.0.223.5 Safari/532.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.223.4 Safari/532.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.223.3 Safari/532.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE) Chrome/4.0.223.3 Safari/532.2 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.223.2 Safari/532.2 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.223.2 Safari/532.2 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.223.2 Safari/532.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.223.2 Safari/532.2 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.223.1 Safari/532.2 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.223.1 Safari/532.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.223.1 Safari/532.2 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.223.0 Safari/532.2 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.8 Safari/532.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.7 Safari/532.2 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.6 Safari/532.2 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.6 Safari/532.2 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.6 Safari/532.2 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.5 Safari/532.2 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.5 Safari/532.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.5 Safari/532.2 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.5 Safari/532.2 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.4 Safari/532.2 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.4 Safari/532.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.4 Safari/532.2 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.4 Safari/532.2 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.3 Safari/532.2 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.3 Safari/532.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.3 Safari/532.2 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.2 Safari/532.2 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.12 Safari/532.2 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.12 Safari/532.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.12 Safari/532.2 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.1 Safari/532.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.0 Safari/532.2 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.8 Safari/532.2 Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.8 Safari/532.2 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.8 Safari/532.2 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.8 Safari/532.2 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.7 Safari/532.2 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.6 Safari/532.2 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.6 Safari/532.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.6 Safari/532.2 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.3 Safari/532.2 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.0 Safari/532.2 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.220.1 Safari/532.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.6 Safari/532.1 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.5 Safari/532.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.5 Safari/532.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.4 Safari/532.1 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.3 Safari/532.1 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.3 Safari/532.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.3 Safari/532.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.0 Safari/532.1 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.1 Safari/532.1 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.1 Safari/532.1 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.1 Safari/532.1 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.1 Safari/532.1 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.1 Safari/532.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.1 Safari/532.1 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.0 Safari/532.1 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.0 Safari/532.1 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.0 Safari/532.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.213.0 Safari/532.1 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_0; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.212.1 Safari/532.1 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.212.1 Safari/532.1 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.212.0 Safari/532.0 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.212.0 Safari/532.1 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.212.0 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.212.0 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.212.0 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.212.0 Safari/532.0 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.212.0 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.7 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.7 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.4 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.4 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.4 Safari/532.0 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.2 Safari/532.0 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.2 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.2 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.2 Safari/532.0 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.2 Safari/532.0 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.2 Safari/532.0 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.0 Safari/532.0 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.0 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.0 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.211.0 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.210.0 Safari/532.0 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.210.0 Safari/532.0 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.209.0 Safari/532.0 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.209.0 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.209.0 Safari/532.0 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.209.0 Safari/532.0 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.208.0 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.208.0 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.208.0 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.208.0 Safari/532.0 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.208.0 Safari/532.0 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.207.0 Safari/532.0 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.207.0 Safari/532.0 Mozilla/5.0 (X11; U; FreeBSD i386; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.207.0 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.207.0 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.207.0 Safari/532.0 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.207.0 Safari/532.0 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.207.0 Safari/532.0 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.1 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.1 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.1 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.1 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.1 Safari/532.0 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.1 Safari/532.0 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.0 Safari/532.0 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.0 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.0 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.206.0 Safari/532.0 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.205.0 Safari/532.0 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.204.0 Safari/532.0 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.204.0 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.204.0 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.204.0 Safari/532.0 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.204.0 Safari/532.0 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.4 Safari/532.0 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.2 Safari/532.0 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.2 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.2 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.2 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.2 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.2 Safari/532.0 Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.0 Safari/532.0 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.0 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.0 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.0 Safari/532.0 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.0 Safari/532.0 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.0 Safari/532.0 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.2 Safari/532.0 Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.2 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.0 (x86_64); de-DE) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.2 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.2; de-DE) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.2 Safari/532.0 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.0 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.0 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.0 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.0 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/4.0.202.0 Safari/525.13. Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.0 Safari/532.0 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.0 Safari/532.0 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.0 Safari/532.0 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.0 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.201.1 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.201.1 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.201.1 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.201.0 Safari/532.0 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.198.1 Safari/532.0 Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.198.1 Safari/532.0 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.198.0 Safari/532.0 Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.198.0 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.198.0 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.198.0 Safari/532.0 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.198 Safari/532.0 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.198 Safari/532.0 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.197.11 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.197.11 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.197.11 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.197.11 Safari/532.0 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.197.0 Safari/532.0 Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.197.0 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.197.0 Safari/532.0 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.197 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.196.2 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.196.2 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.196.2 Safari/532.0 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.196.0 Safari/532.0 Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.196.0 Safari/532.0 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.196 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.6 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.6 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.6 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.6 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.6 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.4 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.33 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.3 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.3 Safari/532.0 Mozilla/6.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.27 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.27 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.27 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.27 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML,like Gecko) Chrome/3.0.195.27 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.27 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.24 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.21 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.21 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.21 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.21 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.20 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.20 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.17 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.17 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.10 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.10 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.10 Safari/532.0 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.1 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.1 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.1 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.1 Safari/532.0 Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/531.4 (KHTML, like Gecko) Chrome/3.0.194.0 Safari/531.4 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/531.4 (KHTML, like Gecko) Chrome/3.0.194.0 Safari/531.4 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/531.3 (KHTML, like Gecko) Chrome/3.0.193.2 Safari/531.3 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/531.3 (KHTML, like Gecko) Chrome/3.0.193.2 Safari/531.3 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/531.3 (KHTML, like Gecko) Chrome/3.0.193.2 Safari/531.3 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/531.3 (KHTML, like Gecko) Chrome/3.0.193.0 Safari/531.3 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-US) AppleWebKit/531.3 (KHTML, like Gecko) Chrome/3.0.192 Safari/531.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/531.2 (KHTML, like Gecko) Chrome/3.0.191.3 Safari/531.2 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/531.0 (KHTML, like Gecko) Chrome/3.0.191.0 Safari/531.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/531.0 (KHTML, like Gecko) Chrome/3.0.191.0 Safari/531.0 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/531.0 (KHTML, like Gecko) Chrome/2.0.182.0 Safari/532.0 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/531.0 (KHTML, like Gecko) Chrome/2.0.182.0 Safari/531.0 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/530.0 (KHTML, like Gecko) Chrome/2.0.182.0 Safari/531.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.8 (KHTML, like Gecko) Chrome/2.0.178.0 Safari/530.8 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.8 (KHTML, like Gecko) Chrome/2.0.177.1 Safari/530.8 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.8 (KHTML, like Gecko) Chrome/2.0.177.0 Safari/530.8 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.7 (KHTML, like Gecko) Chrome/2.0.177.0 Safari/530.7 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.7 (KHTML, like Gecko) Chrome/2.0.176.0 Safari/530.7 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.7 (KHTML, like Gecko) Chrome/2.0.176.0 Safari/530.7 Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US) AppleWebKit/530.7 (KHTML, like Gecko) Chrome/2.0.175.0 Safari/530.7 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.7 (KHTML, like Gecko) Chrome/2.0.175.0 Safari/530.7 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.6 (KHTML, like Gecko) Chrome/2.0.175.0 Safari/530.6 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/530.6 (KHTML, like Gecko) Chrome/2.0.174.0 Safari/530.6 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.6 (KHTML, like Gecko) Chrome/2.0.174.0 Safari/530.6 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.6 (KHTML, like Gecko) Chrome/2.0.174.0 Safari/530.6 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.174.0 Safari/530.5 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.173.1 Safari/530.5 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.173.1 Safari/530.5 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.173.0 Safari/530.5 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.8 Safari/530.5 Mozilla/6.0 (Windows; U; Windows NT 6.0; en-US) Gecko/2009032609 Chrome/2.0.172.6 Safari/530.7 Mozilla/6.0 (Windows; U; Windows NT 6.0; en-US) Gecko/2009032609 (KHTML, like Gecko) Chrome/2.0.172.6 Safari/530.7 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.6 Safari/530.5 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.43 Safari/530.5 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.43 Safari/530.5 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.43 Safari/530.5 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.43 Safari/530.5 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.42 Safari/530.5 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.40 Safari/530.5 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.40 Safari/530.5 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.39 Safari/530.5 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.39 Safari/530.5 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.23 Safari/530.5 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.2 Safari/530.5 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.2 Safari/530.5 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/530.4 (KHTML, like Gecko) Chrome/2.0.172.0 Safari/530.4 Mozilla/5.0 (Windows; U; Windows NT 5.2; eu) AppleWebKit/530.4 (KHTML, like Gecko) Chrome/2.0.172.0 Safari/530.4 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/530.4 (KHTML, like Gecko) Chrome/2.0.172.0 Safari/530.4 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.0 Safari/530.5 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.4 (KHTML, like Gecko) Chrome/2.0.171.0 Safari/530.4 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.1 (KHTML, like Gecko) Chrome/2.0.170.0 Safari/530.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.1 (KHTML, like Gecko) Chrome/2.0.169.0 Safari/530.1 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.1 (KHTML, like Gecko) Chrome/2.0.168.0 Safari/530.1 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.1 (KHTML, like Gecko) Chrome/2.0.164.0 Safari/530.1 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.0 (KHTML, like Gecko) Chrome/2.0.162.0 Safari/530.0 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.0 (KHTML, like Gecko) Chrome/2.0.160.0 Safari/530.0 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/528.10 (KHTML, like Gecko) Chrome/2.0.157.2 Safari/528.10 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528.10 (KHTML, like Gecko) Chrome/2.0.157.2 Safari/528.10 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/528.11 (KHTML, like Gecko) Chrome/2.0.157.0 Safari/528.11 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528.9 (KHTML, like Gecko) Chrome/2.0.157.0 Safari/528.9 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528.11 (KHTML, like Gecko) Chrome/2.0.157.0 Safari/528.11 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528.10 (KHTML, like Gecko) Chrome/2.0.157.0 Safari/528.10 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/528.8 (KHTML, like Gecko) Chrome/2.0.156.1 Safari/528.8 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/528.8 (KHTML, like Gecko) Chrome/2.0.156.1 Safari/528.8 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528.8 (KHTML, like Gecko) Chrome/2.0.156.1 Safari/528.8 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528.8 (KHTML, like Gecko) Chrome/2.0.156.0 Version/3.2.1 Safari/528.8 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528.8 (KHTML, like Gecko) Chrome/2.0.156.0 Safari/528.8 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/528.8 (KHTML, like Gecko) Chrome/1.0.156.0 Safari/528.8 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.59 Safari/525.19 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.59 Safari/525.19 Mozilla/4.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.59 Safari/525.19 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.55 Safari/525.19 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.53 Safari/525.19 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.53 Safari/525.19 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.53 Safari/525.19 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.53 Safari/525.19 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.53 Safari/525.19 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.50 Safari/525.19 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.50 Safari/525.19 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.48 Safari/525.19 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.46 Safari/525.19 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.43 Safari/525.19 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.43 Safari/525.19 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.43 Safari/525.19 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.43 Safari/525.19 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.42 Safari/525.19 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.39 Safari/525.19 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.4.154.31 Safari/525.19 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.4.154.18 Safari/525.19 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528.4 (KHTML, like Gecko) Chrome/0.3.155.0 Safari/528.4 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.3.155.0 Safari/525.19 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.3.154.9 Safari/525.19 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.3.154.6 Safari/525.19 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.153.1 Safari/525.19 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.153.0 Safari/525.19 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.153.0 Safari/525.19 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.152.0 Safari/525.19 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.152.0 Safari/525.19 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.151.0 Safari/525.19 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.151.0 Safari/525.19 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.151.0 Safari/525.19 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.6 Safari/525.13 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.6 Safari/525.13 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.30 Safari/525.13 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.30 Safari/525.13 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.29 Safari/525.13 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.29 Safari/525.13 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.29 Safari/525.13 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13 Mozilla/5.0 (Windows; U; Windows NT 6.0; de) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13(KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13 Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13 Mozilla/5.0 (Linux; U; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13 Mozilla/5.0 (Macintosh; U; Mac OS X 10_6_1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/ Safari/530.5 Mozilla/5.0 (Macintosh; U; Mac OS X 10_5_7; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/ Safari/530.5 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-US) AppleWebKit/530.9 (KHTML, like Gecko) Chrome/ Safari/530.9 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-US) AppleWebKit/530.6 (KHTML, like Gecko) Chrome/ Safari/530.6 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/ Safari/530.5Plugin.pm.bak000644000000000000 745711614255470 17464 0ustar00rootroot000000000000Scrappy-0.94112090/lib/Scrappypackage Scrappy::Plugin; BEGIN { $Scrappy::Plugin::VERSION = '0.94112090'; } # load OO System use Moose; # load other libraries use File::Find::Rule; # a hash list of installed plugins has registry => ( is => 'ro', isa => 'HashRef', default => sub { # map plugins my $plugins = {}; my @plugins = @{shift->plugins}; foreach my $plugin (@plugins) { $plugins->{$plugin} = $plugin; $plugins->{lc($plugin)} = $plugin; } return $plugins; } ); # return a list of installed plugins has plugins => ( is => 'ro', isa => 'Any', default => sub { my @plugins = (); # fix for bug found by Patrick Woo #Can't stat /etc/perl/Scrappy/Plugin: No such file or directory #at /usr/share/perl5/File/Find/Rule.pm line 595 #Can't stat /usr/local/lib/perl/5.10.1/Scrappy/Plugin: No such file or directory #at /usr/share/perl5/File/Find/Rule.pm line 595 #Can't stat /usr/lib/perl5/Scrappy/Plugin: No such file or directory #at /usr/share/perl5/File/Find/Rule.pm line 595 #Can't stat /usr/share/perl5/Scrappy/Plugin: No such file or directory #at /usr/share/perl5/File/Find/Rule.pm line 595 #Can't stat /usr/lib/perl/5.10/Scrappy/Plugin: No such file or directory #at /usr/share/perl5/File/Find/Rule.pm line 595 #Can't stat /usr/share/perl/5.10/Scrappy/Plugin: No such file or directory #at /usr/share/perl5/File/Find/Rule.pm line 595 #Can't stat /usr/local/lib/site_perl/Scrappy/Plugin: No such file or directory #at /usr/share/perl5/File/Find/Rule.pm line 595 #Can't stat ./Scrappy/Plugin: No such file or directory #at /usr/share/perl5/File/Find/Rule.pm line 595 # ... (IMO) due to analyzing @INC assuming each path has Scrappy in it my $library; foreach my $dir (@INC) { if (-d "$dir/Scrappy/Plugin") { $library = "$dir/Scrappy/Plugin"; last; } } return [] unless $library; my @files = File::Find::Rule->file()->name('*.pm') ->in($library); my %plugins = map { $_ => 1 } map { s/.*(Scrappy[\\\/]Plugin[\\\/].*\.pm)/$1/; $_ } @files; #uniquenes for my $plugin (keys %plugins) { my ($plug) = $plugin =~ /(Scrappy\/Plugin\/.*)\.pm/; if ($plug) { $plug =~ s/\//::/g; push @plugins, $plug; } } return [@plugins]; } ); sub load_plugin { my $self = shift; my @plugins = @_; my @returns = (); foreach my $plugin (@plugins) { unless ($plugin =~ /^Scrappy::Plugin::/) { # make fully-quaified plugin name $plugin = ucfirst $plugin; $plugin = join("::", map(ucfirst, split '-', $plugin)) if $plugin =~ /\-/; $plugin = join("", map(ucfirst, split '_', $plugin)) if $plugin =~ /\_/; $plugin = "Scrappy::Plugin::$plugin"; } # check for a direct match if ($self->registry->{$plugin}) { with $self->registry->{$plugin}; push @returns, $self->registry->{$plugin}; } # last resort seek elsif ($self->registry->{lc($plugin)}) { with $self->registry->{lc($plugin)}; push @returns, $self->registry->{lc($plugin)}; } else { die( "Error loading the plugin $plugin, " . "please check that it has been installed"); } } return @returns; } 1; Logger.pm.bak000644000000000000 1536311614255470 17460 0ustar00rootroot000000000000Scrappy-0.94112090/lib/Scrappy# ABSTRACT: Scrappy Scraper Event Logging # Dist::Zilla: +PodWeaver package Scrappy::Logger; BEGIN { $Scrappy::Logger::VERSION = '0.94112090'; } # load OO System use Moose; # load other libraries use Carp; use DateTime; use DateTime::Format::SQLite; use YAML::Syck; $YAML::Syck::ImplicitTyping = 1; has 'auto_save' => (is => 'rw', isa => 'Bool', default => 1); has file => (is => 'rw', isa => 'Str'); has verbose => (is => 'rw', isa => 'Int', default => 0); sub load { my $self = shift; my $file = shift; if ($file) { $self->{file} = $file; # load event-log file $self->{stash} = LoadFile($file) or croak("Log file $file does not exist or is not read/writable"); } return $self->{stash}; } sub timestamp { my $self = shift; my $date = shift; if ($date) { # $date =~ s/\_/ /g; return DateTime::Format::SQLite->parse_datetime($date) ; # datetime object } else { $date = DateTime::Format::SQLite->format_datetime(DateTime->now); # string # $date =~ s/ /_/g; return $date; } } sub info { return shift->event('info', @_); } sub warn { return shift->event('warn', @_); } sub error { return shift->event('error', @_); } sub event { my $self = shift; my $type = shift; my $note = shift; croak("Can't record an event without an event-type and notation") unless $type && $note; $self->{stash} = {} unless defined $self->{stash}; $self->{stash}->{$type} = [] unless defined $self->{stash}->{$type}; my $frame = $type eq 'info' || $type eq 'error' || $type eq 'warn' ? 1 : 0; my @trace = caller($frame); my $entry = scalar @{$self->{stash}->{$type}}; my $time = $self->timestamp; my $data = {}; $data = { '// package' => $trace[0], '// filename' => $trace[1], '// line' => $trace[2], '// occurred' => $time, '// notation' => $note, } if $self->verbose; $self->{stash}->{$type}->[$entry] = {eventlog => "[$time] [$type] $note"} unless defined $self->{stash}->{$type}->[$entry]; $self->{stash}->{$type}->[$entry]->{metadata} = $data if scalar keys %{$data}; if (@_ && $self->verbose) { my $stash = @_ > 1 ? {@_} : $_[0]; if ($stash) { if (ref $stash eq 'HASH') { for (keys %{$stash}) { $self->{stash}->{$type}->[$entry]->{metadata}->{$_} = $stash->{$_}; } } } } $self->write; return $self->{stash}->{$type}->[$entry]; } sub write { my $self = shift; my $file = shift || $self->{file}; $self->{file} = $file; if ($file) { # write event-log file DumpFile($file, $self->{stash}) or croak("event-log file $file does not exist or is not read/writable"); } return $self->{stash}; } 1; __END__ =pod =head1 NAME Scrappy::Logger - Scrappy Scraper Event Logging =head1 VERSION version 0.94112090 =head1 SYNOPSIS #!/usr/bin/perl use Scrappy::Logger; my $logger = Scrappy::Logger->new; -f 'scraper.log' ? $logger->load('scraper.log'); $logger->write('scraper.log'); $logger->stash('foo' => 'bar'); $logger->stash('abc' => [('a'..'z')]); =head1 DESCRIPTION Scrappy::Logger provides YAML-Based event-log handling for recording events encountered using the L framework. =head2 ATTRIBUTES The following is a list of object attributes available with every Scrappy::Logger instance. =head3 auto_save The auto_save attribute is a boolean that determines whether event data is automatically saved to the log file on update. my $logger = Scrappy::Logger->new; $logger->load('scraper.log'); # turn auto-saving off $logger->auto_save(0); $logger->event('...', 'yada yada yada'); $logger->write; # explicit write =head3 file The file attribute gets/sets the filename of the current event-log file. my $logger = Scrappy::Logger->new; $logger->load('scraper.log'); $logger->write('scraper.log.bak'); $logger->file('scraper.log'); =head3 verbose The verbose attribute is a boolean that instructs the logger to write very detailed logs. my $logger = Scrappy::Logger->new; $logger->verbose(1); =head1 METHODS =head2 load The load method is used to read-in an event-log file, it returns its data in the structure it was saved-in. my $logger = Scrappy::Logger->new; my $data = $logger->load('scraper.log'); =head2 timestamp The timestamp method returns the current date/timestamp in string form. When supplied a properly formatted date/timestamp this method returns a corresponding L object. my $logger = Scrappy::Logger->new; my $date = $logger->timestamp; my $dt = $logger->timestamp($date); =head2 info The info method is used to capture informational events and returns the event data. my $logger = Scrappy::Logger->new; my %data = (foo => 'bar', baz => 'xyz'); my $event = $logger->info('This is an informational message', %data); $logger->info('This is an informational message'); =head2 warn The warn method is used to capture warning events and returns the event data. my $logger = Scrappy::Logger->new; my %data = (foo => 'bar', baz => 'xyz'); my $event = $logger->warn('This is a warning message', %data); $logger->info('This is an warning message'); =head2 error The error method is used to capture error events and returns the event data. my $logger = Scrappy::Logger->new; my %data = (foo => 'bar', baz => 'xyz'); my $event = $logger->error('This is a n error message', %data); $logger->info('This is an error message'); =head2 event The event method is used to capture custom events and returns the event data. my $logger = Scrappy::Logger->new; my %data = (foo => 'bar', baz => 'xyz'); my $event = $logger->event('myapp', 'This is a user-defined message', %data); $logger->event('myapp', 'This is a user-defined message'); =head2 write The write method is used to write-out an event-log file. my $logger = Scrappy::Logger->new; $logger->info('This is very cool', 'foo' => 'bar'); $logger->warn('Somethin aint right here'); $logger->error('It broke, I cant believe it broke'); $logger->write('scraper.log'); =head1 AUTHOR Al Newkirk =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2010 by awncorp. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Action.pm.bak000644000000000000 626011614255470 17432 0ustar00rootroot000000000000Scrappy-0.94112090/lib/Scrappypackage Scrappy::Action; BEGIN { $Scrappy::Action::VERSION = '0.94112090'; } use Moose; use File::Find::Rule; # return a list of installed actions #has actions => ( # is => 'ro', # isa => 'ArrayRef', # default => sub { # [] # } #); # a hash list of installed actions has registry => ( is => 'ro', isa => 'HashRef', default => sub { my $actions = {}; foreach my $action (@{shift->actions}) { $actions->{$action} = $action; $actions->{lc($action)} = $action; } return $actions; } ); sub actions { my @actions = (); my @files = File::Find::Rule->file()->name('*.pm') ->in(map {"$_/Scrappy/Action"} @INC); my %actions = map { $_ => 1 } map { s/.*(Scrappy[\\\/]Action[\\\/].*\.pm)/$1/; $_ } @files; #uniquenes for my $action (keys %actions) { my ($plug) = $action =~ /(Scrappy[\\\/]Action[\\\/].*)\.pm/; if ($plug) { $plug =~ s/\//::/g; push @actions, $plug; } } return [@actions]; } sub load_action { my $self = shift; my $action = shift; unless ($action =~ /^Scrappy::Action::/) { # make fully-quaified action name $action = ucfirst $action; $action = join("::", map(ucfirst, split '-', $action)) if $action =~ /\-/; $action = join("", map(ucfirst, split '_', $action)) if $action =~ /\_/; $action = "Scrappy::Action::$action"; } # check for a direct match if ($self->registry->{$action}) { return $self->registry->{$action}; } # last resort seek elsif ($self->registry->{lc($action)}) { return $self->registry->{lc($action)}; } return 0; } # execute an action from the cli sub execute { my ($class, $action_class, $action, @options) = @_; my $self = ref $class ? $class : $class->new; # show help on syntax error if (!$action_class || $action_class eq 'help') { with 'Scrappy::Action::Help'; print $self->menu; print "\n"; exit; } else { if ($action) { if ( $action eq 'meta' || $action eq 'registry' || $action eq 'actions' || $action eq 'load_action' || $action eq 'execute') { with 'Scrappy::Action::Help'; print $self->menu; print "\n"; exit; } } } # locate the action if installed my $requested_action = $self->load_action($action_class); if ($requested_action) { # load the desired action class with $requested_action; # is actoin available unless ($action) { print $self->help($requested_action); print "\n"; exit; } # run the requested action print $self->meta->has_method($action) ? $self->$action(@options) : $self->help($requested_action); print "\n"; } else { # ... or display the help menu with 'Scrappy::Action::Help'; print $self->menu; print "\n"; } } 1; 00_test_function_back.t000644000000000000 62511614255470 17506 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use Scrappy; use Test::More $ENV{TEST_LIVE} ? (tests => 5) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); my $s = Scrappy->new; ok $s->get('http://search.cpan.org/'); ok $s->page_loaded && $s->page_status == 200; ok $s->get('http://search.cpan.org/recent'); ok $s->page_loaded && $s->page_status == 200; ok 'http://search.cpan.org/' eq $s->back; 00_test_function_form.t000644000000000000 26111614255470 17545 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 1) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); use_ok 'Scrappy'; 00_test_function_post.t000644000000000000 26111614255470 17567 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 1) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); use_ok 'Scrappy'; firefox.txt000644000000000000 46721311614255470 20026 0ustar00rootroot000000000000Scrappy-0.94112090/share/supportMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081202 Firefox (Debian-2.0.0.19-0etch1) Mozilla/5.0 (X11; Linux i686; rv:2.0b3pre) Gecko/20100731 Firefox/4.0b3pre Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.3) Gecko/20100401 Firefox/4.0 (.NET CLR 3.5.30729) Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.2) Gecko/20121223 Ubuntu/9.25 (jaunty) Firefox/3.8 Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.2) Gecko/2008092313 Ubuntu/9.25 (jaunty) Firefox/3.8 Mozilla/5.0 (X11; U; Linux i686; it-IT; rv:1.9.0.2) Gecko/2008092313 Ubuntu/9.25 (jaunty) Firefox/3.8 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100401 Mozilla/5.0 (X11; U; Linux i686; it-IT; rv:1.9.0.2) Gecko/2008092313 Ubuntu/9.25 (jaunty) Firefox/3.8 Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.3a5pre) Gecko/20100526 Firefox/3.7a5pre Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2b5) Gecko/20091204 Firefox/3.6b5 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2b5) Gecko/20091204 Firefox/3.6b5 Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.2b5) Gecko/20091204 Firefox/3.6b5 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2) Gecko/20091218 Firefox 3.6b5 Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.2b4) Gecko/20091124 Firefox/3.6b4 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2b4) Gecko/20091124 Firefox/3.6b4 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2b1) Gecko/20091014 Firefox/3.6b1 GTB5 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2a1pre) Gecko/20090428 Firefox/3.6a1pre Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2a1pre) Gecko/20090405 Firefox/3.6a1pre Mozilla/5.0 (X11; U; Linux i686; ru-RU; rv:1.9.2a1pre) Gecko/20090405 Ubuntu/9.04 (jaunty) Firefox/3.6a1pre Mozilla/5.0 (Windows; Windows NT 5.1; es-ES; rv:1.9.2a1pre) Gecko/20090402 Firefox/3.6a1pre Mozilla/5.0 (Windows; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090402 Firefox/3.6a1pre Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2a1pre) Gecko/20090402 Firefox/3.6a1pre (.NET CLR 3.5.30729) Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.8) Gecko/20100723 SUSE/3.6.8-0.1.1 Firefox/3.6.8 Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.9.2.8) Gecko/20100722 Ubuntu/10.04 (lucid) Firefox/3.6.8 Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.2.8) Gecko/20100723 Ubuntu/10.04 (lucid) Firefox/3.6.8 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.8) Gecko/20100727 Firefox/3.6.8 Mozilla/5.0 (X11; U; FreeBSD i386; de-CH; rv:1.9.2.8) Gecko/20100729 Firefox/3.6.8 Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 Mozilla/5.0 (Windows; U; Windows NT 6.1; pt-BR; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 GTB7.1 Mozilla/5.0 (Windows; U; Windows NT 6.1; he; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 ( .NET CLR 3.5.30729; .NET4.0C) Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.8) Gecko/20100722 Firefox 3.6.8 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.8) Gecko/20100722 BTRS86393 Firefox/3.6.8 ( .NET CLR 3.5.30729; .NET4.0C) Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-TW; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 Mozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 ( .NET CLR 3.5.30729; .NET4.0E) Mozilla/5.0 (Windows; U; Windows NT 5.1; ro; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 ( .NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 (.NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 ( .NET CLR 3.0.4506.2152; .NET4.0C) Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100721 Firefox/3.6.8 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en; rv:1.9.2.8) Gecko/20100805 Firefox/3.6.8 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.7) Gecko/20100723 Fedora/3.6.7-1.fc13 Firefox/3.6.7 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.7) Gecko/20100726 CentOS/3.6-3.el5.centos Firefox/3.6.7 Mozilla/5.0 (Windows; U; Windows NT 6.1; hu; rv:1.9.2.7) Gecko/20100713 Firefox/3.6.7 GTB7.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-PT; rv:1.9.2.7) Gecko/20100713 Firefox/3.6.7 (.NET CLR 3.5.30729) Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.6) Gecko/20100628 Ubuntu/10.04 (lucid) Firefox/3.6.6 GTB7.1 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.6) Gecko/20100628 Ubuntu/10.04 (lucid) Firefox/3.6.6 GTB7.0 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.6) Gecko/20100628 Ubuntu/10.04 (lucid) Firefox/3.6.6 (.NET CLR 3.5.30729) Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.6) Gecko/20100628 Ubuntu/10.04 (lucid) Firefox/3.6.6 Mozilla/5.0 (Windows; U; Windows NT 6.1; pt-PT; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 Mozilla/5.0 (Windows; U; Windows NT 6.1; it; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 ( .NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; zh-CN; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 GTB7.1 Mozilla/5.0 (Windows; U; Windows NT 6.0; nl; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 ( .NET CLR 3.5.30729; .NET4.0E) Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.4) Gecko/20100614 Ubuntu/10.04 (lucid) Firefox/3.6.4 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.4) Gecko/20100625 Gentoo Firefox/3.6.4 Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.4) Gecko/20100513 Firefox/3.6.4 Mozilla/5.0 (Windows; U; Windows NT 6.1; ja; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4 GTB7.1 Mozilla/5.0 (Windows; U; Windows NT 6.1; cs; rv:1.9.2.4) Gecko/20100513 Firefox/3.6.4 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; zh-CN; rv:1.9.2.4) Gecko/20100513 Firefox/3.6.4 Mozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.9.2.4) Gecko/20100513 Firefox/3.6.4 ( .NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.2.4) Gecko/20100523 Firefox/3.6.4 ( .NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.4) Gecko/20100527 Firefox/3.6.4 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.4) Gecko/20100527 Firefox/3.6.4 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.4) Gecko/20100523 Firefox/3.6.4 ( .NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.4) Gecko/20100513 Firefox/3.6.4 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.2; en-CA; rv:1.9.2.4) Gecko/20100523 Firefox/3.6.4 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4 GTB7.0 ( .NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.4) Gecko/20100513 Firefox/3.6.4 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.4) Gecko/20100503 Firefox/3.6.4 ( .NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.1; nb-NO; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.9.2.4) Gecko/20100523 Firefox/3.6.4 Mozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4 GTB7.0 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3pre) Gecko/20100405 Firefox/3.6.3plugin1 ( .NET CLR 3.5.30729) Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.2.3) Gecko/20100403 Fedora/3.6.3-4.fc13 Firefox/3.6.3 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.3) Gecko/20100403 Firefox/3.6.3 Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.2.3) Gecko/20100401 SUSE/3.6.3-1.1 Firefox/3.6.3 Mozilla/5.0 (X11; U; Linux i686; ko-KR; rv:1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.6.3 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.3) Gecko/20100404 Ubuntu/10.04 (lucid) Firefox/3.6.3 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.6.3 Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 Mozilla/5.0 (Windows; U; Windows NT 6.1; it; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 Mozilla/5.0 (Windows; U; Windows NT 6.1; hu; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTB7.1 Mozilla/5.0 (Windows; U; Windows NT 6.1; es-ES; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTB7.1 Mozilla/5.0 (Windows; U; Windows NT 6.1; es-ES; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTB7.0 ( .NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.1; es-ES; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.1; cs; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.1; ca; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; nl; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729) Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2 Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2 GTB7.0 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2 GTB6 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2 ( .NET CLR 3.0.04506.30) Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.7; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.1) Gecko/20100122 firefox/3.6.1 Mozilla/5.0(Windows; U; Windows NT 5.2; rv:1.9.2) Gecko/20100101 Firefox/3.6 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2) Gecko/20100222 Ubuntu/10.04 (lucid) Firefox/3.6 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2) Gecko/20100130 Gentoo Firefox/3.6 Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.2) Gecko/20100308 Ubuntu/10.04 (lucid) Firefox/3.6 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.2pre) Gecko/20100312 Ubuntu/9.04 (jaunty) Firefox/3.6 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2) Gecko/20100128 Gentoo Firefox/3.6 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2) Gecko/20100115 Ubuntu/10.04 (lucid) Firefox/3.6 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 FirePHP/0.4 Mozilla/5.0 (Windows; U; Windows NT 6.1; ru-RU; rv:1.9.2) Gecko/20100105 MRA 5.6 (build 03278) Firefox/3.6 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.1; lt; rv:1.9.2) Gecko/20100115 Firefox/3.6 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.3a3pre) Gecko/20100306 Firefox3.6 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.8) Gecko/20100806 Firefox/3.6 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.3) Gecko/20100401 Firefox/3.6;MEGAUPLOAD 1.0 Mozilla/5.0 (Windows; U; Windows NT 6.1; ar; rv:1.9.2) Gecko/20100115 Firefox/3.6 Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2) Gecko/20100115 Firefox/3.6 Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2) Gecko/20100105 Firefox/3.6 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.2) Gecko/20100115 Firefox/3.6 ( .NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; es-ES; rv:1.9.2) Gecko/20100115 Firefox/3.6 ( .NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.2) Gecko/20100101 Firefox/3.6 Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.2) Gecko/20091111 Firefox/3.6 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b5pre) Gecko/20090517 Firefox/3.5b4pre (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b4pre) Gecko/20090409 Firefox/3.5b4pre Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b4pre) Gecko/20090401 Firefox/3.5b4pre Mozilla/5.0 (X11; U; Linux i686; nl-NL; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4 GTB5 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; fr; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4 GTB5 Mozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.1.9) Gecko/20100402 Ubuntu/9.10 (karmic) Firefox/3.5.9 (.NET CLR 3.5.30729) Mozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.1.9) Gecko/20100330 Fedora/3.5.9-2.fc12 Firefox/3.5.9 Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.1.9) Gecko/20100317 SUSE/3.5.9-0.1.1 Firefox/3.5.9 GTB7.0 Mozilla/5.0 (X11; U; Linux x86_64; es-CL; rv:1.9.1.9) Gecko/20100402 Ubuntu/9.10 (karmic) Firefox/3.5.9 Mozilla/5.0 (X11; U; Linux x86_64; cs-CZ; rv:1.9.1.9) Gecko/20100317 SUSE/3.5.9-0.1.1 Firefox/3.5.9 Mozilla/5.0 (X11; U; Linux i686; nl; rv:1.9.1.9) Gecko/20100401 Ubuntu/9.10 (karmic) Firefox/3.5.9 Mozilla/5.0 (X11; U; Linux i686; hu-HU; rv:1.9.1.9) Gecko/20100330 Fedora/3.5.9-1.fc12 Firefox/3.5.9 Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.1.9) Gecko/20100317 SUSE/3.5.9-0.1 Firefox/3.5.9 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.9) Gecko/20100315 Ubuntu/9.10 (karmic) Firefox/3.5.9 Mozilla/5.0 (Windows; U; Windows NT 6.1; tr; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 GTB7.1 Mozilla/5.0 (Windows; U; Windows NT 6.1; hu; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 Mozilla/5.0 (Windows; U; Windows NT 6.1; et; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 Mozilla/5.0 (Windows; U; Windows NT 6.0; nl; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 ( .NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; es-ES; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 GTB5 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 GTB7.0 (.NET CLR 3.0.30618) Mozilla/5.0 (Windows; U; Windows NT 6.0; ca; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 GTB7.0 ( .NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 GTB7.0 ( .NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 (.NET CLR 3.5.30729) Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.1.8) Gecko/20100216 Fedora/3.5.8-1.fc12 Firefox/3.5.8 Mozilla/5.0 (X11; U; Linux x86_64; es-ES; rv:1.9.1.8) Gecko/20100216 Fedora/3.5.8-1.fc11 Firefox/3.5.8 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.8) Gecko/20100318 Gentoo Firefox/3.5.8 Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.9.1.8) Gecko/20100216 Fedora/3.5.8-1.fc12 Firefox/3.5.8 Mozilla/5.0 (X11; U; Linux i686; ja-JP; rv:1.9.1.8) Gecko/20100216 Fedora/3.5.8-1.fc12 Firefox/3.5.8 Mozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.9.1.8) Gecko/20100214 Ubuntu/9.10 (karmic) Firefox/3.5.8 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1.8) Gecko/20100214 Ubuntu/9.10 (karmic) Firefox/3.5.8 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8 Mozilla/5.0 (X11; U; FreeBSD i386; ja-JP; rv:1.9.1.8) Gecko/20100305 Firefox/3.5.8 Mozilla/5.0 (Windows; U; Windows NT 6.1; sl; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8 (.NET CLR 3.5.30729) FirePHP/0.4 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8 GTB6 Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8 GTB7.0 (.NET CLR 3.5.30729) Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2) Gecko/20100305 Gentoo Firefox/3.5.7 Mozilla/5.0 (X11; U; Linux x86_64; cs-CZ; rv:1.9.1.7) Gecko/20100106 Ubuntu/9.10 (karmic) Firefox/3.5.7 Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.1.7) Gecko/20091222 SUSE/3.5.7-1.1.1 Firefox/3.5.7 Mozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 GTB6 Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.2; fr; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.0.04506.648) Mozilla/5.0 (Windows; U; Windows NT 5.1; fa; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.7) Gecko/20091221 MRA 5.5 (build 02842) Firefox/3.5.7 (.NET CLR 3.5.30729) Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.1.6) Gecko/20091215 Ubuntu/9.10 (karmic) Firefox/3.5.6 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.6) Gecko/20100117 Gentoo Firefox/3.5.6 Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.9.1.6) Gecko/20091216 Fedora/3.5.6-1.fc11 Firefox/3.5.6 GTB6 Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.1.6) Gecko/20091201 SUSE/3.5.6-1.1.1 Firefox/3.5.6 GTB6 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.6) Gecko/20100118 Gentoo Firefox/3.5.6 Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.1.6) Gecko/20091215 Ubuntu/9.10 (karmic) Firefox/3.5.6 GTB6 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1.6) Gecko/20091215 Ubuntu/9.10 (karmic) Firefox/3.5.6 GTB7.0 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1.6) Gecko/20091215 Ubuntu/9.10 (karmic) Firefox/3.5.6 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1.6) Gecko/20091201 SUSE/3.5.6-1.1.1 Firefox/3.5.6 Mozilla/5.0 (X11; U; Linux i686; cs-CZ; rv:1.9.1.6) Gecko/20100107 Fedora/3.5.6-1.fc12 Firefox/3.5.6 Mozilla/5.0 (X11; U; Linux i686; ca; rv:1.9.1.6) Gecko/20091215 Ubuntu/9.10 (karmic) Firefox/3.5.6 Mozilla/5.0 (Windows; U; Windows NT 6.1; it; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 ( .NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; id; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.6) Gecko/20091201 MRA 5.4 (build 02647) Firefox/3.5.6 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 (.NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.6) Gecko/20091201 MRA 5.5 (build 02842) Firefox/3.5.6 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.6) Gecko/20091201 MRA 5.5 (build 02842) Firefox/3.5.6 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 GTB6 (.NET CLR 3.5.30729) FBSMTWB Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 (.NET CLR 3.5.30729) FBSMTWB Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.1.5) Gecko/20091109 Ubuntu/9.10 (karmic) Firefox/3.5.5 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.8pre) Gecko/20091227 Ubuntu/9.10 (karmic) Firefox/3.5.5 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.5) Gecko/20091114 Gentoo Firefox/3.5.5 Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 Mozilla/5.0 (Windows; U; Windows NT 6.1; uk; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 MRA 5.5 (build 02842) Firefox/3.5.5 Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.1.5) Gecko/20091102 MRA 5.5 (build 02842) Firefox/3.5.5 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 ( .NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.1.5) Gecko/Firefox/3.5.5 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.5) Gecko/20091102 MRA 5.5 (build 02842) Firefox/3.5.5 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.5) Gecko/20091102 MRA 5.5 (build 02842) Firefox/3.5.5 Mozilla/5.0 (Windows NT 5.1; U; zh-cn; rv:1.8.1) Gecko/20091102 Firefox/3.5.5 Mozilla/5.0 (X11; U; Linux x86_64; ja; rv:1.9.1.4) Gecko/20091016 SUSE/3.5.4-1.1.2 Firefox/3.5.4 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.4) Gecko/20091016 Firefox/3.5.4 (.NET CLR 3.5.30729) FBSMTWB Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.1.4) Gecko/20091007 Firefox/3.5.4 Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.9.1.4) Gecko/20091016 Firefox/3.5.4 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.1.4) Gecko/20091016 Firefox/3.5.4 ( .NET CLR 3.5.30729; .NET4.0E) Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.4) Gecko/20091007 Firefox/3.5.4 Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.1.5) Gecko/20091109 Ubuntu/9.10 (karmic) Firefox/3.5.3pre Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3) Gecko/20090914 Slackware/13.0_stable Firefox/3.5.3 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3) Gecko/20090913 Firefox/3.5.3 Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.1.3) Gecko/20091020 Ubuntu/9.10 (karmic) Firefox/3.5.3 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.1.3) Gecko/20090913 Firefox/3.5.3 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.3) Gecko/20090919 Firefox/3.5.3 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.3) Gecko/20090912 Gentoo Firefox/3.5.3 FirePHP/0.3 Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 GTB5 Mozilla/5.0 (X11; U; FreeBSD i386; ru-RU; rv:1.9.1.3) Gecko/20090913 Firefox/3.5.3 Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 ( .NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.1; en; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.5.3;MEGAUPLOAD 1.0 ( .NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 Mozilla/5.0 (Windows; U; Windows NT 6.1; de-DE; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 Mozilla/5.0 (Windows; U; Windows NT 6.0; ko; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; fi; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 2.0.50727; .NET CLR 3.0.30618; .NET CLR 3.5.21022; .NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; bg; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729) Mozilla/5.0 (X11; U; Linux x86_64; pl; rv:1.9.1.2) Gecko/20090911 Slackware Firefox/3.5.2 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.2) Gecko/20090803 Slackware Firefox/3.5.2 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.2) Gecko/20090803 Firefox/3.5.2 Slackware Mozilla/5.0 (X11; U; Linux i686; ru-RU; rv:1.9.1.2) Gecko/20090804 Firefox/3.5.2 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.2) Gecko/20090729 Slackware/13.0 Firefox/3.5.2 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 Mozilla/5.0 (X11; U; Linux i686 (x86_64); fr; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 GTB7.1 ( .NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; es-MX; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; uk; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.12) Gecko/2009070611 Firefox/3.5.12 Mozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.9.1.11) Gecko/20100701 Firefox/3.5.11 Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.1.10) Gecko/20100506 SUSE/3.5.10-0.1.1 Firefox/3.5.10 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.1.10) Gecko/20100504 Firefox/3.5.10 GTB7.0 ( .NET CLR 3.5.30729) Mozilla/5.0 (X11; U; Linux x86_64; rv:1.9.1.1) Gecko/20090716 Linux Firefox/3.5.1 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.3) Gecko/20100524 Firefox/3.5.1 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.1) Gecko/20090716 Linux Mint/7 (Gloria) Firefox/3.5.1 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.1) Gecko/20090716 Firefox/3.5.1 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.1) Gecko/20090714 SUSE/3.5.1-1.1 Firefox/3.5.1 Mozilla/5.0 (X11; U; Linux x86; rv:1.9.1.1) Gecko/20090716 Linux Firefox/3.5.1 Mozilla/5.0 (X11; U; Linux i686; nl; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.2pre) Gecko/20090729 Ubuntu/9.04 (jaunty) Firefox/3.5.1 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 GTB5 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1.1) Gecko/20090722 Gentoo Firefox/3.5.1 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1.1) Gecko/20090714 SUSE/3.5.1-1.1 Firefox/3.5.1 Mozilla/5.0 (X11; U; DragonFly i386; de; rv:1.9.1) Gecko/20090720 Firefox/3.5.1 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.1) Gecko/20090718 Firefox/3.5.1 Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 Mozilla/5.0 (Windows; U; Windows NT 6.0; tr; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 GTB5 (.NET CLR 4.0.20506) Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 GTB5 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 GTB5 (.NET CLR 3.5.30729) Mozilla/5.0 (X11;U; Linux i686; en-GB; rv:1.9.1) Gecko/20090624 Ubuntu/9.04 (jaunty) Firefox/3.5 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1) Gecko/20090630 Firefox/3.5 GTB6 Mozilla/5.0 (X11; U; Linux i686; ja; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 3.5.30729) Mozilla/5.0 (X11; U; Linux i686; it-IT; rv:1.9.0.2) Gecko/2008092313 Ubuntu/9.04 (jaunty) Firefox/3.5 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.1) Gecko/20090624 Firefox/3.5 Mozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.9.1) Gecko/20090624 Ubuntu/9.04 (jaunty) Firefox/3.5 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1) Gecko/20090701 Ubuntu/9.04 (jaunty) Firefox/3.5 Mozilla/5.0 (X11; U; Linux i686; en-us; rv:1.9.0.2) Gecko/2008092313 Ubuntu/9.04 (jaunty) Firefox/3.5 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1) Gecko/20090624 Ubuntu/8.04 (hardy) Firefox/3.5 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1) Gecko/20090624 Firefox/3.5 Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.9.1) Gecko/20090624 Firefox/3.5 Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.9.1) Gecko/20090703 Firefox/3.5 Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.1; es-ES; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1) Gecko/20090612 Firefox/3.5 (.NET CLR 4.0.20506) Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1) Gecko/20090612 Firefox/3.5 Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 4.0.20506) Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1) Gecko/20090624 Firefox/3.5 Mozilla/5.0 (Windows; U; Windows NT 6.0; zh-TW; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.1b3pre) Gecko/20090105 Firefox/3.1b3pre Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1b3pre) Gecko/20090204 Firefox/3.1b3pre Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1b3) Gecko/20090327 Fedora/3.1-0.11.beta3.fc11 Firefox/3.1b3 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1b3) Gecko/20090312 Firefox/3.1b3 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1b3) Gecko/20090407 Firefox/3.1b3 Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 GTB5 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.1b3;MEGAUPLOAD 1.0 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 GTB5 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 Mozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 Mozilla/5.0 (Windows; U; Windows NT 6.0; es-AR; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1b3) Gecko/20090405 Firefox/3.1b3 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; x64; en-US; rv:1.9.1b2pre) Gecko/20081026 Firefox/3.1b2pre Mozilla/5.0 (Windows; U; Windows NT 6.0 x64; en-US; rv:1.9.1b2pre) Gecko/20081026 Firefox/3.1b2pre Mozilla/5.0 (Windows; U; Windows NT 6.0 ; x64; en-US; rv:1.9.1b2pre) Gecko/20081026 Firefox/3.1b2pre Mozilla/5.0 (Windows; U; Windows NT 5.1 ; x64; en-US; rv:1.9.1b2pre) Gecko/20081026 Firefox/3.1b2pre Mozilla/5.0 (X11; U; DragonFly i386; de; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2 Mozilla/5.0 (Windows; U; Windows NT 6.1; de-AT; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2 Mozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2 Mozilla/5.0 (Windows; U; Windows NT 6.0; it; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2 Mozilla/5.0 (Windows; U; Windows NT 6.0; de-AT; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2 Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2 Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; ko; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2 Mozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.1b1) Gecko/20081007 Firefox/3.1b1 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1b2) Gecko/20081127 Firefox/3.1b1 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008092313 Ubuntu/8.04 (hardy) Firefox/3.1.6 Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9.0.2) Gecko/2008092313 Firefox/3.1.6 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1b3) Gecko/20090327 GNU/Linux/x86_64 Firefox/3.1 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.2) Gecko/2008092313 Ubuntu/8.04 (hardy) Firefox/3.1 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008092313 Ubuntu/8.04 (hardy) Firefox/3.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.6pre) Gecko/2009011606 Firefox/3.1 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9pre) Gecko/2008040318 Firefox/3.0pre (Swiftfox) Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9b5pre) Gecko/2008030706 Firefox/3.0b5pre Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.9b5) Gecko/2008032620 Firefox/3.0b5 Mozilla/5.0 (X11; U; Linux x86_64; pt-BR; rv:1.9b5) Gecko/2008041515 Firefox/3.0b5 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9pre) Gecko/2008042312 Firefox/3.0b5 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9b5) Gecko/2008041816 Fedora/3.0-0.55.beta5.fc9 Firefox/3.0b5 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9b5) Gecko/2008040514 Firefox/3.0b5 Mozilla/5.0 (X11; U; Linux i686; tr-TR; rv:1.9b5) Gecko/2008032600 SUSE/2.9.95-25.1 Firefox/3.0b5 Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5) Gecko/2008032600 SUSE/2.9.95-25.1 Firefox/3.0b5 Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5 Mozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.9b5) Gecko/2008041514 Firefox/3.0b5 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5 Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9b5) Gecko/2008041514 Firefox/3.0b5 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9b5) Gecko/2008041514 Firefox/3.0b5 Mozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9b5) Gecko/2008032620 Firefox/3.0b5 Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9b5) Gecko/2008032620 Firefox/3.0b5 Mozilla/5.0 (Windows; U; Windows NT 5.2; nl; rv:1.9b5) Gecko/2008032620 Firefox/3.0b5 Mozilla/5.0 (Windows; U; Windows NT 5.2; fr; rv:1.9b5) Gecko/2008032620 Firefox/3.0b5 Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9b5) Gecko/2008032620 Firefox/3.0b5 Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9b5) Gecko/2008032620 Firefox/3.0b5 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; en-GB; rv:1.9b5) Gecko/2008032619 Firefox/3.0b5 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b4pre) Gecko/2008021714 Firefox/3.0b4pre (Swiftfox) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b4pre) Gecko/2008021712 Firefox/3.0b4pre (Swiftfox) Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9b4pre) Gecko/2008020708 Firefox/3.0b4pre Mozilla/5.0 (X11; U; Windows NT 5.0; en-US; rv:1.9b4) Gecko/2008030318 Firefox/3.0b4 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9b4) Gecko/2008040813 Firefox/3.0b4 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9b4) Gecko/2008031318 Firefox/3.0b4 Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9b4) Gecko/2008030800 SUSE/2.9.94-4.2 Firefox/3.0b4 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b4) Gecko/2008031317 Firefox/3.0b4 Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9b4) Gecko/2008030714 Firefox/3.0b4 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9b4) Gecko/2008030714 Firefox/3.0b4 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9b4) Gecko/2008030714 Firefox/3.0b4 Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.9b4) Gecko/2008030714 Firefox/3.0b4 Mozilla/5.0 (Windows; U; Windows NT 5.1; lt; rv:1.9b4) Gecko/2008030714 Firefox/3.0b4 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; it; rv:1.9b4) Gecko/2008030317 Firefox/3.0b4 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9b3pre) Gecko/2008020509 Firefox/3.0b3pre Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9b3pre) Gecko/2008011321 Firefox/3.0b3pre Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b3pre) Gecko/2008020507 Firefox/3.0b3pre Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b3) Gecko/2008020513 Firefox/3.0b3 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9b3) Gecko/2008020514 Firefox/3.0b3 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9b3) Gecko/2008020514 Firefox/3.0b3 Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9b3) Gecko/2008020514 Firefox/3.0b3 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9b3) Gecko/2008020514 Firefox/3.0b3 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b2) Gecko/2007121016 Firefox/3.0b2 Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9b2) Gecko/2007121016 Firefox/3.0b2 Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9b2) Gecko/2007121120 Firefox/3.0b2 Mozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.9b2) Gecko/2007121120 Firefox/3.0b2 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9b1) Gecko/2007110703 Firefox/3.0b1 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b3pre) Gecko/2008010415 Firefox/3.0b Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.9a2) Gecko/20080530 Firefox/3.0a2 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a1) Gecko/20060814 Firefox/3.0a1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.9a1) Gecko/20061204 Firefox/3.0a1 Mozilla/5.0 (Macintosh; I; PPC Mac OS X Mach-O; en-US; rv:1.9a1) Gecko/20061204 Firefox/3.0a1 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.16) Gecko/20080716 Firefox/3.07 Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.8) Gecko/2009032609 Firefox/3.07 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.03 Mozilla/6.0 (Windows; U; Windows NT 7.0; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.9 (.NET CLR 3.5.30729) Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.0.9) Gecko/2009042114 Ubuntu/9.04 (jaunty) Firefox/3.0.9 Mozilla/5.0 (X11; U; Linux x86_64; es-ES; rv:1.9.0.9) Gecko/2009042114 Ubuntu/9.04 (jaunty) Firefox/3.0.9 Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.9) Gecko/2009042113 Ubuntu/8.10 (intrepid) Firefox/3.0.9 Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.9) Gecko/2009042114 Ubuntu/9.04 (jaunty) Firefox/3.0.9 Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.9) Gecko/2009042113 Ubuntu/8.10 (intrepid) Firefox/3.0.9 Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.7) Gecko/2009030422 Kubuntu/8.10 (intrepid) Firefox/3.0.9 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.9) Gecko/2009042113 Ubuntu/9.04 (jaunty) Firefox/3.0.9 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.9) Gecko/2009042113 Ubuntu/8.04 (hardy) Firefox/3.0.9 Mozilla/5.0 (X11; U; Linux i686; fi-FI; rv:1.9.0.9) Gecko/2009042113 Ubuntu/9.04 (jaunty) Firefox/3.0.9 Mozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.9.0.9) Gecko/2009042113 Ubuntu/9.04 (jaunty) Firefox/3.0.9 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.9) Gecko/2009042113 Ubuntu/8.10 (intrepid) Firefox/3.0.9 GTB5 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.9) Gecko/2009042113 Linux Mint/6 (Felicia) Firefox/3.0.9 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.9) Gecko/2009041408 Red Hat/3.0.9-1.el5 Firefox/3.0.9 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.9) Gecko/2009040820 Firefox/3.0.9 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.9) Gecko/2009042113 Ubuntu/9.04 (jaunty) Firefox/3.0.9 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.9) Gecko/2009042113 Ubuntu/8.10 (intrepid) Firefox/3.0.9 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.9) Gecko/2009042113 Ubuntu/8.04 (hardy) Firefox/3.0.9 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.9) Gecko/2009041500 SUSE/3.0.9-2.2 Firefox/3.0.9 Mozilla/5.0 (Windows; U; Windows NT 6.1; nl; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9 FirePHP/0.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.4) Firefox/3.0.8) Mozilla/6.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729) Mozilla/6.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 Mozilla/5.0 (X11; U; Linux x86_64; zh-TW; rv:1.9.0.8) Gecko/2009032712 Ubuntu/8.04 (hardy) Firefox/3.0.8 GTB5 Mozilla/5.0 (X11; U; Linux x86_64; nb-NO; rv:1.9.0.8) Gecko/2009032600 SUSE/3.0.8-1.2 Firefox/3.0.8 Mozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.0.8) Gecko/2009033100 Ubuntu/9.04 (jaunty) Firefox/3.0.8 Mozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.0.8) Gecko/2009032712 Ubuntu/8.10 (intrepid) Firefox/3.0.8 Mozilla/5.0 (X11; U; Linux x86_64; fi-FI; rv:1.9.0.8) Gecko/2009032712 Ubuntu/8.10 (intrepid) Firefox/3.0.8 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009040312 Gentoo Firefox/3.0.8 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009033100 Ubuntu/9.04 (jaunty) Firefox/3.0.8 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009032908 Gentoo Firefox/3.0.8 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009032713 Ubuntu/9.04 (jaunty) Firefox/3.0.8 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009032712 Ubuntu/8.10 (intrepid) Firefox/3.0.8 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009032712 Ubuntu/8.04 (hardy) Firefox/3.0.8 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009032712 Firefox/3.0.8 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009032600 SUSE/3.0.8-1.1.1 Firefox/3.0.8 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.8) Gecko/2009032600 SUSE/3.0.8-1.1 Firefox/3.0.8 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009030810 Firefox/3.0.8 Mozilla/5.0 (X11; U; Linux x86_64; en-US) Gecko Firefox/3.0.8 Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.8) Gecko/2009032712 Ubuntu/8.10 (intrepid) Firefox/3.0.8 FirePHP/0.2.4 Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.8) Gecko/2009032712 Ubuntu/8.10 (intrepid) Firefox/3.0.8 Mozilla/5.0 (X11; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 Mozilla/5.0 (X11; U; Mac OSX; it; rv:1.9.0.7) Gecko/2009030422 Firefox/3.0.7 Mozilla/5.0 (X11; U; Linux x86_64; sv-SE; rv:1.9.0.7) Gecko/2009030423 Ubuntu/8.10 (intrepid) Firefox/3.0.7 Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.0.7) Gecko/2009030423 Ubuntu/8.10 (intrepid) Firefox/3.0.7 Mozilla/5.0 (X11; U; Linux x86_64; es-ES; rv:1.9.0.7) Gecko/2009022800 SUSE/3.0.7-1.4 Firefox/3.0.7 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009032606 Red Hat/3.0.7-1.el5 Firefox/3.0.7 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009032319 Gentoo Firefox/3.0.7 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009031802 Gentoo Firefox/3.0.7 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009031120 Mandriva/1.9.0.7-0.1mdv2009.0 (2009.0) Firefox/3.0.7 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009031120 Mandriva Firefox/3.0.7 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009030516 Ubuntu/9.04 (jaunty) Firefox/3.0.7 GTB5 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009030516 Ubuntu/9.04 (jaunty) Firefox/3.0.7 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009030423 Ubuntu/8.10 (intrepid) Firefox/3.0.7 Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.7) Gecko/2009030503 Fedora/3.0.7-1.fc9 Firefox/3.0.7 Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.7) Gecko/2009030620 Gentoo Firefox/3.0.7 Mozilla/5.0 (X11; U; Linux i686; zh-TW; rv:1.9.0.7) Gecko/2009030422 Ubuntu/8.04 (hardy) Firefox/3.0.7 Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.7) Gecko/2009030503 Fedora/3.0.7-1.fc10 Firefox/3.0.7 Mozilla/5.0 (X11; U; Linux i686; hu-HU; rv:1.9.0.7) Gecko/2009030422 Ubuntu/8.10 (intrepid) Firefox/3.0.7 FirePHP/0.2.4 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.7) Gecko/2009031218 Gentoo Firefox/3.0.7 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.7) Gecko/2009030422 Ubuntu/8.10 (intrepid) Firefox/3.0.7 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.6pre) Gecko/2008121605 Firefox/3.0.6pre UserAgent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.6) Gecko/2009011912 Firefox/3.0.6 UserAgent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-GB; rv:1.9.0.6) Gecko/2009011912 Firefox/3.0.6 Mozilla/5.0 (X11; U; Linux; fr; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 Mozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.0.6) Gecko/2009020911 Ubuntu/8.10 (intrepid) Firefox/3.0.6 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.6) Gecko/2009020519 Ubuntu/9.04 (jaunty) Firefox/3.0.6 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.6) Gecko/2009012700 SUSE/3.0.6-1.4 Firefox/3.0.6 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.16) Gecko/2009121609 Firefox/3.0.6 (Windows NT 5.1) Mozilla/5.0 (X11; U; Linux i686; sv-SE; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.9.0.6) Gecko/2009011912 Firefox/3.0.6 Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.6) Gecko/2009020911 Ubuntu/8.10 (intrepid) Firefox/3.0.6 Mozilla/5.0 (X11; U; Linux i686; eu; rv:1.9.0.6) Gecko/2009012700 SUSE/3.0.6-0.1.2 Firefox/3.0.6 Mozilla/5.0 (X11; U; Linux i686; en; rv:1.9.0.6) Gecko/2009020911 Ubuntu/8.10 (intrepid) Firefox/3.0.6 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009022714 Ubuntu/9.04 (jaunty) Firefox/3.0.6 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009022111 Gentoo Firefox/3.0.6 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009020911 Ubuntu/8.04 (hardy) Firefox/3.0.6 FirePHP/0.2.4 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009020616 Gentoo Firefox/3.0.6 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009020518 Ubuntu/9.04 (jaunty) Firefox/3.0.6 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009020410 Fedora/3.0.6-1.fc9 Firefox/3.0.6 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009012700 SUSE/3.0.6-0.1 Firefox/3.0.6 Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.6) Gecko/2009020911 Ubuntu/8.10 (intrepid) Firefox/3.0.6 Mozilla/5.0 (X11; U; x86_64 Linux; en_US; rv:1.9.0.5) Gecko/2008120121 Firefox/3.0.5 Mozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9.0.5) Gecko/2008121623 Ubuntu/8.10 (intrepid) Firefox/3.0.5 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.5) Gecko/2008122406 Gentoo Firefox/3.0.5 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.5) Gecko/2008122120 Gentoo Firefox/3.0.5 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.5) Gecko/2008122014 CentOS/3.0.5-1.el4.centos Firefox/3.0.5 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.5) Gecko/2008121911 CentOS/3.0.5-1.el5.centos Firefox/3.0.5 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.5) Gecko/2008121806 Gentoo Firefox/3.0.5 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.5) Gecko/2008121711 Ubuntu/9.04 (jaunty) Firefox/3.0.5 Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.5) Gecko/2008122010 Firefox/3.0.5 Mozilla/5.0 (X11; U; Linux i686; sk; rv:1.9.0.5) Gecko/2008121621 Ubuntu/8.04 (hardy) Firefox/3.0.5 Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.5) Gecko/2008121622 Ubuntu/8.10 (intrepid) Firefox/3.0.5 Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.5) Gecko/2008120121 Firefox/3.0.5 Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.5) Gecko/2008121300 SUSE/3.0.5-0.1 Firefox/3.0.5 Mozilla/5.0 (X11; U; Linux i686; ja; rv:1.9.0.5) Gecko/2008121622 Ubuntu/8.10 (intrepid) Firefox/3.0.5 Mozilla/5.0 (X11; U; Linux i686; it; rv:1.9.0.5) Gecko/2008121711 Ubuntu/9.04 (jaunty) Firefox/3.0.5 Mozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.9.0.5) Gecko/2008123017 Firefox/3.0.5 Mozilla/5.0 (X11; U; Linux i686; fi-FI; rv:1.9.0.5) Gecko/2008121622 Ubuntu/8.10 (intrepid) Firefox/3.0.5 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5) Gecko/2009011301 Gentoo Firefox/3.0.5 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5) Gecko/2008121914 Ubuntu/8.04 (hardy) Firefox/3.0.5 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5) Gecko/2008121718 Gentoo Firefox/3.0.5 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.4pre) Gecko/2008101311 Firefox/3.0.4pre (Swiftfox) Mozilla/5.0 (X11; U; SunOS i86pc; fr; rv:1.9.0.4) Gecko/2008111710 Firefox/3.0.4 Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.9.0.4) Gecko/2008111710 Firefox/3.0.4 Mozilla/5.0 (X11; U; Linux x86_64; es-ES; rv:1.9.0.4) Gecko/2008111217 Fedora/3.0.4-1.fc10 Firefox/3.0.4 Mozilla/5.0 (X11; U; Linux x86_64; es-AR; rv:1.9.0.4) Gecko/2008110510 Red Hat/3.0.4-1.el5_2 Firefox/3.0.4 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.6) Gecko/2009020407 Firefox/3.0.4 (Debian-3.0.6-1) Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.4) Gecko/2008120512 Gentoo Firefox/3.0.4 Mozilla/5.0 (X11; U; Linux x86_64; cs-CZ; rv:1.9.0.4) Gecko/2008111318 Ubuntu/8.04 (hardy) Firefox/3.0.4 Mozilla/5.0 (X11; U; Linux ppc; en-US; rv:1.9.0.4) Gecko/2008111317 Ubuntu/8.04 (hardy) Firefox/3.0.4 Mozilla/5.0 (X11; U; Linux i686; pt-PT; rv:1.9.0.5) Gecko/2008121622 Ubuntu/8.10 (intrepid) Firefox/3.0.4 Mozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.9.0.4) Gecko/2008111317 Ubuntu/8.04 (hardy) Firefox/3.0.4 Mozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.9.0.4) Gecko/2008111217 Fedora/3.0.4-1.fc10 Firefox/3.0.4 Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.4) Gecko/20081031100 SUSE/3.0.4-4.6 Firefox/3.0.4 Mozilla/5.0 (X11; U; Linux i686; nl; rv:1.9.0.4) Gecko/2008111317 Ubuntu/8.04 (hardy) Firefox/3.0.4 Mozilla/5.0 (X11; U; Linux i686; nl; rv:1.9.0.11) Gecko/2009060309 Ubuntu/8.04 (hardy) Firefox/3.0.4 Mozilla/5.0 (X11; U; Linux i686; it; rv:1.9.0.4) Gecko/2008111217 Red Hat Firefox/3.0.4 Mozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.9.0.4) Gecko/2008111317 Ubuntu/8.04 (hardy) Firefox/3.0.4 Mozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.9.0.4) Gecko/2008111317 Linux Mint/5 (Elyssa) Firefox/3.0.4 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko/2009032018 Firefox/3.0.4 (Debian-3.0.6-1) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5) Gecko/2008121622 Linux Mint/6 (Felicia) Firefox/3.0.4 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.4) Gecko/2008111318 Ubuntu/8.10 (intrepid) Firefox/3.0.4 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3pre) Gecko/2008090713 Firefox/3.0.3pre (Swiftfox) Mozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.0.3) Gecko/2008092813 Gentoo Firefox/3.0.3 Mozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 Mozilla/5.0 (X11; U; Linux x86_64; es-AR; rv:1.9.0.3) Gecko/2008092515 Ubuntu/8.10 (intrepid) Firefox/3.0.3 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009030719 Firefox/3.0.3 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 (Linux Mint) Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.3) Gecko/2008090713 Firefox/3.0.3 Mozilla/5.0 (X11; U; Linux x86; es-ES; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3 Mozilla/5.0 (X11; U; Linux x64_64; es-AR; rv:1.9.0.3) Gecko/2008092515 Ubuntu/8.10 (intrepid) Firefox/3.0.3 Mozilla/5.0 (X11; U; Linux ia64; en-US; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 Mozilla/5.0 (X11; U; Linux i686; zh-TW; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 Mozilla/5.0 (X11; U; Linux i686; sv-SE; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 Mozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.3) Gecko/2008092700 SUSE/3.0.3-2.2 Firefox/3.0.3 Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 Mozilla/5.0 (X11; U; Linux i686; nl; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 Mozilla/5.0 (X11; U; Linux i686; ko-KR; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 Mozilla/5.0 (X11; U; Linux i686; it; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.2pre) Gecko/2008082305 Firefox/3.0.2pre Mozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9.0.2) Gecko/2008092213 Ubuntu/8.04 (hardy) Firefox/3.0.2 Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.0.2) Gecko/2008092213 Ubuntu/8.04 (hardy) Firefox/3.0.2 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.2) Gecko/2008092418 CentOS/3.0.2-3.el5.centos Firefox/3.0.2 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.2) Gecko/2008092318 Fedora/3.0.2-1.fc9 Firefox/3.0.2 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.2) Gecko/2008092213 Ubuntu/8.04 (hardy) Firefox/3.0.2 Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.2) Gecko/2008092213 Ubuntu/8.04 (hardy) Firefox/3.0.2 Mozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.9.0.2) Gecko/2008092313 Ubuntu/8.04 (hardy) Firefox/3.0.2 Mozilla/5.0 (X11; U; Linux i686; it; rv:1.9.0.2) Gecko/2008092313 Ubuntu/8.04 (hardy) Firefox/3.0.2 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.2) Gecko/2008092318 Fedora/3.0.2-1.fc9 Firefox/3.0.2 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.2) Gecko/2008092313 Ubuntu/8.04 (hardy) Firefox/3.0.2 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008110715 ASPLinux/3.0.2-3.0.120asp Firefox/3.0.2 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008092809 Gentoo Firefox/3.0.2 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008092418 CentOS/3.0.2-3.el5.centos Firefox/3.0.2 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008092318 Fedora/3.0.2-1.fc9 Firefox/3.0.2 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008092313 Ubuntu/8.04 (hardy) Firefox/3.0.2 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008092313 Ubuntu/1.4.0 (hardy) Firefox/3.0.2 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008092000 Ubuntu/8.04 (hardy) Firefox/3.0.2 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008091816 Red Hat/3.0.2-3.el5 Firefox/3.0.2 Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.2) Gecko/2008092313 Ubuntu/8.04 (hardy) Firefox/3.0.2 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.2) Gecko/2008092313 Ubuntu/8.04 (hardy) Firefox/3.0.2 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1pre) Gecko/2008062222 Firefox/3.0.1pre (Swiftfox) Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9) Gecko/2008052906 Firefox/3.0.1pre Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b3pre) Gecko/20090213 Firefox/3.0.1b3pre Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.0.19) Gecko/2010051407 CentOS/3.0.19-1.el5.centos Firefox/3.0.19 Mozilla/5.0 (Windows; U; Windows NT 6.0; zh-CN; rv:1.9.0.19) Gecko/2010031422 Firefox/3.0.19 ( .NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.0.19) Gecko/2010031422 Firefox/3.0.19 (.NET CLR 3.5.30729) FirePHP/0.3 Mozilla/5.0 (Windows; U; Windows NT 6.0; cs; rv:1.9.0.19) Gecko/2010031422 Firefox/3.0.19 Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.0.19) Gecko/2010031422 Firefox/3.0.19 GTB7.0 ( .NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.19) Gecko/2010031422 Firefox/3.0.19 ( .NET CLR 3.5.30729; .NET4.0C) Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.18) Gecko/2010021501 Ubuntu/9.04 (jaunty) Firefox/3.0.18 Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.18) Gecko/2010021501 Ubuntu/9.04 (jaunty) Firefox/3.0.18 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.18) Gecko/2010021501 Firefox/3.0.18 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.18) Gecko/2010020400 SUSE/3.0.18-0.1.1 Firefox/3.0.18 Mozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE; rv:1.9.0.18) Gecko/2010020220 Firefox/3.0.18 (.NET CLR 3.5.30729) Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.17) Gecko/2010011010 Mandriva/1.9.0.17-0.1mdv2009.1 (2009.1) Firefox/3.0.17 GTB6 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.17) Gecko/2010010604 Ubuntu/9.04 (jaunty) Firefox/3.0.17 FirePHP/0.4 Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.10) Gecko/2009122115 Firefox/3.0.17 Mozilla/5.0 (X11; U; Linux i686; cs-CZ; rv:1.9.0.16) Gecko/2009121601 Ubuntu/9.04 (jaunty) Firefox/3.0.16 Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.0.16) Gecko/2009120208 Firefox/3.0.16 FBSMTWB Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.0.16) Gecko/2009120208 Firefox/3.0.16 FBSMTWB Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.0.16 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.16) Gecko/2009120208 Firefox/3.0.16 FBSMTWB Mozilla/5.0 (Windows; U; Windows NT 5.1; de-LI; rv:1.9.0.16) Gecko/2009120208 Firefox/3.0.16 (.NET CLR 3.5.30729) Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.0.14) Gecko/2009090217 Ubuntu/9.04 (jaunty) Firefox/3.0.14 (.NET CLR 3.5.30729) Mozilla/5.0 (X11; U; Linux x86_64; pt-BR; rv:1.9.0.14) Gecko/2009090217 Ubuntu/9.04 (jaunty) Firefox/3.0.14 Mozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.0.14) Gecko/2009090216 Ubuntu/8.04 (hardy) Firefox/3.0.14 Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.0.14) Gecko/2009090216 Ubuntu/8.04 (hardy) Firefox/3.0.14 Mozilla/5.0 (X11; U; Linux x86_64; fi-FI; rv:1.9.0.14) Gecko/2009090217 Firefox/3.0.14 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.14) Gecko/2009090217 Ubuntu/9.04 (jaunty) Firefox/3.0.14 Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.0.14) Gecko/2009090216 Firefox/3.0.14 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.14) Gecko/20090916 Ubuntu/9.04 (jaunty) Firefox/3.0.14 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.14) Gecko/2009091010 Firefox/3.0.14 (Debian-3.0.14-1) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.14) Gecko/2009090905 Fedora/3.0.14-1.fc10 Firefox/3.0.14 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.14) Gecko/2009090216 Ubuntu/9.04 (jaunty) Firefox/3.0.14 GTB5 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.14) Gecko/2009090216 Ubuntu/9.04 (jaunty) Firefox/3.0.14 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.14) Gecko/2009082505 Red Hat/3.0.14-1.el5_4 Firefox/3.0.14 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.14) Gecko/2009082707 Firefox/3.0.14 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.14) Gecko/2009082707 Firefox/3.0.14 ( .NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.0.14) Gecko/2009082707 Firefox/3.0.14 GTB6 Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.0.14) Gecko/2009082707 Firefox/3.0.14 Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.0.14) Gecko/2009082707 Firefox/3.0.14 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.1; ; rv:1.9.0.14) Gecko/2009082707 Firefox/3.0.14 Mozilla/5.0 (X11; U; Linux x86_64; zh-TW; rv:1.9.0.13) Gecko/2009080315 Ubuntu/9.04 (jaunty) Firefox/3.0.13 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.14) Gecko/2009090217 Ubuntu/9.04 (jaunty) Firefox/3.0.13 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.13) Gecko/2009080315 Ubuntu/9.04 (jaunty) Firefox/3.0.13 Mozilla/5.0 (X11; U; Linux i686; zh-TW; rv:1.9.0.13) Gecko/2009080315 Ubuntu/9.04 (jaunty) Firefox/3.0.13 Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.13) Gecko/2009080315 Ubuntu/9.04 (jaunty) Firefox/3.0.13 Mozilla/5.0 (X11; U; Linux i686; fr-be; rv:1.9.0.8) Gecko/2009073022 Ubuntu/9.04 (jaunty) Firefox/3.0.13 Mozilla/5.0 (X11; U; Linux i686; fi-FI; rv:1.9.0.13) Gecko/2009080315 Linux Mint/6 (Felicia) Firefox/3.0.13 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.13) Gecko/2009080315 Ubuntu/9.04 (jaunty) Firefox/3.0.13 Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.13) Gecko/2009080316 Ubuntu/8.04 (hardy) Firefox/3.0.13 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.13) Gecko/2009080315 Ubuntu/9.04 (jaunty) Firefox/3.0.13 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 (.NET CLR 4.0.20506) Mozilla/5.0 (Windows; U; Windows NT 6.0; cs; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.1; fr-be; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 (.NET CLR 3.5.30729) FBSMTWB Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 (.NET CLR 3.5.30729) Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; de; rv:1.9.0.13) Gecko/2009073021 Firefox/3.0.13 Mozilla/5.0 (X11; U; Linux x86_64; es-ES; rv:1.9.0.12) Gecko/2009072711 CentOS/3.0.12-1.el5.centos Firefox/3.0.12 Mozilla/5.0 (X11; U; Linux x86_64; es-ES; rv:1.9.0.12) Gecko/2009070811 Ubuntu/9.04 (jaunty) Firefox/3.0.12 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.12) Gecko/2009070818 Ubuntu/8.10 (intrepid) Firefox/3.0.12 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.12) Gecko/2009070811 Ubuntu/9.04 (jaunty) Firefox/3.0.12 Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.12) Gecko/2009070811 Ubuntu/9.04 (jaunty) Firefox/3.0.12 FirePHP/0.3 Mozilla/5.0 (X11; U; Linux ppc; en-GB; rv:1.9.0.12) Gecko/2009070818 Ubuntu/8.10 (intrepid) Firefox/3.0.12 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.12) Gecko/2009070818 Ubuntu/8.10 (intrepid) Firefox/3.0.12 FirePHP/0.3 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.12) Gecko/2009070818 Firefox/3.0.12 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.12) Gecko/2009070812 Linux Mint/5 (Elyssa) Firefox/3.0.12 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.12) Gecko/2009070610 Firefox/3.0.12 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.12) Gecko/2009070812 Ubuntu/8.04 (hardy) Firefox/3.0.12 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.12) Gecko/2009070811 Ubuntu/9.04 (jaunty) Firefox/3.0.12 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 (.NET CLR 3.5.30729) FirePHP/0.3 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; sr; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; nl; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 GTB5 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12 (.NET CLR 3.5.30729) Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.0.11) Gecko/2009060309 Ubuntu/9.04 (jaunty) Firefox/3.0.11 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.11) Gecko/2009070612 Gentoo Firefox/3.0.11 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.11) Gecko/2009061417 Gentoo Firefox/3.0.11 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.11) Gecko/2009061118 Fedora/3.0.11-1.fc9 Firefox/3.0.11 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.11) Gecko/2009060309 Linux Mint/7 (Gloria) Firefox/3.0.11 Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11 Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.11) Gecko/2009070611 Gentoo Firefox/3.0.11 Mozilla/5.0 (X11; U; Linux i686; nl; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11 Mozilla/5.0 (X11; U; Linux i686; it; rv:1.9.0.11) Gecko/2009061118 Fedora/3.0.11-1.fc10 Firefox/3.0.11 Mozilla/5.0 (X11; U; Linux i686; it-IT; rv:1.9.0.11) Gecko/2009060308 Linux Mint/7 (Gloria) Firefox/3.0.11 Mozilla/5.0 (X11; U; Linux i686; fi-FI; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11 Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.0.11) Gecko/2009061118 Fedora/3.0.11-1.fc9 Firefox/3.0.11 Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.0.11) Gecko/2009060310 Ubuntu/8.10 (intrepid) Firefox/3.0.11 Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.0.11) Gecko/2009060309 Linux Mint/5 (Elyssa) Firefox/3.0.11 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.11) Gecko/2009060310 Linux Mint/6 (Felicia) Firefox/3.0.11 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.11) Gecko/2009060308 Linux Mint/7 (Gloria) Firefox/3.0.11 Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.11) Gecko/2009060309 Firefox/3.0.11 Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11 GTB5 Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.11) Gecko/2009060214 Firefox/3.0.11 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.11) Gecko/2009062218 Gentoo Firefox/3.0.11 Mozilla/5.0 (X11; U; Slackware Linux i686; en-US; rv:1.9.0.10) Gecko/2009042315 Firefox/3.0.10 Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.10) Gecko/2009042523 Ubuntu/9.04 (jaunty) Firefox/3.0.10 Mozilla/5.0 (X11; U; Linux x86_64; da-DK; rv:1.9.0.10) Gecko/2009042523 Ubuntu/9.04 (jaunty) Firefox/3.0.10 Mozilla/5.0 (X11; U; Linux i686; tr-TR; rv:1.9.0.10) Gecko/2009042523 Ubuntu/9.04 (jaunty) Firefox/3.0.10 Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.10) Gecko/2009042513 Ubuntu/8.04 (hardy) Firefox/3.0.10 Mozilla/5.0 (X11; U; Linux i686; hu-HU; rv:1.9.0.10) Gecko/2009042718 CentOS/3.0.10-1.el5.centos Firefox/3.0.10 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.10) Gecko/2009042708 Fedora/3.0.10-1.fc10 Firefox/3.0.10 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.10) Gecko/2009042513 Ubuntu/8.04 (hardy) Firefox/3.0.10 Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.0.10) Gecko/2009042523 Ubuntu/9.04 (jaunty) Firefox/3.0.10 Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.0.10) Gecko/2009042513 Linux Mint/5 (Elyssa) Firefox/3.0.10 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009020410 Fedora/3.0.6-1.fc10 Firefox/3.0.10 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.10) Gecko/2009042812 Gentoo Firefox/3.0.10 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.10) Gecko/2009042708 Fedora/3.0.10-1.fc10 Firefox/3.0.10 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.10) Gecko/2009042523 Ubuntu/8.10 (intrepid) Firefox/3.0.10 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.10) Gecko/2009042523 Linux Mint/7 (Gloria) Firefox/3.0.10 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.10) Gecko/2009042523 Linux Mint/6 (Felicia) Firefox/3.0.10 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.10) Gecko/2009042513 Linux Mint/5 (Elyssa) Firefox/3.0.10 Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.10) Gecko/2009042523 Ubuntu/8.10 (intrepid) Firefox/3.0.10 Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.10) Gecko/2009042513 Ubuntu/8.04 (hardy) Firefox/3.0.10 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.10) Gecko/2009042523 Ubuntu/9.04 (jaunty) Firefox/3.0.10 Mozilla/5.0 (X11; U; OpenBSD amd64; en-US; rv:1.9.0.1) Gecko/2008081402 Firefox/3.0.1 Mozilla/5.0 (X11; U; Linux x86_64; rv:1.9.0.1) Gecko/2008072820 Firefox/3.0.1 Mozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9.0.1) Gecko/2008071222 Ubuntu/hardy Firefox/3.0.1 Mozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9.0.1) Gecko/2008071222 Ubuntu (hardy) Firefox/3.0.1 Mozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9.0.1) Gecko/2008071222 Firefox/3.0.1 Mozilla/5.0 (X11; U; Linux x86_64; ko-KR; rv:1.9.0.1) Gecko/2008071717 Firefox/3.0.1 Mozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.0.1) Gecko/2008071717 Firefox/3.0.1 Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.0.1) Gecko/2008071222 Firefox/3.0.1 Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.0.1) Gecko/2008070400 SUSE/3.0.1-1.1 Firefox/3.0.1 Mozilla/5.0 (X11; U; Linux x86_64; es-ES; rv:1.9.0.1) Gecko/2008072820 Firefox/3.0.1 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.1) Gecko/2008110312 Gentoo Firefox/3.0.1 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.1) Gecko/2008072820 Kubuntu/8.04 (hardy) Firefox/3.0.1 Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.1) Gecko/2008072820 Firefox/3.0.1 FirePHP/0.1.1.2 Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.0.1) Gecko/2008070400 SUSE/3.0.1-0.1 Firefox/3.0.1 Mozilla/5.0 (X11; U; Linux x86_64) Gecko/2008072820 Firefox/3.0.1 Mozilla/5.0 (X11; U; Linux i686; rv:1.9) Gecko/20080810020329 Firefox/3.0.1 Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.1) Gecko/2008071719 Firefox/3.0.1 Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1 Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.1) Gecko/2008071719 Firefox/3.0.1 Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.1) Gecko/2008071222 Firefox/3.0.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.0 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.0 Mozilla/6.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:2.0.0.0) Gecko/20061028 Firefox/3.0 Mozilla/5.0 (X11; U; SunOS sun4u; it-IT; ) Gecko/20080000 Firefox/3.0 Mozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9) Gecko/2008060309 Firefox/3.0 Mozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9) Gecko/2008061017 Firefox/3.0 Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9) Gecko/2008061017 Firefox/3.0 Mozilla/5.0 (X11; U; Linux x86_64; es-AR; rv:1.9) Gecko/2008061017 Firefox/3.0 Mozilla/5.0 (X11; U; Linux x86_64; es-AR; rv:1.9) Gecko/2008061015 Ubuntu/8.04 (hardy) Firefox/3.0 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0) Gecko/2008061600 SUSE/3.0-1.2 Firefox/3.0 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9) Gecko/2008062908 Firefox/3.0 (Debian-3.0~rc2-2) Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9) Gecko/2008062315 (Gentoo) Firefox/3.0 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9) Gecko/2008061317 (Gentoo) Firefox/3.0 Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9) Gecko/2008061017 Firefox/3.0 Mozilla/5.0 (X11; U; Linux i686; tr-TR; rv:1.9.0) Gecko/2008061600 SUSE/3.0-1.2 Firefox/3.0 Mozilla/5.0 (X11; U; Linux i686; sk; rv:1.9.1) Gecko/20090630 Fedora/3.5-1.fc11 Firefox/3.0 Mozilla/5.0 (X11; U; Linux i686; sk; rv:1.9) Gecko/2008061015 Firefox/3.0 Mozilla/5.0 (X11; U; Linux i686; rv:1.9) Gecko/2008080808 Firefox/3.0 Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9) Gecko/2008061812 Firefox/3.0 Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.5) Gecko/2008121622 Slackware/2.6.27-PiP Firefox/3.0 Mozilla/5.0 (X11; U; Linux i686; nl; rv:1.9) Gecko/2008061015 Firefox/3.0 Mozilla/5.0 (X11; U; Linux i686; it; rv:1.9) Gecko/2008061015 Firefox/3.0 Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.0.15) Gecko/2009101601 Firefox 2.1 (.NET CLR 3.5.30729) Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1b1) Gecko/20061110 Firefox/2.0b3 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1) Gecko/20060918 Firefox/2.0b2 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1) Gecko/20060916 Firefox/2.0b2 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.12) Gecko/20080208 Firefox/2.0b2 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1b2) Gecko/20060821 Firefox/2.0b2 Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.1) Gecko/20061204 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1) Gecko/20060918 Firefox/2.0b2 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1b2) Gecko/20060821 Firefox/2.0b2 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1b2) Gecko/20060821 Firefox/2.0b2 Mozilla/5.0 (BeOS; U; BeOS BePC; en-US; rv:1.8.1b2) Gecko/20060901 Firefox/2.0b2 Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.1b1) Gecko/20060710 Firefox/2.0b1 Mozilla/5.0 (X11; U; Linux i686; en_US; rv:1.8.1b1) Gecko/20060813 Firefox/2.0b1 Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1b1) Gecko/20060710 Firefox/2.0b1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1b1) Gecko/20060710 Firefox/2.0b1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1b1) Gecko/20060707 Firefox/2.0b1 Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1b1) Gecko/20060710 Firefox/2.0b1 Mozilla/5.0 (Windows; U; Windows NT 5.1; ca; rv:1.8.1b1) Gecko/20060710 Firefox/2.0b1 Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1b1) Gecko/20060710 Firefox/2.0b1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1b1) Gecko/20060710 Firefox/2.0b1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1b1) Gecko/20060707 Firefox/2.0b1 Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1b1) Gecko/20060710 Firefox/2.0b1 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1) Gecko/20061001 Firefox/2.0b (Swiftfox) Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8) Gecko/20060321 Firefox/2.0a1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20060319 Firefox/2.0a1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8) Gecko/20060322 Firefox/2.0a1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8) Gecko/20060320 Firefox/2.0a1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.9.9 Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.4 Mozilla/5.0 (X11; U; SunOS sun4v; es-ES; rv:1.8.1.9) Gecko/20071127 Firefox/2.0.0.9 Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.1.9) Gecko/20071102 Firefox/2.0.0.9 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9 Mozilla/5.0 (X11; U; Linux i686; nl-NL; rv:1.8.1.9) Gecko/20071105 Firefox/2.0.0.9 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.9) Gecko/20071105 Firefox/2.0.0.9 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.9) Gecko/20071105 Fedora/2.0.0.9-1.fc7 Firefox/2.0.0.9 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.9) Gecko/20071103 Firefox/2.0.0.9 (Swiftfox) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.9) Gecko/20071103 Firefox/2.0.0.9 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.9) Gecko/20071025 FreeBSD/i386 Firefox/2.0.0.9 Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.9) Gecko/20071105 Firefox/2.0.0.9 Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9 Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-GB; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9 Mozilla/5.0 (Windows; Windows NT 5.1; en-US; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9 Mozilla/5.0 (Windows; U; Windows NT 6.0; tr; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9 Mozilla/5.0 (Windows; U; Windows NT 6.0; it; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9 Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9 Mozilla/5.0 (Windows; U; Windows NT 5.2; da; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9 Mozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9 Mozilla/5.0 (Windows; U; Windows NT 5.1; sl; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.17pre) Gecko/20080715 Firefox/2.0.0.8pre Mozilla/5.0 (X11; U; x86_64 Linux; en_US; rv:1.8.16) Gecko/20071015 Firefox/2.0.0.8 Mozilla/5.0 (X11; U; Windows NT i686; fr; rv:1.9.0.1) Gecko/2008070206 Firefox/2.0.0.8 Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.8.1.8) Gecko/20071022 Ubuntu/7.10 (gutsy) Firefox/2.0.0.8 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.8) Gecko/20071022 Ubuntu/7.10 (gutsy) Firefox/2.0.0.8 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.8) Gecko/20071015 SUSE/2.0.0.8-1.1 Firefox/2.0.0.8 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.12) Gecko/20080129 Firefox/2.0.0.8 (Debian-2.0.0.12-1) Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.8.1.8) Gecko/20071022 Ubuntu/7.10 (gutsy) Firefox/2.0.0.8 Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.1.8) Gecko/20071022 Ubuntu/7.10 (gutsy) Firefox/2.0.0.8 Mozilla/5.0 (X11; U; Linux i686; hu; rv:1.8.1.8) Gecko/20071022 Ubuntu/7.10 (gutsy) Firefox/2.0.0.8 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.1) Gecko/2008070206 Firefox/2.0.0.8 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.8) Gecko/20071030 Fedora/2.0.0.8-2.fc8 Firefox/2.0.0.8 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.8) Gecko/20071022 Ubuntu/7.10 (gutsy) Firefox/2.0.0.8 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.8) Gecko/20071201 Firefox/2.0.0.8 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.8) Gecko/20071022 Firefox/2.0.0.8 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.8) Gecko/20071019 Fedora/2.0.0.8-1.fc7 Firefox/2.0.0.8 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.8) Gecko/20071008 FreeBSD/i386 Firefox/2.0.0.8 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.8) Gecko/20071004 Firefox/2.0.0.8 (Debian-2.0.0.8-1) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.8) Gecko/20061201 Firefox/2.0.0.8 Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.8) Gecko/20071022 Ubuntu/7.10 (gutsy) Firefox/2.0.0.8 Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.8) Gecko/20071008 Ubuntu/7.10 (gutsy) Firefox/2.0.0.8 Mozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.8.1.7) Gecko/20070930 Firefox/2.0.0.7 Mozilla/5.0 (X11; U; Linux x86_64; pl; rv:1.8.1.7) Gecko/20071009 Firefox/2.0.0.7 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.7) Gecko/20070918 Firefox/2.0.0.7 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7 Mozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.8.1.6) Gecko/20070914 Firefox/2.0.0.7 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.7) Gecko/20070923 Firefox/2.0.0.7 (Swiftfox) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.7) Gecko/20070921 Firefox/2.0.0.7 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7 (Ubuntu-feisty) Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.6) Gecko/20070914 Firefox/2.0.0.7 Mozilla/5.0 (X11; U; Linux i386; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7 Mozilla/5.0 (X11; U; Linux Gentoo; pl-PL; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7 Mozilla/5.0 (X11; U; Linux amd64; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7 Mozilla/5.0 (X11; U; Gentoo Linux x86_64; pl-PL; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7 Mozilla/5.0 (Windows; U; Windows NT 6.0; it-IT; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7 Mozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7 Mozilla/5.0 (Windows; U; Windows NT 6.0; en_US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.7 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7 Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7 Mozilla/5.0 (Windows; U; Windows NT 5.2; nl; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7 Mozilla/5.0 (X11; U; SunOS sun4u; pl-PL; rv:1.8.1.6) Gecko/20071217 Firefox/2.0.0.6 Mozilla/5.0 (X11; U; SunOS sun4u; de-DE; rv:1.8.1.6) Gecko/20070805 Firefox/2.0.0.6 Mozilla/5.0 (X11; U; SunOS i86pc; en-ZW; rv:1.8.1.6) Gecko/20071125 Firefox/2.0.0.6 Mozilla/5.0 (X11; U; OpenBSD sparc64; en-US; rv:1.8.1.6) Gecko/20070816 Firefox/2.0.0.6 Mozilla/5.0 (X11; U; OpenBSD sparc64; en-AU; rv:1.8.1.6) Gecko/20071225 Firefox/2.0.0.6 Mozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.8.1.6) Gecko/20070819 Firefox/2.0.0.6 Mozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.8.1.4) Gecko/20070704 Firefox/2.0.0.6 Mozilla/5.0 (X11; U; OpenBSD i386; de-DE; rv:1.8.1.6) Gecko/20080429 Firefox/2.0.0.6 Mozilla/5.0 (X11; U; OpenBSD amd64; en-US; rv:1.8.1.6) Gecko/20070817 Firefox/2.0.0.6 Mozilla/5.0 (X11; U; NetBSD sparc64; fr-FR; rv:1.8.1.6) Gecko/20070822 Firefox/2.0.0.6 Mozilla/5.0 (X11; U; NetBSD alpha; en-US; rv:1.8.1.6) Gecko/20080115 Firefox/2.0.0.6 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.6) Gecko/20061201 Firefox/2.0.0.6 (Ubuntu-feisty) Mozilla/5.0 (X11; U; Linux x86_64; de-DE; rv:1.8.1.6) Gecko/20070802 Firefox/2.0.0.6 Mozilla/5.0 (X11; U; Linux x86; en-US; rv:1.8.1.6) Gecko/20061201 Firefox/2.0.0.6 (Ubuntu-feisty) Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6 Mozilla/5.0 (X11; U; Linux i686; ja; rv:1.8.1.6) Gecko/20061201 Firefox/2.0.0.6 (Ubuntu-feisty) Mozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.8.1.6) Gecko/20070803 Firefox/2.0.0.6 (Swiftfox) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070831 Firefox/2.0.0.6 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070807 Firefox/2.0.0.6 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070804 Firefox/2.0.0.6 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.5) Gecko/20061201 Firefox/2.0.0.5 (Ubuntu-feisty) Mozilla/5.0 (X11; U; Linux i686; Ubuntu 7.04; de-CH; rv:1.8.1.5) Gecko/20070309 Firefox/2.0.0.5 Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.1.5) Gecko/20070718 Fedora/2.0.0.5-1.fc7 Firefox/2.0.0.5 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008100320 Firefox/2.0.0.5 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.5) Gecko/20070728 Firefox/2.0.0.5 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.5) Gecko/20070725 Firefox/2.0.0.5 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.5) Gecko/20070719 Firefox/2.0.0.5 (Debian-2.0.0.5-0etch1) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.5) Gecko/20070718 Fedora/2.0.0.5-1.fc7 Firefox/2.0.0.5 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.5) Gecko/20061201 Firefox/2.0.0.5 (Ubuntu-feisty) Mozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.5) Gecko/20060911 SUSE/2.0.0.5-1.2 Firefox/2.0.0.5 Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.5) Gecko/20070718 Fedora/2.0.0.5-1.fc7 Firefox/2.0.0.5 Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-GB; rv:1.8.1.5) Gecko/20070718 Fedora/2.0.0.5-1.fc7 Firefox/2.0.0.5 Mozilla/5.0 (Windows; U; Windows NT 6.0; zh-TW; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5 Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5 Mozilla/5.0 (Windows; U; Windows NT 5.2; de; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5 Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5 Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4pre) Gecko/20070509 Firefox/2.0.0.4pre (Swiftfox) Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.1.4) Gecko/20070622 Firefox/2.0.0.4 Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.1.4) Gecko/20070531 Firefox/2.0.0.4 Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.8.1.4) Gecko/20070622 Firefox/2.0.0.4 Mozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.8.1.4) Gecko/20070704 Firefox/2.0.0.4 Mozilla/5.0 (X11; U; Linux x86_64; pl; rv:1.8.1.4) Gecko/20070611 Firefox/2.0.0.4 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.4) Gecko/20070627 Firefox/2.0.0.4 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.4) Gecko/20070604 Firefox/2.0.0.4 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.4) Gecko/20070529 SUSE/2.0.0.4-6.1 Firefox/2.0.0.4 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.4) Gecko/20061201 Firefox/2.0.0.4 (Ubuntu-feisty) Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.4) Gecko/20061201 Firefox/2.0.0.4 (Ubuntu-feisty) Mozilla/5.0 (X11; U; Linux i686; it; rv:1.8.1.4) Gecko/20070621 Firefox/2.0.0.4 Mozilla/5.0 (X11; U; Linux i686; it; rv:1.8.1.4) Gecko/20060601 Firefox/2.0.0.4 (Ubuntu-edgy) Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4 Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.1.4) Gecko/20061201 Firefox/2.0.0.4 (Ubuntu-feisty) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4) Gecko/20070602 Firefox/2.0.0.4 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4) Gecko/20070531 Firefox/2.0.0.4 (Swiftfox) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4) Gecko/20070531 Firefox/2.0.0.4 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4) Gecko/20070530 Fedora/2.0.0.4-1.fc7 Firefox/2.0.0.4 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4 (Kubuntu) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.3pre) Gecko/20070307 Firefox/2.0.0.3pre (Swiftfox) Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.3C Mozilla/5.0 (X11; U; SunOS sun4v; en-US; rv:1.8.1.3) Gecko/20070321 Firefox/2.0.0.3 Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.1.3) Gecko/20070321 Firefox/2.0.0.3 Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.8.1.3) Gecko/20070423 Firefox/2.0.0.3 Mozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.8.1.3) Gecko/20070505 Firefox/2.0.0.3 Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.8.1.3) Gecko/20070322 Firefox/2.0.0.3 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.5) Gecko/2008122010 Firefox/2.0.0.3 (Debian-3.0.5-1) Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.3) Gecko/20070415 Firefox/2.0.0.3 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.3) Gecko/20070324 Firefox/2.0.0.3 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.3) Gecko/20070322 Firefox/2.0.0.3 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.3) Gecko/20061201 Firefox/2.0.0.3 (Ubuntu-feisty) Mozilla/5.0 (X11; U; Linux ppc; en-US; rv:1.8.1.3) Gecko/20070310 Firefox/2.0.0.3 (Debian-2.0.0.3-1) Mozilla/5.0 (X11; U; Linux i686; zh-TW; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3 Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.1.3) Gecko/20061201 Firefox/2.0.0.3 (Ubuntu-feisty) Mozilla/5.0 (X11; U; Linux i686; nl; rv:1.8.1.3) Gecko/20060601 Firefox/2.0.0.3 (Ubuntu-edgy) Mozilla/5.0 (X11; U; Linux i686; nb-NO; rv:1.8.1.3) Gecko/20070310 Firefox/2.0.0.3 (Debian-2.0.0.3-1) Mozilla/5.0 (X11; U; Linux i686; ja; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3 Mozilla/5.0 (X11; U; Linux i686; it; rv:1.8.1.3) Gecko/20070410 Firefox/2.0.0.3 Mozilla/5.0 (X11; U; Linux i686; it; rv:1.8.1.3) Gecko/20070406 Firefox/2.0.0.3 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.3) Gecko/20070310 Firefox/2.0.0.3 (Debian-2.0.0.3-2) Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3 Mozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.8.1.2pre) Gecko/20061023 SUSE/2.0.0.1-0.1 Firefox/2.0.0.2pre Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.2pre) Gecko/20061023 SUSE/2.0.0.1-0.1 Firefox/2.0.0.2pre Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070118 Firefox/2.0.0.2pre Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.22pre) Gecko/20090327 Ubuntu/8.04 (hardy) Firefox/2.0.0.22pre Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.22pre) Gecko/20090327 Ubuntu/7.10 (gutsy) Firefox/2.0.0.22pre Mozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.22pre) Gecko/20090327 Ubuntu/7.10 (gutsy) Firefox/2.0.0.22pre Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.21 Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.1.20) Gecko/20090108 Firefox/2.0.0.20 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.20) Gecko/20081217 Firefox(2.0.0.20) Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20 Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.20) Gecko/20090206 Firefox/2.0.0.20 Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20 Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.20) Gecko/20090413 Firefox/2.0.0.20 Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.20) Gecko/20090225 Firefox/2.0.0.20 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20 GTB5 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20 Mozilla/5.0 (Windows; U; Windows NT 6.0; zh-TW; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20 Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20 Mozilla/5.0 (Windows; U; Windows NT 6.0; ko; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20 ( .NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; cs; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 5.2; en-GB; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20 Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.1.2) Gecko/20070226 Firefox/2.0.0.2 Mozilla/5.0 (X11; U; Linux; en-US; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2 Mozilla/5.0 (X11; U; Linux x86_64; it; rv:1.8.1.2) Gecko/20060601 Firefox/2.0.0.2 (Ubuntu-edgy) Mozilla/5.0 (X11; U; Linux i686; sv-SE; rv:1.8.1.2) Gecko/20061023 SUSE/2.0.0.2-1.1 Firefox/2.0.0.2 Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.1.2) Gecko/20070220 Firefox/2.0.0.2 Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.1.2) Gecko/20060601 Firefox/2.0.0.2 (Ubuntu-edgy) Mozilla/5.0 (X11; U; Linux i686; hu; rv:1.8.1.2) Gecko/20070220 Firefox/2.0.0.2 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.2) Gecko/20060601 Firefox/2.0.0.2 (Ubuntu-edgy) Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.1.2) Gecko/20070225 Firefox/2.0.0.2 (Swiftfox) Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.1.2) Gecko/20070220 Firefox/2.0.0.2 Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.1.2) Gecko/20060601 Firefox/2.0.0.2 (Ubuntu-edgy) Mozilla/5.0 (X11; U; Linux i686; en; rv:1.8.1.2) Gecko/20070220 Firefox/2.0.0.2 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.2) Gecko/20070317 Firefox/2.0.0.2 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.2) Gecko/20070314 Firefox/2.0.0.2 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.2) Gecko/20070226 Firefox/2.0.0.2 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.2) Gecko/20070225 Firefox/2.0.0.2 (Swiftfox) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.2) Gecko/20070221 SUSE/2.0.0.2-6.1 Firefox/2.0.0.2 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.2) Gecko/20070220 Firefox/2.0.0.2 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.2) Gecko/20061201 Firefox/2.0.0.2 (Ubuntu-feisty) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.2) Gecko/20061201 Firefox/2.0.0.2 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.19) Gecko/20081213 SUSE/2.0.0.19-0.1 Firefox/2.0.0.19 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.19) Gecko/20081216 Ubuntu/7.10 (gutsy) Firefox/2.0.0.19 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081230 Firefox/2.0.0.19 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081216 Fedora/2.0.0.19-1.fc8 Firefox/2.0.0.19 pango-text Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081213 SUSE/2.0.0.19-0.1 Firefox/2.0.0.19 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.19) Gecko/20081213 SUSE/2.0.0.19-0.1 Firefox/2.0.0.19 Mozilla/5.0 (Windows; U; Windows NT 6.0; zh-CN; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.19 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.19 Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.19) Gecko/20081201 Firefox/2.0.0.19 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.18) Gecko/20081113 Ubuntu/8.04 (hardy) Firefox/2.0.0.18 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.18) Gecko/20081112 Fedora/2.0.0.18-1.fc8 Firefox/2.0.0.18 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.18) Gecko/20081113 Ubuntu/8.04 (hardy) Firefox/2.0.0.18 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.18) Gecko/20081112 Fedora/2.0.0.18-1.fc8 Firefox/2.0.0.18 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.18) Gecko/20080921 SUSE/2.0.0.18-0.1 Firefox/2.0.0.18 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.18) Gecko/20081029 Firefox/2.0.0.18 Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.18) Gecko/20081029 Firefox/2.0.0.18 Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.18) Gecko/20081029 Firefox/2.0.0.18 Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.18) Gecko/20081029 Firefox/2.0.0.18 Mozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.8.1.18) Gecko/20081029 Firefox/2.0.0.18 Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; en-US; rv:1.9.0.4) Gecko/20081029 Firefox/2.0.0.18 Mozilla/5.0 (X11; U; Linux sparc64; en-US; rv:1.8.1.17) Gecko/20081108 Firefox/2.0.0.17 Mozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.8.1.17) Gecko/20080829 Firefox/2.0.0.17 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.17) Gecko/20080924 Ubuntu/8.04 (hardy) Firefox/2.0.0.17 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.17) Gecko/20080922 Ubuntu/7.10 (gutsy) Firefox/2.0.0.17 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.17) Gecko/20080921 SUSE/2.0.0.17-1.2 Firefox/2.0.0.17 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.17) Gecko/20080829 Firefox/2.0.0.17 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.17) Gecko/20080703 Mandriva/2.0.0.17-1.1mdv2008.1 (2008.1) Firefox/2.0.0.17 Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.17) Gecko/20080829 Firefox/2.0.0.17 Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.8.1.17) Gecko/20080829 Firefox/2.0.0.17 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.17 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.17 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.17 Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.8.1.17) Gecko/20080829 Firefox/2.0.0.17 Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.17) Gecko/20080829 Firefox/2.0.0.17 Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.17) Gecko/20080829 Firefox/2.0.0.17 Mozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.8.1.17) Gecko/20080829 Firefox/2.0.0.17 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/2.0.0.17 Mozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.8.1.17) Gecko/20080829 Firefox/2.0.0.17 Mozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.8.1.17) Gecko/20080829 Firefox/2.0.0.17 Mozilla/5.0 (U; Windows NT 5.1; en-GB; rv:1.8.1.17) Gecko/20080808 Firefox/2.0.0.17 Mozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.8.1.16) Gecko/20080812 Firefox/2.0.0.16 Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.8.1.16) Gecko/20080715 Fedora/2.0.0.16-1.fc8 Firefox/2.0.0.16 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.16) Gecko/20080719 Firefox/2.0.0.16 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.16) Gecko/20080718 Ubuntu/8.04 (hardy) Firefox/2.0.0.16 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.16) Gecko/20080722 Firefox/2.0.0.16 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.16) Gecko/20080718 Ubuntu/8.04 (hardy) Firefox/2.0.0.16 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.16) Gecko/20080715 Ubuntu/7.10 (gutsy) Firefox/2.0.0.16 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.16) Gecko/20080715 Firefox/2.0.0.16 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.16) Gecko/20080715 Fedora/2.0.0.16-1.fc8 Firefox/2.0.0.16 Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.16) Gecko/20080715 Ubuntu/7.10 (gutsy) Firefox/2.0.0.16 Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.16) Gecko/20080718 Ubuntu/8.04 (hardy) Firefox/2.0.0.16 Mozilla/5.0 (X11; U; Linux i686 (x86_64); fr; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16 Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.16) Gecko/20080716 Firefox/2.0.0.16 Mozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16 Mozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16 Mozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16 Mozilla/5.0 (Windows; U; Windows NT 6.0; es-ES; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.15) Gecko/20080702 Ubuntu/8.04 (hardy) Firefox/2.0.0.15 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.15) Gecko/20080702 Ubuntu/8.04 (hardy) Firefox/2.0.0.15 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.15) Gecko/20061201 Firefox/2.0.0.15 (Ubuntu-feisty) Mozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15 Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.1.2) Gecko/20090729 Firefox/2.0.0.15 Mozilla/5.0 (Windows; U; Windows NT 5.2; sk; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15 Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15 Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15 Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; de; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15 Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.1.14) Gecko/20080418 Firefox/2.0.0.14 Mozilla/5.0 (X11; U; Linux x86_64; hu; rv:1.8.1.14) Gecko/20080416 Fedora/2.0.0.14-1.fc7 Firefox/2.0.0.14 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.6) Gecko/2010012717 Firefox/2.0.0.14 Mozilla/5.0 (X11; U; Linux ppc64; en-US; rv:1.8.1.14) Gecko/20080418 Ubuntu/7.10 (gutsy) Firefox/2.0.0.14 Mozilla/5.0 (X11; U; Linux i686; it; rv:1.8.1.14) Gecko/20080420 Firefox/2.0.0.14 Mozilla/5.0 (X11; U; Linux i686; it; rv:1.8.1.14) Gecko/20080416 Fedora/2.0.0.14-1.fc7 Firefox/2.0.0.14 Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.1.14) Gecko/20080419 Ubuntu/8.04 (hardy) Firefox/2.0.0.14 Mozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.14) Gecko/20080525 Firefox/2.0.0.14 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.14) Gecko/20080508 Ubuntu/8.04 (hardy) Firefox/2.0.0.14 (Linux Mint) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.14) Gecko/20080428 Firefox/2.0.0.14 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.14) Gecko/20080423 Firefox/2.0.0.14 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.14) Gecko/20080417 Firefox/2.0.0.14 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.14) Gecko/20080416 Fedora/2.0.0.14-1.fc8 Firefox/2.0.0.14 pango-text Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.14) Gecko/20080410 SUSE/2.0.0.14-0.4 Firefox/2.0.0.14 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.14) Gecko/20061201 Firefox/2.0.0.14 (Ubuntu-feisty) Mozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.14) Gecko/20080418 Ubuntu/7.10 (gutsy) Firefox/2.0.0.14 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.14) Gecko/20080410 SUSE/2.0.0.14-0.1 Firefox/2.0.0.14 Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.14) Gecko/20080417 Firefox/2.0.0.14 User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13 Mozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.8.1.13) Gecko/20080325 Ubuntu/7.10 (gutsy) Firefox/2.0.0.13 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.13) Gecko/20080208 Mandriva/2.0.0.13-1mdv2008.1 (2008.1) Firefox/2.0.0.13 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.13) Gecko/20080330 Ubuntu/7.10 (gutsy) Firefox/2.0.0.13 (Linux Mint) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.13) Gecko/20080325 Firefox/2.0.0.13 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.13) Gecko/20080316 SUSE/2.0.0.13-1.1 Firefox/2.0.0.13 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.13) Gecko/20080316 SUSE/2.0.0.13-0.1 Firefox/2.0.0.13 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.13) Gecko/20061201 Firefox/2.0.0.13 (Ubuntu-feisty) Mozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.13) Gecko/20080325 Ubuntu/7.10 (gutsy) Firefox/2.0.0.13 Mozilla/5.0 (X11; U; Linux i686; bg; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13 Mozilla/5.0 (X11; U; Linux i686 Gentoo; en-US; rv:1.8.1.13) Gecko/20080413 Firefox/2.0.0.13 (Gentoo Linux) Mozilla/5.0 (Windows; U; Windows NT 6.0; es-ES; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.13 Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-GB; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13 Mozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13 Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.13 Mozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/2.0.0.13 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.13 Mozilla/5.0 (compatible; N; Windows NT 5.1; en;) Gecko/20080325 Firefox/2.0.0.13 Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.12pre) Gecko/20080122 Firefox/2.0.0.12pre Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12; MEGAUPLOAD 2.0 Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.1.12) Gecko/20080210 Firefox/2.0.0.12 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.1) Gecko/2008072610 Firefox/2.0.0.12 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.12) Gecko/20080214 Firefox/2.0.0.12 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.12) Gecko/20080203 SUSE/2.0.0.12-0.1 Firefox/2.0.0.12 Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.8.1.12) Gecko/20080207 Ubuntu/7.10 (gutsy) Firefox/2.0.0.12 Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.8.1.12) Gecko/20080203 SUSE/2.0.0.12-0.1 Firefox/2.0.0.12 Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.8.1.12) Gecko/20080208 Fedora/2.0.0.12-1.fc8 Firefox/2.0.0.12 Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.8.1.12) Gecko/20080203 SUSE/2.0.0.12-6.1 Firefox/2.0.0.12 Mozilla/5.0 (X11; U; Linux x86; sv-SE; rv:1.8.1.12) Gecko/20080207 Ubuntu/8.04 (hardy) Firefox/2.0.0.12 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.12) Gecko/20080208 Fedora/2.0.0.12-1.fc8 Firefox/2.0.0.12 Mozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.8.1.6) Gecko/20080208 Ubuntu/7.10 (gutsy) Firefox/2.0.0.12 Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.1.12) Gecko/20080213 Firefox/2.0.0.12 Mozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.8.1.12) Gecko/20080207 Ubuntu/7.10 (gutsy) Firefox/2.0.0.12 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.14) Gecko/20080419 Ubuntu/8.04 (hardy) Firefox/2.0.0.12 MEGAUPLOAD 1.0 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.12) Gecko/20080208 Firefox/2.0.0.12 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.12) Gecko/20080208 Fedora/2.0.0.12-1.fc8 Firefox/2.0.0.12 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12 Mnenhy/0.7.5.666 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.12) Gecko/20080129 Firefox/2.0.0.12 (Debian-2.0.0.12-0etch1) Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.12) Gecko/20080203 SUSE/2.0.0.12-2.1 Firefox/2.0.0.12 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.12) Gecko/20080207 Ubuntu/7.10 (gutsy) Firefox/2.0.0.12 Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.1.11) Gecko/20080118 Firefox/2.0.0.11 Mozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.8.1.4) Gecko/20071127 Firefox/2.0.0.11 Mozilla/5.0 (X11; U; Linux x86_64; zh-TW; rv:1.8.1.11) Gecko/20071204 Ubuntu/7.10 (gutsy) Firefox/2.0.0.11 Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.11) Gecko/20071201 Firefox/2.0.0.11 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.11) Gecko/20070914 Mandriva/2.0.0.11-1.1mdv2008.0 (2008.0) Firefox/2.0.0.11 Mozilla/5.0 (X11; U; Linux i686; ru-RU; rv:1.8.1.11) Gecko/20071201 Firefox/2.0.0.11 Mozilla/5.0 (X11; U; Linux i686; pt-PT; rv:1.8.1.11) Gecko/20071204 Ubuntu/7.10 (gutsy) Firefox/2.0.0.11 Mozilla/5.0 (X11; U; Linux i686; ja; rv:1.8.1.11) Gecko/20071128 Firefox/2.0.0.11 (Debian-2.0.0.11-1) Mozilla/5.0 (X11; U; Linux i686; ja; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11 Mozilla/5.0 (X11; U; Linux i686; ja-JP; rv:1.8.1.11) Gecko/20071204 Ubuntu/7.10 (gutsy) Firefox/2.0.0.11 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.8) Gecko/20071022 Ubuntu/7.10 (gutsy) Firefox/2.0.0.11 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.6) Gecko/20071008 Ubuntu/7.10 (gutsy) Firefox/2.0.0.11 Mozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.8.1.11) Gecko/20071204 Ubuntu/7.10 (gutsy) Firefox/2.0.0.11 Mozilla/5.0 (X11; U; Linux i686; en; rv:1.8.1.11) Gecko/20071216 Firefox/2.0.0.11 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.11) Gecko/20080201 Firefox/2.0.0.11 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.11) Gecko/20071217 Firefox/2.0.0.11 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.11) Gecko/20071204 Ubuntu/7.10 (gutsy) Firefox/2.0.0.11 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.11) Gecko/20071204 Firefox/2.0.0.11 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.10) Gecko/20061201 Firefox/2.0.0.10 (Ubuntu-feisty) Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.1.10) Gecko/20071213 Fedora/2.0.0.10-3.fc8 Firefox/2.0.0.10 Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.1.10) Gecko/20071128 Fedora/2.0.0.10-2.fc7 Firefox/2.0.0.10 Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.1.10) Gecko/20071126 Ubuntu/7.10 (gutsy) Firefox/2.0.0.10 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.17) Gecko/20080827 Firefox/2.0.0.10 (Debian-2.0.0.17-0etch1) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.10) Gecko/20071213 Fedora/2.0.0.10-3.fc8 Firefox/2.0.0.10 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.10) Gecko/20071203 Ubuntu/7.10 (gutsy) Firefox/2.0.0.10 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.10) Gecko/20071128 Fedora/2.0.0.10-2.fc7 Firefox/2.0.0.10 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.10) Gecko/20071126 Ubuntu/7.10 (gutsy) Firefox/2.0.0.10 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.10) Gecko/20071115 Firefox/2.0.0.10 (Debian-2.0.0.10-0etch1) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.10) Gecko/20071115 Firefox/2.0.0.10 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.10) Gecko/20071015 SUSE/2.0.0.10-0.2 Firefox/2.0.0.10 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.10) Gecko/20061201 Firefox/2.0.0.10 (Ubuntu-feisty) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.10) Gecko/20060601 Firefox/2.0.0.10 (Ubuntu-edgy) Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.10) Gecko/20071126 Ubuntu/7.10 (gutsy) Firefox/2.0.0.10 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.10) Gecko/20071126 Ubuntu/7.10 (gutsy) Firefox/2.0.0.10 Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.10) Gecko/20071115 Firefox/2.0.0.10 Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.10) Gecko/20071015 SUSE/2.0.0.10-0.2 Firefox/2.0.0.10 Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.10) Gecko/20071015 SUSE/2.0.0.10-0.1 Firefox/2.0.0.10 Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.10 Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.8.1.1) Gecko/20060601 Firefox/2.0.0.1 (Ubuntu-edgy) Mozilla/5.0 (X11; U; Linux x86_64; fi-FI; rv:1.8.1.1) Gecko/20060601 Firefox/2.0.0.1 (Ubuntu-edgy) Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.1) Gecko/20060601 Firefox/2.0.0.1 (Ubuntu-edgy) Mozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.8.1.1) Gecko/20061208 Firefox/2.0.0.1 Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1 (Ubuntu-edgy) Mozilla/5.0 (X11; U; Linux i686; nl; rv:1.8.1.1) Gecko/20070311 Firefox/2.0.0.1 Mozilla/5.0 (X11; U; Linux i686; hu; rv:1.8.1.1) Gecko/20061208 Firefox/2.0.0.1 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.1) Gecko/20060601 Firefox/2.0.0.1 (Ubuntu-edgy) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.3) Gecko/20061201 Firefox/2.0.0.1 (Ubuntu-feisty) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.1) Gecko/20070224 Firefox/2.0.0.1 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.1) Gecko/20070110 Firefox/2.0.0.1 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.1) Gecko/20061220 Firefox/2.0.0.1 (Swiftfox) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.1) Gecko/20061208 Firefox/2.0.0.1 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.1) Gecko/20061205 Firefox/2.0.0.1 (Debian-2.0.0.1+dfsg-2) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.1) Gecko/20061205 Firefox/2.0.0.1 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.1) Gecko/20060601 Firefox/2.0.0.1 (Ubuntu-edgy) Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.2pre) Gecko/20061023 Firefox/2.0.0.1 Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.1) Gecko/20061208 Firefox/2.0.0.1 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.1) Gecko/20061220 Firefox/2.0.0.1 (Swiftfox) Mozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.1) Gecko/20061205 Firefox/2.0.0.1 (Debian-2.0.0.1+dfsg-2) Mozilla/5.0 (X11; U; SunOS sun4u; de-DE; rv:1.9.1b4) Gecko/20090428 Firefox/2.0.0.0 Mozilla/5.0 (X11; Linux x86_64; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Mozilla/5.0 (X11; Linux i686; U; pl; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.4) Gecko/20070509 Firefox/2.0.0 Mozilla/5.0 (Windows NT 6.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Mozilla/5.0 (Windows NT 6.0; U; tr; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Mozilla/5.0 (Windows NT 6.0; U; sv; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Mozilla/5.0 (Windows NT 6.0; U; hu; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Mozilla/5.0 (Macintosh; PPC Mac OS X; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Mozilla/5.0 (Linux i686; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Mozilla/5.0 (X11;U;Linux i686;en-US;rv:1.8.1) Gecko/2006101022 Firefox/2.0 Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.1) Gecko/20061228 Firefox/2.0 Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.1) Gecko/20061024 Firefox/2.0 Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.8.1) Gecko/20061211 Firefox/2.0 Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.8.1) Gecko/20061024 Firefox/2.0 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1) Gecko/20061202 Firefox/2.0 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1) Gecko/20061128 Firefox/2.0 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1) Gecko/20061122 Firefox/2.0 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1) Gecko/20061023 SUSE/2.0-37 Firefox/2.0 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1) Gecko/20060601 Firefox/2.0 (Ubuntu-edgy) Mozilla/5.0 (X11; U; Linux x86-64; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0 Mozilla/5.0 (X11; U; Linux i686; zh-TW; rv:1.8.1) Gecko/20061010 Firefox/2.0 Mozilla/5.0 (X11; U; Linux i686; tr-TR; rv:1.8.1) Gecko/20061023 SUSE/2.0-30 Firefox/2.0 Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.1) Gecko/20061127 Firefox/2.0 (Gentoo Linux) Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.1) Gecko/20061127 Firefox/2.0 Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.1) Gecko/20061024 Firefox/2.0 (Swiftfox) Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.1) Gecko/20061010 Firefox/2.0 Ubuntu Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.1) Gecko/20061010 Firefox/2.0 Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.1) Gecko/20061003 Firefox/2.0 Ubuntu Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.1) Gecko/20061010 Firefox/2.0 Mozilla/5.0 (Windows; U; Windows NT 5.0; ; rv:1.8.0.7) Gecko/20060917 Firefox/1.9.0.1 Mozilla/5.0 (Windows; U; Windows NT 5.0; ; rv:1.8.0.10) Gecko/20070216 Firefox/1.9.0.1 Mozilla/5.0 (Windows; U; Windows NT 5.0; ; rv:1.8.0.1) Gecko/20060111 Firefox/1.9.0 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9a1) Gecko/20060112 Firefox/1.6a1 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a1) Gecko/20060217 Firefox/1.6a1 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a1) Gecko/20060117 Firefox/1.6a1 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a1) Gecko/20051215 Firefox/1.6a1 (Swiftfox) Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9a1) Gecko/20060127 Firefox/1.6a1 Mozilla/5.0 (Windows; U; Windows NT 5.2 x64; en-US; rv:1.9a1) Gecko/20060214 Firefox/1.6a1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20060323 Firefox/1.6a1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20060121 Firefox/1.6a1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20051220 Firefox/1.6a1 Mozilla/5.0 (Windows NT 5.1; rv:1.9a1) Gecko/20060217 Firefox/1.6a1 Mozilla/5.0 (BeOS; U; BeOS BePC; en-US; rv:1.9a1) Gecko/20051002 Firefox/1.6a1 Mozilla/5.0 (X11; U; OpenBSD amd64; en-US; rv:1.8.0.9) Gecko/20070101 Firefox/1.5.0.9 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.9) Gecko/20070126 Ubuntu/dapper-security Firefox/1.5.0.9 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.9) Gecko/20071025 Firefox/1.5.0.9 (Debian-2.0.0.9-2) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.9) Gecko/20070316 CentOS/1.5.0.9-10.el5.centos Firefox/1.5.0.9 pango-text Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.9) Gecko/20070126 Ubuntu/dapper-security Firefox/1.5.0.9 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.9) Gecko/20070102 Ubuntu/dapper-security Firefox/1.5.0.9 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.9) Gecko/20061221 Fedora/1.5.0.9-1.fc5 Firefox/1.5.0.9 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.9) Gecko/20061219 Fedora/1.5.0.9-1.fc6 Firefox/1.5.0.9 pango-text Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.9) Gecko/20061215 Red Hat/1.5.0.9-0.1.el4 Firefox/1.5.0.9 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.9) Gecko/20060911 SUSE/1.5.0.9-3.2 Firefox/1.5.0.9 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.9) Gecko/20060911 SUSE/1.5.0.9-0.2 Firefox/1.5.0.9 Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.0.9) Gecko/20061219 Fedora/1.5.0.9-1.fc6 Firefox/1.5.0.9 pango-text Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9 Mozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9 Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9 Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9 Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9 Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9 Mozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.8.0.8) Gecko/20061110 Firefox/1.5.0.8 Mozilla/5.0 (X11; U; Linux i686; sv-SE; rv:1.8.0.8) Gecko/20061108 Fedora/1.5.0.8-1.fc5 Firefox/1.5.0.8 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.0.8) Gecko/20061213 Firefox/1.5.0.8 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.8) Gecko/20061115 Ubuntu/dapper-security Firefox/1.5.0.8 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.8) Gecko/20061110 Firefox/1.5.0.8 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.8) Gecko/20061107 Fedora/1.5.0.8-1.fc6 Firefox/1.5.0.8 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.8) Gecko/20060911 SUSE/1.5.0.8-0.2 Firefox/1.5.0.8 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.8) Gecko/20060802 Mandriva/1.5.0.8-1.1mdv2007.0 (2007.0) Firefox/1.5.0.8 Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.8.0.8) Gecko/20061115 Ubuntu/dapper-security Firefox/1.5.0.8 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.8.0.8) Gecko/20060911 SUSE/1.5.0.8-0.2 Firefox/1.5.0.8 Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8 Mozilla/5.0 (X11; U; Linux Gentoo i686; pl; rv:1.8.0.8) Gecko/20061219 Firefox/1.5.0.8 Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.0.8) Gecko/20061210 Firefox/1.5.0.8 Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.8.0.8) Gecko/20061116 Firefox/1.5.0.8 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8 Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8 Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.0.7) Gecko/20060915 Firefox/1.5.0.7 Mozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.8.0.7) Gecko/20061017 Firefox/1.5.0.7 Mozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.8.0.7) Gecko/20060920 Firefox/1.5.0.7 Mozilla/5.0 (X11; U; NetBSD amd64; fr-FR; rv:1.8.0.7) Gecko/20061102 Firefox/1.5.0.7 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.7) Gecko/20060924 Firefox/1.5.0.7 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.7) Gecko/20060921 Ubuntu/dapper-security Firefox/1.5.0.7 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.7) Gecko/20060919 Firefox/1.5.0.7 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.7) Gecko/20060911 Firefox/1.5.0.7 Mozilla/5.0 (X11; U; Linux i686; sk; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7 Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.8.0.7) Gecko/20060921 Ubuntu/dapper-security Firefox/1.5.0.7 Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.7) Gecko/20060914 Firefox/1.5.0.7 (Swiftfox) Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.0.7) Gecko/20060914 Firefox/1.5.0.7 (Swiftfox) Mnenhy/0.7.4.666 Mozilla/5.0 (X11; U; Linux i686; ko-KR; rv:1.8.0.7) Gecko/20060913 Fedora/1.5.0.7-1.fc5 Firefox/1.5.0.7 pango-text Mozilla/5.0 (X11; U; Linux i686; hu; rv:1.8.0.7) Gecko/20060911 SUSE/1.5.0.7-0.1 Firefox/1.5.0.7 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.0.7) Gecko/20060921 Ubuntu/dapper-security Firefox/1.5.0.7 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7 Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.0.7) Gecko/20060830 Firefox/1.5.0.7 (Debian-1.5.dfsg+1.5.0.7-1~bpo.1) Mozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7 Mozilla/5.0 (X11; U; Linux i686; en-ZW; rv:1.8.0.7) Gecko/20061018 Firefox/1.5.0.7 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20061014 Firefox/1.5.0.7 Mozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6 Mozilla/5.0 (X11; U; Linux i686; nl; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.6) Gecko/20060905 Fedora/1.5.0.6-10 Firefox/1.5.0.6 pango-text Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.6) Gecko/20060808 Fedora/1.5.0.6-2.fc5 Firefox/1.5.0.6 pango-text Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.6) Gecko/20060807 Firefox/1.5.0.6 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.6) Gecko/20060803 Firefox/1.5.0.6 (Swiftfox) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.6) Gecko/20060802 Firefox/1.5.0.6 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.6) Gecko/20060728 SUSE/1.5.0.6-0.1 Firefox/1.5.0.6 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6 (Debian-1.5.dfsg+1.5.0.6-4) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6 (Debian-1.5.dfsg+1.5.0.6-1) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6 Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.0.6) Gecko/20060808 Fedora/1.5.0.6-2.fc5 Firefox/1.5.0.6 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.8.0.6) Gecko/20060808 Fedora/1.5.0.6-2.fc5 Firefox/1.5.0.6 pango-text Mozilla/5.0 (X11; U; Linux i686 (x86_64); zh-TW; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6 Mozilla/5.0 (X11; U; Linux i686 (x86_64); nl; rv:1.8.0.6) Gecko/20060728 SUSE/1.5.0.6-1.2 Firefox/1.5.0.6 Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.0.6) Gecko/20060728 SUSE/1.5.0.6-1.2 Firefox/1.5.0.6 Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6 Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.0.6) Gecko/20060728 SUSE/1.5.0.6-1.3 Firefox/1.5.0.6 Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6 Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.8.0.5) Gecko/20060728 Firefox/1.5.0.5 Mozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.8.0.5) Gecko/20060819 Firefox/1.5.0.5 Mozilla/5.0 (X11; U; NetBSD i386; en-US; rv:1.8.0.5) Gecko/20060818 Firefox/1.5.0.5 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.5) Gecko/20060911 Firefox/1.5.0.5 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.5) Gecko/20060731 Ubuntu/dapper-security Firefox/1.5.0.5 Mozilla/5.0 (X11; U; Linux i686; sv-SE; rv:1.8.0.5) Gecko/20060731 Ubuntu/dapper-security Firefox/1.5.0.5 Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.0.5) Gecko/20060731 Ubuntu/dapper-security Firefox/1.5.0.5 Mnenhy/0.7.4.666 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.0.5) Gecko/20060731 Ubuntu/dapper-security Firefox/1.5.0.5 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.5) Gecko/20060831 Firefox/1.5.0.5 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.5) Gecko/20060820 Firefox/1.5.0.5 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.5) Gecko/20060813 Firefox/1.5.0.5 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.5) Gecko/20060812 Firefox/1.5.0.5 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.5) Gecko/20060806 Firefox/1.5.0.5 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.5) Gecko/20060803 Firefox/1.5.0.5 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.5) Gecko/20060801 Firefox/1.5.0.5 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.5) Gecko/20060731 Ubuntu/dapper-security Firefox/1.5.0.5 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.5) Gecko/20060719 Firefox/1.5.0.5 Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.0.5) Gecko/20060731 Ubuntu/dapper-security Firefox/1.5.0.5 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.8.0.5) Gecko/20060731 Ubuntu/dapper-security Firefox/1.5.0.5 Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.0.5) Gecko/20060726 Red Hat/1.5.0.5-0.el4.1 Firefox/1.5.0.5 pango-text Mozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.8.0.4) Gecko/20060628 Firefox/1.5.0.4 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.4) Gecko/20060608 Ubuntu/dapper-security Firefox/1.5.0.4 Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4 Mozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.8.0.4) Gecko/20060608 Ubuntu/dapper-security Firefox/1.5.0.4 Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.4) Gecko/20060614 Fedora/1.5.0.4-1.2.fc5 Firefox/1.5.0.4 pango-text Mnenhy/0.7.4.0 Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.4) Gecko/20060527 SUSE/1.5.0.4-1.7 Firefox/1.5.0.4 Mnenhy/0.7.4.0 Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.0.4) Gecko/20060608 Ubuntu/dapper-security Firefox/1.5.0.4 Mozilla/5.0 (X11; U; Linux i686; nl; rv:1.8.0.4) Gecko/20060608 Ubuntu/dapper-security Firefox/1.5.0.4 Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.0.4) Gecko/20060608 Ubuntu/dapper-security Firefox/1.5.0.4 Mozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.8.0.4) Gecko/20060608 Ubuntu/dapper-security Firefox/1.5.0.4 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060716 Firefox/1.5.0.4 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060711 Firefox/1.5.0.4 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060704 Firefox/1.5.0.4 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060629 Firefox/1.5.0.4 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060614 Fedora/1.5.0.4-1.2.fc5 Firefox/1.5.0.4 pango-text Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060613 Firefox/1.5.0.4 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060608 Ubuntu/dapper-security Firefox/1.5.0.4 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060527 SUSE/1.5.0.4-1.3 Firefox/1.5.0.4 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060406 Firefox/1.5.0.4 (Debian-1.5.dfsg+1.5.0.4-1) Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.3) Gecko/20060523 Ubuntu/dapper Firefox/1.5.0.3 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.3) Gecko/20060522 Firefox/1.5.0.3 Mozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.8.0.3) Gecko/20060523 Ubuntu/dapper Firefox/1.5.0.3 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.3) Gecko/20060523 Ubuntu/dapper Firefox/1.5.0.3 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.3) Gecko/20060504 Fedora/1.5.0.3-1.1.fc5 Firefox/1.5.0.3 pango-text Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.3) Gecko/20060425 SUSE/1.5.0.3-7 Firefox/1.5.0.3 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.3) Gecko/20060326 Firefox/1.5.0.3 (Debian-1.5.dfsg+1.5.0.3-2) Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.8.0.3) Gecko/20060425 SUSE/1.5.0.3-7 Firefox/1.5.0.3 Mozilla/5.0 (X11; U; Linux i686 (x86_64); ru; rv:1.8.0.3) Gecko/20060425 SUSE/1.5.0.3-7 Firefox/1.5.0.3 Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3 Mozilla/5.0 (Windows; U; Windows NT 5.0; es-ES; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3 Mozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; es-ES; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3 Mozilla/5.0 (Windows; U; Windows NT 4.0; en-US; rv:1.8.0.2) Gecko/20060418 Firefox/1.5.0.2; Mozilla/5.0 (X11; U; OpenBSD sparc64; pl-PL; rv:1.8.0.2) Gecko/20060429 Firefox/1.5.0.2 Mozilla/5.0 (X11; U; OpenBSD sparc64; en-CA; rv:1.8.0.2) Gecko/20060429 Firefox/1.5.0.2 Mozilla/5.0 (X11; U; Linux x86_64; de-AT; rv:1.8.0.2) Gecko/20060422 Firefox/1.5.0.2 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.2) Gecko/20060419 Fedora/1.5.0.2-1.2.fc5 Firefox/1.5.0.2 pango-text Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.2) Gecko Firefox/1.5.0.2 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050921 Firefox/1.5.0.2 Mandriva/1.0.6-15mdk (2006.0) Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.0.2) Gecko/20060414 Firefox/1.5.0.2 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.2) Gecko/20060419 Firefox/1.5.0.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.2) Gecko/20060406 Firefox/1.5.0.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.2) Gecko/20060309 Firefox/1.5.0.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2 Mozilla/5.0 (X11; U; Linux i686; sv-SE; rv:1.8.0.13pre) Gecko/20071126 Ubuntu/dapper-security Firefox/1.5.0.13pre Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.13pre) Gecko/20080207 Ubuntu/dapper-security Firefox/1.5.0.13pre Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.12) Gecko/20080419 CentOS/1.5.0.12-0.15.el4.centos Firefox/1.5.0.12 pango-text Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.12) Gecko/20070718 Red Hat/1.5.0.12-3.el5 Firefox/1.5.0.12 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.12) Gecko/20070530 Fedora/1.5.0.12-1.fc6 Firefox/1.5.0.12 Mozilla/5.0 (X11; U; Linux i686; nl; rv:1.8.0.12) Gecko/20070601 Ubuntu/dapper-security Firefox/1.5.0.12 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.12) Gecko/20071126 Fedora/1.5.0.12-7.fc6 Firefox/1.5.0.12 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.12) Gecko/20070719 CentOS/1.5.0.12-0.3.el4.centos Firefox/1.5.0.12 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.12) Gecko/20070530 Fedora/1.5.0.12-1.fc6 Firefox/1.5.0.12 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.12) Gecko/20070529 Red Hat/1.5.0.12-0.1.el4 Firefox/1.5.0.12 Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.0.12) Gecko/20070718 Fedora/1.5.0.12-4.fc6 Firefox/1.5.0.12 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.8.0.12) Gecko/20070731 Ubuntu/dapper-security Firefox/1.5.0.12 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.8.0.12) Gecko/20070719 CentOS/1.5.0.12-3.el5.centos Firefox/1.5.0.12 Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.0.12) Gecko/20080326 CentOS/1.5.0.12-14.el5.centos Firefox/1.5.0.12 Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.0.12) Gecko/20070731 Ubuntu/dapper-security Firefox/1.5.0.12 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12 (.NET CLR 3.5.30729) Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12 Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12 Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12 Mozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12 Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12 Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.0.11) Gecko/20070327 Ubuntu/dapper-security Firefox/1.5.0.11 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11 Mozilla/5.0 (X11; U; Linux i686; de; rv:1.8.0.11) Gecko/20070327 Ubuntu/dapper-security Firefox/1.5.0.11 Mozilla/5.0 (X11; U; Linux i686; cs-CZ; rv:1.8.0.11) Gecko/20070327 Ubuntu/dapper-security Firefox/1.5.0.11 Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11 Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11 Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11 Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11 Mozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11 Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11 Mozilla/5.0 (Windows; U; Windows NT 5.1; fi; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11 Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.11 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11 Mozilla/5.0 (Windows; U; Windows NT 5.0; pl; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11 Mozilla/5.0 (Windows; U; Windows NT 5.0; it; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11 Mozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11 Mozilla/5.0 (Windows; U; Windows NT 5.0; es-ES; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11 Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11 Mozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.0.10pre) Gecko/20070207 Firefox/1.5.0.10pre Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.10pre) Gecko/20070211 Firefox/1.5.0.10pre Mozilla/5.0 (X11; U; OpenBSD ppc; en-US; rv:1.8.0.10) Gecko/20070223 Firefox/1.5.0.10 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.10) Gecko/20070409 CentOS/1.5.0.10-2.el5.centos Firefox/1.5.0.10 Mozilla/5.0 (X11; U; Linux i686; zh-TW; rv:1.8.0.10) Gecko/20070508 Fedora/1.5.0.10-1.fc5 Firefox/1.5.0.10 Mozilla/5.0 (X11; U; Linux i686; ja; rv:1.8.0.10) Gecko/20070510 Fedora/1.5.0.10-6.fc6 Firefox/1.5.0.10 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.0.10) Gecko/20070223 Fedora/1.5.0.10-1.fc5 Firefox/1.5.0.10 pango-text Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.10) Gecko/20070510 Fedora/1.5.0.10-6.fc6 Firefox/1.5.0.10 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.10) Gecko/20070409 CentOS/1.5.0.10-2.el5.centos Firefox/1.5.0.10 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.10) Gecko/20070302 Ubuntu/dapper-security Firefox/1.5.0.10 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.10) Gecko/20070226 Red Hat/1.5.0.10-0.1.el4 Firefox/1.5.0.10 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.10) Gecko/20070226 Fedora/1.5.0.10-1.fc6 Firefox/1.5.0.10 pango-text Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.10) Gecko/20070223 CentOS/1.5.0.10-0.1.el4.centos Firefox/1.5.0.10 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.10) Gecko/20070221 Red Hat/1.5.0.10-0.1.el4 Firefox/1.5.0.10 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.10) Gecko/20070216 Firefox/1.5.0.10 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.10) Gecko/20060911 SUSE/1.5.0.10-0.2 Firefox/1.5.0.10 Mozilla/5.0 (X11; U; Linux i686; en-CA; rv:1.8.0.10) Gecko/20070223 Fedora/1.5.0.10-1.fc5 Firefox/1.5.0.10 Mozilla/5.0 (X11; U; Linux i686; cs-CZ; rv:1.8.0.10) Gecko/20070313 Fedora/1.5.0.10-5.fc6 Firefox/1.5.0.10 Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.0.10) Gecko/20060911 SUSE/1.5.0.10-0.2 Firefox/1.5.0.10 Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.8.0.10) Gecko/20070216 Firefox/1.5.0.10 Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.0.10) Gecko/20070216 Firefox/1.5.0.10 Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.10) Gecko/20070216 Firefox/1.5.0.10 Mozilla/5.0 (ZX-81; U; CP/M86; en-US; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1 Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.0.1) Gecko/20060206 Firefox/1.5.0.1 Mozilla/5.0 (X11; U; SunOS sun4u; en-GB; rv:1.8.0.1) Gecko/20060206 Firefox/1.5.0.1 Mozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.8.0.1) Gecko/20060213 Firefox/1.5.0.1 Mozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.8) Gecko/20051128 SUSE/1.5-0.1 Firefox/1.5.0.1 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.1) Gecko/20060313 Fedora/1.5.0.1-9 Firefox/1.5.0.1 pango-text Mozilla/5.0 (X11; U; Linux i686; rv:1.8.0.1) Gecko/20060124 Firefox/1.5.0.1 Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.1) Gecko/20060313 Fedora/1.5.0.1-9 Firefox/1.5.0.1 pango-text Mnenhy/0.7.3.0 Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.1) Gecko/20060201 Firefox/1.5.0.1 (Swiftfox) Mnenhy/0.7.3.0 Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.1) Gecko/20060124 Firefox/1.5.0.1 Ubuntu Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.1) Gecko/20060124 Firefox/1.5.0.1 Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.0.1) Gecko/20060313 Fedora/1.5.0.1-9 Firefox/1.5.0.1 pango-text Mnenhy/0.7.3.0 Mozilla/5.0 (X11; U; Linux i686; it; rv:1.8.0.1) Gecko/20060124 Firefox/1.5.0.1 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.0.1) Gecko/20060124 Firefox/1.5.0.1 Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.0.1) Gecko/20060124 Firefox/1.5.0.1 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060911 Red Hat/1.5.0.7-0.1.el4 Firefox/1.5.0.1 pango-text Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060404 Firefox/1.5.0.1 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060324 Ubuntu/dapper Firefox/1.5.0.1 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060313 Fedora/1.5.0.1-9 Firefox/1.5.0.1 pango-text Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060313 Debian/1.5.dfsg+1.5.0.1-4 Firefox/1.5.0.1 Mozilla/5.0 (X11; Linux i686; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Mozilla/5.0 (Windows NT 5.2; U; de; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Mozilla/5.0 (Windows NT 5.1; U; tr; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Mozilla/5.0 (Windows NT 5.1; U; de; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Mozilla/5.0 (Windows 98; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Mozilla/5.0 (Macintosh; PPC Mac OS X; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8) Gecko/20051130 Firefox/1.5 Mozilla/5.0 (X11; U; NetBSD i386; en-US; rv:1.8) Gecko/20060104 Firefox/1.5 Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.8) Gecko/20051231 Firefox/1.5 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8) Gecko/20051212 Firefox/1.5 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8) Gecko/20051201 Firefox/1.5 Mozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.8) Gecko/20051111 Firefox/1.5 Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8) Gecko/20051111 Firefox/1.5 Ubuntu Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8) Gecko/20051111 Firefox/1.5 Mozilla/5.0 (X11; U; Linux i686; lt; rv:1.6) Gecko/20051114 Firefox/1.5 Mozilla/5.0 (X11; U; Linux i686; lt-LT; rv:1.6) Gecko/20051114 Firefox/1.5 Mozilla/5.0 (X11; U; Linux i686; it; rv:1.8) Gecko/20060113 Firefox/1.5 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8) Gecko/20060110 Debian/1.5.dfsg-4 Firefox/1.5 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8) Gecko/20051111 Firefox/1.5 Mozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.8) Gecko/20051111 Firefox/1.5 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20060806 Firefox/1.5 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20060130 Ubuntu/1.5.dfsg-4ubuntu6 Firefox/1.5 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20060119 Debian/1.5.dfsg-4ubuntu3 Firefox/1.5 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20060118 Firefox/1.5 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20060111 Firefox/1.5 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8) Gecko/20060110 Debian/1.5.dfsg-4 Firefox/1.5 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8b5) Gecko/20051008 Fedora/1.5-0.5.0.beta2 Firefox/1.4.1 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8b5) Gecko/20051006 Firefox/1.4.1 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8b5) Gecko/20051006 Firefox/1.4.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.8b5) Gecko/20051006 Firefox/1.4.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8b5) Gecko/20051006 Firefox/1.4.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b5) Gecko/20051006 Firefox/1.4.1 Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8b5) Gecko/20051006 Firefox/1.4.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b4) Gecko/20050908 Firefox/1.4 Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8b4) Gecko/20050908 Firefox/1.4 Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8b4) Gecko/20050908 Firefox/1.4 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.21) Gecko/20090403 Firefox/1.1.16 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.13) Gecko/20060413 Red Hat/1.0.8-1.4.1 Firefox/1.0.8 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.13) Gecko/20060411 Firefox/1.0.8 SUSE/1.0.8-0.2 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20060410 Firefox/1.0.8 Mandriva/1.0.6-16.5.20060mdk (2006.0) Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.7.13) Gecko/20060418 Fedora/1.0.8-1.1.fc4 Firefox/1.0.8 Mozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.7.13) Gecko/20060418 Firefox/1.0.8 (Ubuntu package 1.0.8) Mozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.7.13) Gecko/20060411 Firefox/1.0.8 SUSE/1.0.8-0.2 Mozilla/5.0 (X11; U; Linux i686; da-DK; rv:1.7.13) Gecko/20060411 Firefox/1.0.8 SUSE/1.0.8-0.2 Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.12) Gecko/20051105 Firefox/1.0.8 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.13) Gecko/20060410 Firefox/1.0.8 Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.7.13) Gecko/20060410 Firefox/1.0.8 Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.13) Gecko/20060410 Firefox/1.0.8 Mozilla/5.0 (X11; U; x86_64 Linux; en_US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7 Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.7.12) Gecko/20050927 Firefox/1.0.7 Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.7.12) Gecko/20050922 Firefox/1.0.7 Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.7.12) Gecko/20051121 Firefox/1.0.7 (Nexenta package 1.0.7) Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.7.12) Gecko/20050922 Fedora/1.0.7-1.1.fc4 Firefox/1.0.7 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.7.12) Gecko/20060202 CentOS/1.0.7-1.4.3.centos4 Firefox/1.0.7 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.7.12) Gecko/20051218 Firefox/1.0.7 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.7.12) Gecko/20051127 Firefox/1.0.7 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.7.12) Gecko/20051010 Firefox/1.0.7 (Ubuntu package 1.0.7) Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.7.12) Gecko/20051010 Firefox/1.0.7 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.7.12) Gecko/20050922 Fedora/1.0.7-1.1.fc4 Firefox/1.0.7 Mozilla/5.0 (X11; U; Linux ppc; en-US; rv:1.7.12) Gecko/20051222 Firefox/1.0.7 Mozilla/5.0 (X11; U; Linux ppc; da-DK; rv:1.7.12) Gecko/20051010 Firefox/1.0.7 (Ubuntu package 1.0.7) Mozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.7.12) Gecko/20051010 Firefox/1.0.7 (Ubuntu package 1.0.7) Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.7.12) Gecko/20051010 Firefox/1.0.7 (Ubuntu package 1.0.7) Mozilla/5.0 (X11; U; Linux i686; it-IT; rv:1.7.12) Gecko/20051010 Firefox/1.0.7 (Ubuntu package 1.0.7) Mozilla/5.0 (X11; U; Linux i686; hu-HU; rv:1.7.12) Gecko/20051010 Firefox/1.0.7 (Ubuntu package 1.0.7) Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.7.12) Gecko/20051010 Firefox/1.0.7 (Ubuntu package 1.0.7) Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.7.12) Gecko/20050922 Firefox/1.0.7 (Debian package 1.0.7-1) Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.7.12) Gecko/20050922 Fedora/1.0.7-1.1.fc4 Firefox/1.0.7 Mozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.7.10) Gecko/20050919 (No IDN) Firefox/1.0.6 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.7.10) Gecko/20050724 Firefox/1.0.6 Mozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.7.10) Gecko/20050717 Firefox/1.0.6 Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.7.10) Gecko/20050730 Firefox/1.0.6 (Debian package 1.0.6-2) Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.7.10) Gecko/20050717 Firefox/1.0.6 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.7.10) Gecko/20050721 Firefox/1.0.6 (Ubuntu package 1.0.6) Mozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.7.10) Gecko/20050716 Firefox/1.0.6 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20051111 Firefox/1.0.6 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20051106 Firefox/1.0.6 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050920 Firefox/1.0.6 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050918 Firefox/1.0.6 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050911 Firefox/1.0.6 (Debian package 1.0.6-5) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050815 Firefox/1.0.6 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050811 Firefox/1.0.6 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050721 Firefox/1.0.6 (Ubuntu package 1.0.6) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050720 Fedora/1.0.6-1.1.fc4.k12ltsp.4.4.0 Firefox/1.0.6 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050720 Fedora/1.0.6-1.1.fc3 Firefox/1.0.6 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050719 Red Hat/1.0.6-1.4.1 Firefox/1.0.6 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050715 Firefox/1.0.6 SUSE/1.0.6-16 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.9) Gecko/20050711 Firefox/1.0.5 Mozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.7.9) Gecko/20050711 Firefox/1.0.5 Mozilla/5.0 (Windows; U; Windows NT5.1; en; rv:1.7.10) Gecko/20050716 Firefox/1.0.5 Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.7.9) Gecko/20050711 Firefox/1.0.5 Mozilla/5.0 (Windows; U; Windows NT 5.1; en; rv:1.7.10) Gecko/20050716 Firefox/1.0.5 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.9) Gecko/20050711 Firefox/1.0.5 (ax) Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.9) Gecko/20050711 Firefox/1.0.5 Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.9) Gecko/20050711 Firefox/1.0.5 Mozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.7.9) Gecko/20050711 Firefox/1.0.5 Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.9) Gecko/20050711 Firefox/1.0.5 Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.7.8) Gecko/20050512 Firefox/1.0.4 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.7.8) Gecko/20050524 Fedora/1.0.4-4 Firefox/1.0.4 Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.7.10) Gecko/20050925 Firefox/1.0.4 (Debian package 1.0.4-2sarge5) Mozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.7.8) Gecko/20050511 Firefox/1.0.4 Mozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.7.10) Gecko/20050925 Firefox/1.0.4 (Debian package 1.0.4-2sarge5) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050610 Firefox/1.0.4 (Debian package 1.0.4-3) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050524 Fedora/1.0.4-4 Firefox/1.0.4 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050523 Firefox/1.0.4 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050517 Firefox/1.0.4 (Debian package 1.0.4-2) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050513 Firefox/1.0.4 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050513 Fedora/1.0.4-1.3.1 Firefox/1.0.4 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050512 Firefox/1.0.4 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4 SUSE/1.0.4-1.1 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051010 Firefox/1.0.4 (Ubuntu package 1.0.7) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20070530 Firefox/1.0.4 (Debian package 1.0.4-2sarge17) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20070116 Firefox/1.0.4 (Debian package 1.0.4-2sarge15) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20061113 Firefox/1.0.4 (Debian package 1.0.4-2sarge13) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20060927 Firefox/1.0.4 (Debian package 1.0.4-2sarge12) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.7) Gecko/20050421 Firefox/1.0.3 (Debian package 1.0.3-2) Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.7.7) Gecko/20050414 Firefox/1.0.3 Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.7) Gecko/20060303 Firefox/1.0.3 Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.7) Gecko/20050420 Firefox/1.0.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.7.7) Gecko/20050414 Firefox/1.0.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; it-IT; rv:1.7.7) Gecko/20050414 Firefox/1.0.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.7.7) Gecko/20050414 Firefox/1.0.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.7.7) Gecko/20050414 Firefox/1.0.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.7) Gecko/20050414 Firefox/1.0.3 (ax) Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.7) Gecko/20050414 Firefox/1.0.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.7.7) Gecko/20050414 Firefox/1.0.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.7) Gecko/20050414 Firefox/1.0.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; da-DK; rv:1.7.7) Gecko/20050414 Firefox/1.0.3 Mozilla/5.0 (Windows; U; Windows NT 5.0; fr-FR; rv:1.7.7) Gecko/20050414 Firefox/1.0.3 Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.7) Gecko/20050414 Firefox/1.0.3 Mozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.7.7) Gecko/20050414 Firefox/1.0.3 Mozilla/5.0 (Windows; U; Win98; fr-FR; rv:1.7.7) Gecko/20050414 Firefox/1.0.3 Mozilla/5.0 (Windows; U; Win98; es-ES; rv:1.7.7) Gecko/20050414 Firefox/1.0.3 Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.7.7) Gecko/20050414 Firefox/1.0.3 Mozilla/5.0 (Windows; U; Win98; de-DE; rv:1.7.7) Gecko/20050414 Firefox/1.0.3 Mozilla/5.0 (X11; U; Linux x86_64; nl-NL; rv:1.7.6) Gecko/20050318 Firefox/1.0.2 Mozilla/5.0 (X11; U; Linux i686; ru-RU; rv:1.7.6) Gecko/20050318 Firefox/1.0.2 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.6) Gecko/20050317 Firefox/1.0.2 Mozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.7.6) Gecko/20050325 Firefox/1.0.2 (Debian package 1.0.2-1) Mozilla/5.0 (Windows; U; Windows NT 5.2; de-DE; rv:1.7.6) Gecko/20050321 Firefox/1.0.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; tr-TR; rv:1.7.6) Gecko/20050321 Firefox/1.0.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.6) Gecko/20050318 Firefox/1.0.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; nl-NL; rv:1.7.6) Gecko/20050318 Firefox/1.0.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; it-IT; rv:1.7.6) Gecko/20050318 Firefox/1.0.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.7.6) Gecko/20050318 Firefox/1.0.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) Gecko/20050317 Firefox/1.0.2 (ax) Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) Gecko/20050317 Firefox/1.0.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.7.6) Gecko/20050321 Firefox/1.0.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.6) Gecko/20050321 Firefox/1.0.2 Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.6) Gecko/20050317 Firefox/1.0.2 Mozilla/5.0 (Windows; U; Windows NT 5.0; en-GB; rv:1.7.6) Gecko/20050321 Firefox/1.0.2 Mozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.7.6) Gecko/20050321 Firefox/1.0.2 Mozilla/5.0 (Windows; U; Win98; fr-FR; rv:1.7.6) Gecko/20050318 Firefox/1.0.2 Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.7.6) Gecko/20050317 Firefox/1.0.2 (ax) Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.7.6) Gecko/20050317 Firefox/1.0.2 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.6) Gecko/20050317 Firefox/1.0.1 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.6) Gecko/20050311 Firefox/1.0.1 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.6) Gecko/20050310 Firefox/1.0.1 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.6) Gecko/20050225 Firefox/1.0.1 Mozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.7.6) Gecko/20050322 Firefox/1.0.1 Mozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.7.6) Gecko/20050306 Firefox/1.0.1 (Debian package 1.0.1-2) Mozilla/5.0 (X11; U; Linux i686; cs-CZ; rv:1.7.6) Gecko/20050226 Firefox/1.0.1 Mozilla/5.0 (Windows; U; WinNT4.0; de-DE; rv:1.7.6) Gecko/20050226 Firefox/1.0.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.7.6) Gecko/20050226 Firefox/1.0.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) Gecko/20050225 Firefox/1.0.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) Gecko/20050223 Firefox/1.0.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.7.6) Gecko/20050226 Firefox/1.0.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.6) Gecko/20050226 Firefox/1.0.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.6) Gecko/20050223 Firefox/1.0.1 Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.6) Gecko/20050225 Firefox/1.0.1 Mozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.7.6) Gecko/20050226 Firefox/1.0.1 Mozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.7.6) Gecko/20050223 Firefox/1.0.1 Mozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.6) Gecko/20040206 Firefox/1.0.1 Mozilla/5.0 (Windows; U; Win98; fr-FR; rv:1.7.6) Gecko/20050226 Firefox/1.0.1 Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.7.6) Gecko/20050225 Firefox/1.0.1 Mozilla/5.0 (X11; U; Linux i686; hu; rv:1.8b4) Gecko/20050827 Firefox/1.0+ Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b4) Gecko/20050729 Firefox/1.0+ Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.7.5) Gecko/20041109 Firefox/1.0 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.7.6) Gecko/20050405 Firefox/1.0 (Ubuntu package 1.0.2) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.6) Gecko/20050405 Firefox/1.0 (Ubuntu package 1.0.2) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20050814 Firefox/1.0 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20050221 Firefox/1.0 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20050210 Firefox/1.0 (Debian package 1.0+dfsg.1-6) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20041218 Firefox/1.0 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20041215 Firefox/1.0 Red Hat/1.0-12.EL4 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20041204 Firefox/1.0 (Debian package 1.0.x.2-1) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20041128 Firefox/1.0 (Debian package 1.0-4) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20041117 Firefox/1.0 (Debian package 1.0-2.0.0.45.linspire0.4) Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0 Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.7.6) Gecko/20050405 Firefox/1.0 (Ubuntu package 1.0.2) Mozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.7.5) Gecko/20041108 Firefox/1.0 Mozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.7.5) Gecko/20041128 Firefox/1.0 (Debian package 1.0-4) Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.5) Gecko/20041114 Firefox/1.0 Mozilla/5.0 (X11; Linux i686; rv:1.7.5) Gecko/20041108 Firefox/1.0 Mozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0 Mozilla/5.0 (Windows; U; WinNT4.0; de-DE; rv:1.7.5) Gecko/20041108 Firefox/1.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.7.5) Gecko/20041119 Firefox/1.0 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7) Gecko/20040917 Firefox/0.9.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.7) Gecko/20040803 Firefox/0.9.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3 Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7) Gecko/20040803 Firefox/0.9.3 Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3 Mozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.7) Gecko/20040803 Firefox/0.9.3 Mozilla/5.0 (Windows; U; Win98; de-DE; rv:1.7) Gecko/20040803 Firefox/0.9.3 Mozilla/5.0 (Windows; U; Win 9x 4.90; rv:1.7) Gecko/20040803 Firefox/0.9.3 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7) Gecko/20040802 Firefox/0.9.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.7) Gecko/20040707 Firefox/0.9.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040707 Firefox/0.9.2 Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7) Gecko/20040707 Firefox/0.9.2 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7) Gecko/20040630 Firefox/0.9.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7) Gecko/20040626 Firefox/0.9.1 Mozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.7) Gecko/20040626 Firefox/0.9.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040614 Firefox/0.9 Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7) Gecko/20040614 Firefox/0.9 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040614 Firefox/0.8 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040225 Firefox/0.8 Mozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.6) Gecko/20040207 Firefox/0.8 Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.6) Gecko/20040206 Firefox/0.8 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.6) Gecko/20040206 Firefox/0.8 Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.6) Gecko/20040206 Firefox/0.8 Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.6) Gecko/20040206 Firefox/0.8 Mozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.6) Gecko/20040206 Firefox/0.8 Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.6) Gecko/20040206 Firefox/0.8 Mozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.6) Gecko/20040206 Firefox/0.8 Mozilla/5.0 (X11; U; Linux i686; rv:1.7.3) Gecko/20041020 Firefox/0.10.1 Mozilla/5.0 (X11; U; Linux i686; rv:1.7.3) Gecko/20041001 Firefox/0.10.1 Mozilla/5.0 (X11; U; Linux i686; rv:1.7.3) Gecko/20040914 Firefox/0.10.1 Mozilla/5.0 (Windows; U; Windows NT 5.2; rv:1.7.3) Gecko/20041001 Firefox/0.10.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040911 Firefox/0.10.1 Mozilla/5.0 (Windows; U; Windows NT 5.0; rv:1.7.3) Gecko/20041001 Firefox/0.10.1 Mozilla/5.0 (Windows; U; Windows NT 5.0; rv:1.7.3) Gecko/20040913 Firefox/0.10.1 Mozilla/5.0 (Windows; U; Win98; rv:1.7.3) Gecko/20041001 Firefox/0.10.1 Mozilla/5.0 (X11; U; Linux i686; rv:1.7.3) Gecko/20040914 Firefox/0.10 Mozilla/5.0 (X11; U; Linux i686; rv:1.7.3) Gecko/20040913 Firefox/0.10 Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10 Mozilla/5.0 (Windows; U; Windows NT 5.0; zh-TW; rv:1.8.0.1) Gecko/20060111 Firefox/0.10 Mozilla/5.0 (Windows; U; Windows NT 5.0; rv:1.7.3) Gecko/20040913 Firefox/0.10 Mozilla/5.0 (Windows; U; Win98; rv:1.7.3) Gecko/20040913 Firefox/0.10 Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; rv:1.7.3) Gecko/20040913 Firefox/0.10 Mozilla/5.0 (X11; U; Gentoo Linux x86_64; pl-PL) Gecko Firefox Mozilla/5.0 (X11; ; Linux x86_64; rv:1.8.1.6) Gecko/20070802 Firefox Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.6) Gecko/2009011913 Firefox Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; rv:1.8.1.16) Gecko/20080702 Firefox Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.13) Gecko/20080313 FirefoxSession.pm.bak000644000000000000 1055311614255470 17660 0ustar00rootroot000000000000Scrappy-0.94112090/lib/Scrappy# ABSTRACT: Scrappy Scraper Session Handling # Dist::Zilla: +PodWeaver package Scrappy::Session; BEGIN { $Scrappy::Session::VERSION = '0.94112090'; } # load OO System use Moose; # load other libraries use Carp; use YAML::Syck; $YAML::Syck::ImplicitTyping = 1; has 'auto_save' => (is => 'rw', isa => 'Bool', default => 1); has 'file' => (is => 'rw', isa => 'Str'); sub load { my $self = shift; my $file = shift; if ($file) { $self->file($file); croak("Session file $file does not exist or is not read/writable") unless -f $file; # load session file $self->{stash} = LoadFile($file); } return $self->{stash}; } sub stash { my $self = shift; $self->{stash} = {} unless defined $self->{stash}; if (@_) { my $stash = @_ > 1 ? {@_} : $_[0]; if ($stash) { if (ref $stash eq 'HASH') { for (keys %{$stash}) { if (lc $_ ne ':file') { $self->{stash}->{$_} = $stash->{$_}; } else { $self->{file} = $stash->{$_}; } } } else { return $self->{stash}->{$stash}; } } } $self->auto_write; return $self->{stash}; } sub write { my $self = shift; my $file = shift || $self->file; $self->file($file); if ($file) { # write session file DumpFile($file, $self->{stash}); # ... ummm croak("Session file $file does not exist or is not read/writable") unless -f $file; } return $self->{stash}; } sub auto_write { my $self = shift; $self->write if $self->auto_save; return $self; } 1; __END__ =pod =head1 NAME Scrappy::Session - Scrappy Scraper Session Handling =head1 VERSION version 0.94112090 =head1 SYNOPSIS #!/usr/bin/perl use Scrappy::Session; my $session = Scrappy::Session->new; -f 'scraper.sess' ? $session->load('scraper.sess'); $session->write('scraper.sess'); $session->stash('foo' => 'bar'); $session->stash('abc' => [('a'..'z')]); =head1 DESCRIPTION Scrappy::Session provides YAML-Based session file handling for saving recorded data across multiple execution using the L framework. =head2 ATTRIBUTES The following is a list of object attributes available with every Scrappy::Session instance. =head3 auto_save The auto_save attribute is a boolean that determines whether stash data is automatically saved to the session file on update. my $session = Scrappy::Session->new; $session->load('scraper.sess'); $session->stash('foo' => 'bar'); # turn auto-saving off $session->auto_save(0); $session->stash('foo' => 'bar'); $session->write; # explicit write =head3 file The file attribute gets/sets the filename of the current session file. my $session = Scrappy::Session->new; $session->load('scraper.sess'); $session->write('scraper.sess.bak'); $session->file('scraper.sess'); =head1 METHODS =head2 load The load method is used to read-in a session file, it returns its data in the structure it was saved-in. my $session = Scrappy::Session->new; my $data = $session->load('scraper.sess'); =head2 stash The stash method accesses the stash object which is used to store data to be written to the session file. my $session = Scrappy::Session->new; $session->load('scraper.sess'); $session->stash('foo' => 'bar'); $session->stash('abc' => [('a'..'z')]); $session->stash->{123} = [(1..9)]; =head2 write The write method is used to write-out a session file, it saves the data stored in the session stash and it returns the data written upon completion. my $session = Scrappy::Session->new; $session->stash('foo' => 'bar'); $session->stash('abc' => [('a'..'z')]); $session->stash->{123} = [(1..9)]; my $data = $session->write('scraper.sess'); =head1 AUTHOR Al Newkirk =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2010 by awncorp. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Project.pm.bak000644000000000000 1065011614255470 17641 0ustar00rootroot000000000000Scrappy-0.94112090/lib/Scrappypackage Scrappy::Project; BEGIN { $Scrappy::Project::VERSION = '0.94112090'; } use Carp; use File::Find::Rule; use Scrappy; use Moose::Role; has app => ( is => 'ro', isa => 'Any', default => sub { my $self = shift; $self->scraper(Scrappy->new); my $meta = $self->meta; return $meta->has_method('setup') ? $self->setup : $self; } ); has parsers => ( is => 'ro', isa => 'Any', default => sub { my $self = shift; my $class = ref $self; my @parsers = (); $class =~ s/::/\//g; my @files = File::Find::Rule->file()->name('*.pm')->in(map {"$_/$class"} @INC); my %parsers = map { $_ => 1 } @files; #uniquenes for my $parser (keys %parsers) { my ($plug) = $parser =~ /($class\/.*)\.pm/; if ($plug) { $plug =~ s/\//::/g; push @parsers, $plug; } } return [@parsers]; } ); has registry => ( is => 'ro', isa => 'HashRef', default => sub { # map parsers my $parsers = {}; my @parsers = @{shift->parsers}; foreach my $parser (@parsers) { $parsers->{$parser} = $parser; $parsers->{lc($parser)} = $parser; } return $parsers; } ); has records => ( is => 'rw', isa => 'HashRef', default => sub { {} } ); has routes => ( is => 'rw', isa => 'HashRef', default => sub { {} } ); has scraper => ( is => 'rw', isa => 'Scrappy' ); sub route { my $self = shift; my $options = {}; # basic definition ($options->{route}, $options->{parser}) = @_ if scalar @_ == 2; # odd definition if (@_ % 2) { my $route = shift; $options = {@_}; $options->{route} = $route; } # check route and parser spec die "Error defining route, must have a route and parser assignment" unless $options->{route} && $options->{parser}; # covert parser from shortcut if used if ($options->{parser} !~ ref($self) . "::") { my $parser = $options->{parser}; # make fully-quaified parser name $parser = ucfirst $parser; $parser = join("::", map(ucfirst, split '-', $parser)) if $parser =~ /\-/; $parser = join("", map(ucfirst, split '_', $parser)) if $parser =~ /\_/; $options->{parser} = ref($self) . "::$parser"; } # find action if not specified #unless ( defined $options->{action} ) { # my ($action) = $options->{parser} =~ /\#(.*)$/; # $options->{parser} =~ s/\#(.*)$//; # $options->{action} = $action; #} $self->routes->{$options->{route}} = $options; delete $self->routes->{$options->{route}}->{route}; return $self; } sub parse_document { my ($self, $url) = @_; my $scraper = $self->scraper; croak("Unable to fetch document, URL is not defined") unless $url; croak("Can't parse document, No routes defined") unless keys %{$self->routes}; # try to match against route(s) foreach my $route (keys %{$self->routes}) { my $this = $scraper->page_match($route, $url); if ($this) { my $parser = $self->routes->{$route}->{parser}; #my $action = $self->routes->{$route}->{action}; no warnings 'redefine'; no strict 'refs'; my $module = $parser; $module =~ s/::/\//g; $module = "$module.pm"; require $module; my $new = $parser->new; $new->scraper($scraper); $self->records->{$route} = [] unless defined $self->records->{$route}; my $record = $new->parse($this); push @{$self->records->{$route}}, $record; return $record; } } return 0; } sub crawl { my ($class, $starting_url) = @_; my $self = ref $class ? $class : $class->new; croak("Error, can't execute without a starting url") unless $starting_url; my $q = $self->scraper->queue; $q->add($starting_url); while (my $url = $q->next) { # parse document data $self->scraper->get($url); $self->parse_document($url) if $self->scraper->page_loaded && $self->scraper->page_ishtml && $self->scraper->page_status == 200; } return $self->records; } 1; Scraper.pm.bak000644000000000000 5106411614255470 17636 0ustar00rootroot000000000000Scrappy-0.94112090/lib/Scrappypackage Scrappy::Scraper; BEGIN { $Scrappy::Scraper::VERSION = '0.94112090'; } # load OO System use Moose; # load other libraries use Data::Dumper; use File::Util; use Scrappy::Logger; use Scrappy::Plugin; use Scrappy::Queue; use Scrappy::Scraper::Control; use Scrappy::Scraper::Parser; use Scrappy::Scraper::UserAgent; use Scrappy::Session; use Try::Tiny; use URI; use Web::Scraper; use WWW::Mechanize; # html content attribute has 'content' => ( is => 'rw', isa => 'Any' ); # access control object has 'control' => ( is => 'ro', isa => 'Scrappy::Scraper::Control', default => sub { Scrappy::Scraper::Control->new; } ); # debug attribute has 'debug' => ( is => 'rw', isa => 'Bool', default => 1 ); # log object has 'logger' => ( is => 'ro', isa => 'Scrappy::Logger', default => sub { Scrappy::Logger->new; } ); # parser object has 'parser' => ( is => 'ro', isa => 'Scrappy::Scraper::Parser', default => sub { Scrappy::Scraper::Parser->new; } ); # plugins object has 'plugins' => ( is => 'ro', isa => 'Any', default => sub { Scrappy::Plugin->new; } ); # queue object has 'queue' => ( is => 'ro', isa => 'Scrappy::Queue', default => sub { Scrappy::Queue->new; } ); # session object has 'session' => ( is => 'ro', isa => 'Scrappy::Session', default => sub { Scrappy::Session->new; } ); # user-agent object has 'user_agent' => ( is => 'ro', isa => 'Scrappy::Scraper::UserAgent', default => sub { Scrappy::Scraper::UserAgent->new; } ); # www-mechanize object (does most of the heavy lifting, gets passed around alot) has 'worker' => ( is => 'ro', isa => 'WWW::Mechanize', default => sub { WWW::Mechanize->new; } ); sub back { my $self = shift; # specify user-agent $self->worker->add_header("User-Agent" => $self->user_agent->name) if defined $self->user_agent->name; # set html response $self->content(''); try { $self->worker->back; $self->content($self->worker->content); } catch { $self->log("error", "navigating to the previous page failed"); }; return unless $self->content; $self->log("info", "navigated back to " . $self->url . " successfully"); $self->stash->{history} = [] unless defined $self->stash->{history}; push @{$self->stash->{history}}, $self->url; $self->worker->{cookie_jar}->scan( sub { my ($version, $key, $val, $path, $domain, $port, $path_spec, $secure, $expires, $discard, $hash ) = @_; $self->session->stash('cookies' => {}) unless defined $self->session->stash('cookies'); $self->session->stash->{'cookies'}->{$domain}->{$key} = { version => $version, key => $key, val => $val, path => $path, domain => $domain, port => $port, path_spec => $path_spec, secure => $secure, expires => $expires, discard => $discard, hash => $hash }; $self->session->write; } ); return $self->url; } sub cookies { my $self = shift; $self->worker->{cookie_jar} = $_[0] if defined $_[0]; return $self->worker->{cookie_jar}; } sub domain { return shift->worker->base->host; } sub download { my $self = shift; my ($url, $dir, $file) = @_; $url = URI->new(@_); # specify user-agent $self->worker->add_header("User-Agent" => $self->user_agent->name) if defined $self->user_agent->name; # set html response if ($url && $dir && $file) { $dir =~ s/[\\\/]+$//; return unless $self->get($url); $self->store(join '/', $dir, $file); $self->log("info", "$url was downloaded to " . join('/', $dir, $file) . " successfully"); $self->back; } elsif ($url && $dir) { $dir =~ s/[\\\/]+$//; return unless $self->get($url); my @chars = ('a' .. 'z', 'A' .. 'Z', 0 .. 9); my $filename = $self->worker->response->filename; $filename = $chars[rand(@chars)] . $chars[rand(@chars)] . $chars[rand(@chars)] . $chars[rand(@chars)] . $chars[rand(@chars)] . $chars[rand(@chars)] . '.downlaod' unless $filename; $self->store(join '/', $dir, $filename); $self->log("info", "$url was downloaded to " . join('/', $dir, $filename) . " successfully"); $self->back; } elsif ($url) { return unless $self->get($url); my @chars = ('a' .. 'z', 'A' .. 'Z', 0 .. 9); my $filename = $self->worker->response->filename; $filename = $chars[rand(@chars)] . $chars[rand(@chars)] . $chars[rand(@chars)] . $chars[rand(@chars)] . $chars[rand(@chars)] . $chars[rand(@chars)] . '.downlaod' unless $filename; $dir = $url->path; $dir =~ s/^\///g; $dir =~ s/\/$filename$//; File::Util->new->make_dir($dir) unless -d $dir || !$dir; $self->store(join '/', $dir, $filename); $self->log("info", "$url was downloaded to " . join('/', $dir, $filename) . " successfully"); $self->back; } else { croak( "To download data from a URI you must supply at least a valid URI " . "and download directory path"); } $self->stash->{history} = [] unless defined $self->stash->{history}; push @{$self->stash->{history}}, $url; $self->worker->{params} = {}; $self->worker->{params} = {map { ($_ => $url->query_form($_)) } $url->query_form}; sleep $self->pause; return $self; } sub dumper { shift; return Data::Dumper::Dumper(@_); } sub form { my $self = shift; my $url = URI->new($self->url); # TODO: need to figure out how to determine the form action before submit # specify user-agent $self->worker->add_header("User-Agent" => $self->user_agent->name) if defined $self->user_agent->name; # set html response $self->content(''); my @args = @_; try { $self->content($self->worker->submit_form(@args)); }; if ($self->content) { # access control if ($self->control->is_allowed($self->content)) { $self->log("warn", "$url was not fetched, the url is prohibited"); return 0; } else { $self->log("info", "form posted from $url successfully", @_); } } else { $self->log("error", "error POSTing form from $url", @_); } #$self->stash->{history} = [] unless defined $self->stash->{history}; #push @{$self->stash->{history}}, $url; $self->worker->{cookie_jar}->scan( sub { my ($version, $key, $val, $path, $domain, $port, $path_spec, $secure, $expires, $discard, $hash ) = @_; $self->session->stash('cookies' => {}) unless defined $self->session->stash('cookies'); $self->session->stash->{'cookies'}->{$domain}->{$key} = { version => $version, key => $key, val => $val, path => $path, domain => $domain, port => $port, path_spec => $path_spec, secure => $secure, expires => $expires, discard => $discard, hash => $hash }; $self->session->write; } ); $self->worker->{params} = {}; $self->worker->{params} = {map { ($_ => $url->query_form($_)) } $url->query_form}; sleep $self->pause; return $self; } sub get { my $self = shift; my $url = URI->new(@_); # specify user-agent $self->worker->add_header("User-Agent" => $self->user_agent->name) if defined $self->user_agent->name; # set html response $self->content(''); try { $self->content($self->worker->get($url)); }; if ($self->content) { # access control if (! $self->control->is_allowed($self->content)) { $self->log("warn", "$url was not fetched, the url is prohibited"); return 0; } else { $self->log("info", "$url was fetched successfully"); } } else { $self->log("error", "error GETing $url"); } $self->stash->{history} = [] unless defined $self->stash->{history}; push @{$self->stash->{history}}, $url; $self->worker->{cookie_jar}->scan( sub { my ($version, $key, $val, $path, $domain, $port, $path_spec, $secure, $expires, $discard, $hash ) = @_; $self->session->stash('cookies' => {}) unless defined $self->session->stash('cookies'); $self->session->stash->{'cookies'}->{$domain}->{$key} = { version => $version, key => $key, val => $val, path => $path, domain => $domain, port => $port, path_spec => $path_spec, secure => $secure, expires => $expires, discard => $discard, hash => $hash }; $self->session->write; } ) if $self->session->file; $self->worker->{params} = {}; $self->worker->{params} = {map { ($_ => $url->query_form($_)) } $url->query_form}; sleep $self->pause; return $self; } sub page_data { my $self = shift; my ($data, @args); if (scalar(@_) % 2) { $data = shift; @args = @_; } else { if (@_ == 2) { @args = @_; } else { $data = shift; } } if ($data) { $self->worker->update_html($data); } return $self->worker->content(@args); } sub page_content_type { return shift->worker->content_type; } sub page_ishtml { return shift->worker->is_html; } sub page_loaded { return shift->worker->success; } sub page_match { my $self = shift; my $pattern = shift; my $url = shift || $self->url; $url = URI->new($url); my $options = shift || {}; croak("route can't be defined without a valid URL pattern") unless $pattern; my $route = $self->stash->{patterns}->{$pattern}; # does route definition already exist? unless (keys %{$route}) { $route->{on_match} = $options->{on_match}; # define options if (my $host = $options->{host}) { $route->{host} = $host; $route->{host_re} = ref $host ? $host : qr(^\Q$host\E$); } $route->{pattern} = $pattern; # compile pattern my @capture; $route->{pattern_re} = do { if (ref $pattern) { $route->{_regexp_capture} = 1; $pattern; } else { $pattern =~ s! \{((?:\{[0-9,]+\}|[^{}]+)+)\} | # /blog/{year:\d{4}} :([A-Za-z0-9_]+) | # /blog/:year (\*) | # /blog/*/* ([^{:*]+) # normal string ! if ($1) { my ($name, $pattern) = split /:/, $1, 2; push @capture, $name; $pattern ? "($pattern)" : "([^/]+)"; } elsif ($2) { push @capture, $2; "([^/]+)"; } elsif ($3) { push @capture, '__splat__'; "(.+)"; } else { quotemeta($4); } !gex; qr{^$pattern$}; } }; $route->{capture} = \@capture; $self->stash->{patterns}->{$route->{pattern}} = $route; } # match if ($route->{host_re}) { unless ($url->host =~ $route->{host_re}) { return 0; } } if (my @captured = ($url->path =~ $route->{pattern_re})) { my %args; my @splat; if ($route->{_regexp_capture}) { push @splat, @captured; } else { for my $i (0 .. @{$route->{capture}} - 1) { if ($route->{capture}->[$i] eq '__splat__') { push @splat, $captured[$i]; } else { $args{$route->{capture}->[$i]} = $captured[$i]; } } } my $match = +{ (label => $route->{label}), %args, (@splat ? (splat => \@splat) : ()) }; if ($route->{on_match}) { my $ret = $route->{on_match}->($self, $match); return 0 unless $ret; } $match->{params} = {%args}; $match->{params}->{splat} = \@splat if @splat; return $match; } return 0; } sub page_reload { my $self = shift; # specify user-agent $self->worker->add_header("User-Agent" => $self->user_agent->name) if defined $self->user_agent->name; # set html response $self->content(''); try { $self->content($self->worker->reload); }; $self->content ? $self->log("info", "page reloaded successfully") : $self->log("error", "error reloading page") ; my $url = $self->url; $self->stash->{history} = [] unless defined $self->stash->{history}; push @{$self->stash->{history}}, $url; $self->worker->{cookie_jar}->scan( sub { my ($version, $key, $val, $path, $domain, $port, $path_spec, $secure, $expires, $discard, $hash ) = @_; $self->session->stash('cookies' => {}) unless defined $self->session->stash('cookies'); $self->session->stash->{'cookies'}->{$domain}->{$key} = { version => $version, key => $key, val => $val, path => $path, domain => $domain, port => $port, path_spec => $path_spec, secure => $secure, expires => $expires, discard => $discard, hash => $hash }; $self->session->write; } ); return $self; } sub page_status { return shift->worker->status; } sub page_text { return shift->page_data(format => 'text'); } sub page_title { return shift->worker->title; } sub plugin { my ($self, @plugins) = @_; foreach (@plugins) { with $self->plugins->load_plugin($_); } return $self; } sub post { my $self = shift; my $url = URI->new($_[0]); # access control unless ($self->control->is_allowed($url)) { $self->log("warn", "$url was not fetched, the url is prohibited"); return 0; } # specify user-agent $self->worker->add_header("User-Agent" => $self->user_agent->name) if defined $self->user_agent->name; # set html response $self->content(''); my @args = @_; try { $self->content($self->worker->post(@args)) ; }; if ($self->content) { # access control if ($self->control->is_allowed($self->content)) { $self->log("warn", "$url was not fetched, the url is prohibited") ; return 0; } else { $self->log("info", "posted data to $_[0] successfully", @_) ; } } else { $self->log("error", "error POSTing data to $_[0]", @_) ; } $self->stash->{history} = [] unless defined $self->stash->{history}; push @{$self->stash->{history}}, $url; $self->worker->{cookie_jar}->scan( sub { my ($version, $key, $val, $path, $domain, $port, $path_spec, $secure, $expires, $discard, $hash ) = @_; $self->session->stash('cookies' => {}) unless defined $self->session->stash('cookies'); $self->session->stash->{'cookies'}->{$domain}->{$key} = { version => $version, key => $key, val => $val, path => $path, domain => $domain, port => $port, path_spec => $path_spec, secure => $secure, expires => $expires, discard => $discard, hash => $hash }; $self->session->write; } ); $self->worker->{params} = {}; $self->worker->{params} = {map { ($_ => $url->query_form($_)) } $url->query_form}; sleep $self->pause; return $self; } sub proxy { my $self = shift; my $proxy = pop @_; my @protocol = @_; $self->worker->proxy([@protocol], $proxy); $self->log("info", "Set proxy $proxy using protocol(s) " . join ' and ', @protocol); return $self; } sub request_denied { my $self = shift; my ($last) = reverse @{$self->stash->{history}}; return 1 if ($self->url ne $last); } sub select { my ($self, $selector, $html) = @_; my $parser = Scrappy::Scraper::Parser->new; $parser->html($html ? $html : $self->content); return $parser->select($selector); } sub log { my $self = shift; my $type = shift; my @args = @_; if ($self->debug) { if ($type eq 'info') { $self->logger->info(@args); } elsif ($type eq 'warn') { $self->logger->warn(@args); } elsif ($type eq 'error') { $self->logger->error(@args); } else { warn $type; $self->logger->event($type, @args); } return 1; } else { return 0; } } sub pause { my $self = shift; if (defined $_[0]) { if ($_[1]) { my @range = (($_[0] < $_[1] ? $_[0] : 0) .. $_[1]); $self->worker->{pause_range} = [$_[0], $_[1]]; $self->worker->{pause} = $range[rand(@range)]; } else { $self->worker->{pause} = $_[0]; $self->worker->{pause_range} = [0, 0] unless $_[0]; } } else { my $interval = $self->worker->{pause} || 0; # select the next random pause value from the range if (defined $self->worker->{pause_range}) { my @range = @{$self->worker->{pause_range}}; $self->pause(@range) if @range == 2; } $self->log("info", "processing was halted for $interval seconds") if $interval > 0; return $interval; } } sub response { return shift->worker->response; } sub stash { my $self = shift; $self->{stash} = {} unless defined $self->{stash}; if (@_) { my $stash = @_ > 1 ? {@_} : $_[0]; if ($stash) { if (ref $stash eq 'HASH') { $self->{stash}->{$_} = $stash->{$_} for keys %{$stash}; } else { return $self->{stash}->{$stash}; } } } return $self->{stash}; } sub store { # return shift->worker->save_content(@_); # oh no i didnt just rewrite www:mech save_content, oh yes i did # ... in hope to avoid content encoding issues my $self = shift; my $filename = shift; open( my $fh, '>', $filename ) or $self->worker->die( "Unable to create $filename: $!" ); if ($self->worker->content_type =~ m{^text/} || $self->worker->content_type =~ m{^application/(atom|css|javascript|json|rss|xml)}) { # text $self->worker->response->decode; print {$fh} $self->worker->response->content or $self->worker->die( "Unable to write to $filename: $!" ); } else { # binary binmode $fh; print {$fh} $self->worker->response->content or $self->worker->die( "Unable to write to $filename: $!" ); } close $fh or $self->worker->die( "Unable to close $filename: $!" ); return $self; } sub url { return $_[0]->worker->uri if $_[0]->content; } 1; Action000755000000000000 011614255475 16202 5ustar00rootroot000000000000Scrappy-0.94112090/lib/ScrappyHelp.pm000644000000000000 254011614255475 17570 0ustar00rootroot000000000000Scrappy-0.94112090/lib/Scrappy/Actionpackage Scrappy::Action::Help; BEGIN { $Scrappy::Action::Help::VERSION = '0.94112090'; } use Moose::Role; sub menu { my @actions = @{shift->actions}; my @header = (); while () { chomp; push @header, $_; } @actions = map { my $action = $_; $action =~ s/^Scrappy::Action:://; $action =~ s/::/\-/g; $action =~ s/([a-z])([A-Z])/$1\_$2/g; lc "\t$action" } sort @actions; return join("\n", @header) . "\n" . "These commands are currently available:\n\n" . join("\n", @actions) . "\n"; } sub help { my $self = shift; my $data = shift; $data .= "::DATA"; my @header = (); my @content = (); while () { chomp; push @header, $_; } if ($data =~ /^Scrappy::Action::/) { if ($data ne 'Scrappy::Action::Help::DATA') { while (<$data>) { chomp; push @content, $_; } } } return join("\n", @header) . "\n" . (@content ? join("\n", @content) . "\n" : ""); } 1; __DATA__ Welcome to the Scrappy command-line interface. This application should be used to create new projects and execute various installed actions (under the Scrappy::Action namespace); * See `scrappy [COMMAND]` for more information on a specific command. 00_test_function_crawl.t000644000000000000 104711614255470 17735 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use Scrappy; use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 1) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); my $s = Scrappy->new; $s->crawl('http://search.cpan.org/recent', '/recent' => { '#cpansearch li a' => sub { defined $_[0]->stash->{links} ? push @{$_[0]->stash->{links}}, $_[1]->{href} : $_[0]->stash('links' => [$_[1]->{href}]); } } ); ok scalar @{$s->stash->{links}} > 0;00_test_function_proxy.t000644000000000000 26111614255470 17763 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 1) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); use_ok 'Scrappy'; 00_test_function_stash.t000644000000000000 26111614255470 17724 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 1) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); use_ok 'Scrappy'; 00_test_function_store.t000644000000000000 26111614255470 17736 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 1) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); use_ok 'Scrappy'; 00_test_function_debug.t000644000000000000 40711614255470 17672 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use Scrappy; use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 3) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); my $s = Scrappy->new; ok 1 == $s->debug; ok 0 == $s->debug(0); ok 1 == $s->debug(1); 00_test_function_queue.t000644000000000000 26111614255470 17726 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 1) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); use_ok 'Scrappy'; 00_test_function_pause.t000644000000000000 26111614255470 17717 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 1) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); use_ok 'Scrappy'; explorer.txt000644000000000000 4207511614255470 20177 0ustar00rootroot000000000000Scrappy-0.94112090/share/supportMozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SLCC1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322) Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2; SLCC1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 2.0.50727) Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.0; Trident/4.0; InfoPath.1; SV1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 3.0.04506.30) Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.2; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0) Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; Media Center PC 6.0; InfoPath.2; MS-RTC LM 8) Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; InfoPath.2) Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Zune 3.0) Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; msn OptimizedIE8;ZHCN) Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MS-RTC LM 8; .NET4.0C; .NET4.0E; Zune 4.7; InfoPath.3) Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MS-RTC LM 8) Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; Zune 4.0) Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3) Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; yie8) Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; Zune 3.0; MS-RTC LM 8) Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; MS-RTC LM 8; Zune 4.0) Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; MS-RTC LM 8) Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; FDM; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; .NET CLR 1.1.4322) Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; .NET4.0E; FDM) Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; eSobiSubscriber 2.0.4.16; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; InfoPath.3) Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; eSobiSubscriber 2.0.4.16; InfoPath.2; OfficeLiveConnector.1.5; OfficeLivePatch.1.3) Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0) Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30) Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; Media Center PC 3.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1) Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; FDM; .NET CLR 1.1.4322) Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727) Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1) Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; .NET CLR 1.1.4322; Alexa Toolbar; .NET CLR 2.0.50727) Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; .NET CLR 1.1.4322; Alexa Toolbar) Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727) Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.40607) Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; .NET CLR 1.1.4322) Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; .NET CLR 1.0.3705; Media Center PC 3.1; Alexa Toolbar; .NET CLR 1.1.4322; .NET CLR 2.0.50727) Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US) Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; el-GR) Mozilla/5.0 (MSIE 7.0; Macintosh; U; SunOS; X11; gu; SV1; InfoPath.2; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648) Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; c .NET CLR 3.0.04506; .NET CLR 3.5.30707; InfoPath.1; el-GR) Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; c .NET CLR 3.0.04506; .NET CLR 3.5.30707; InfoPath.1; el-GR) Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 6.0; fr-FR) Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 6.0; en-US) Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 2.0.50727) Mozilla/4.79 [en] (compatible; MSIE 7.0; Windows NT 5.0; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648) Mozilla/4.0 (Windows; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727) Mozilla/4.0 (Mozilla/4.0; MSIE 7.0; Windows NT 5.1; FDM; SV1; .NET CLR 3.0.04506.30) Mozilla/4.0 (Mozilla/4.0; MSIE 7.0; Windows NT 5.1; FDM; SV1) Mozilla/4.0 (compatible;MSIE 7.0;Windows NT 6.0) Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0) Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0;) Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; YPC 3.2.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618) Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; YPC 3.2.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506) Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; Media Center PC 5.0; .NET CLR 2.0.50727) Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 3.0.04506) Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET CLR 1.1.4322) Mozilla/4.0 (compatible; MSIE 6.1; Windows XP; .NET CLR 1.1.4322; .NET CLR 2.0.50727) Mozilla/4.0 (compatible; MSIE 6.1; Windows XP) Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.1; DigExt) Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.1) Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.0; YComp 5.0.2.6) Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.0; YComp 5.0.0.0) Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.0; .NET CLR 1.1.4322) Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.0) Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 4.0; .NET CLR 1.0.2914) Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 4.0) Mozilla/4.0 (compatible; MSIE 6.0b; Windows 98; YComp 5.0.0.0) Mozilla/4.0 (compatible; MSIE 6.0b; Windows 98; Win 9x 4.90) Mozilla/4.0 (compatible; MSIE 6.0b; Windows 98) Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.1) Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.0; .NET CLR 1.0.3705) Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 4.0) Mozilla/4.0 (compatible; MSIE 6.01; Windows NT 6.0) Mozilla/5.0 (Windows; U; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727) Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727) Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4325) Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1) Mozilla/45.0 (compatible; MSIE 6.0; Windows NT 5.1) Mozilla/4.08 (compatible; MSIE 6.0; Windows NT 5.1) Mozilla/4.01 (compatible; MSIE 6.0; Windows NT 5.1) Mozilla/4.0 (X11; MSIE 6.0; i686; .NET CLR 1.1.4322; .NET CLR 2.0.50727; FDM) Mozilla/4.0 (Windows; MSIE 6.0; Windows NT 6.0) Mozilla/4.0 (Windows; MSIE 6.0; Windows NT 5.2) Mozilla/4.0 (Windows; MSIE 6.0; Windows NT 5.0) Mozilla/4.0 (Windows; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727) Mozilla/4.0 (MSIE 6.0; Windows NT 5.1) Mozilla/4.0 (MSIE 6.0; Windows NT 5.0) Mozilla/4.0 (compatible;MSIE 6.0;Windows 98;Q312461) Mozilla/4.0 (Compatible; Windows NT 5.1; MSIE 6.0) (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727) Mozilla/4.0 (compatible; U; MSIE 6.0; Windows NT 5.1) Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618) Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 3.5.21022) Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322; .NET CLR 3.5.21022; InfoPath.2) Mozilla/4.0 (compatible; MSIE 6,0; Windows NT 5,1; SV1; Alexa Toolbar) Mozilla/4.0 (compatible; MSIE 5.5b1; Mac_PowerPC) Mozilla/4.0 (compatible; MSIE 5.50; Windows NT; SiteKiosk 4.9; SiteCoach 1.0) Mozilla/4.0 (compatible; MSIE 5.50; Windows NT; SiteKiosk 4.8; SiteCoach 1.0) Mozilla/4.0 (compatible; MSIE 5.50; Windows NT; SiteKiosk 4.8) Mozilla/4.0 (compatible; MSIE 5.50; Windows 98; SiteKiosk 4.8) Mozilla/4.0 (compatible; MSIE 5.50; Windows 95; SiteKiosk 4.8) Mozilla/4.0 (compatible;MSIE 5.5; Windows 98) Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.1) Mozilla/4.0 (compatible; MSIE 5.5;) Mozilla/4.0 (Compatible; MSIE 5.5; Windows NT5.0; Q312461; SV1; .NET CLR 1.1.4322; InfoPath.2) Mozilla/4.0 (compatible; MSIE 5.5; Windows NT5) Mozilla/4.0 (compatible; MSIE 5.5; Windows NT) Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30618) Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.5) Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.2; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; FDM) Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.2; .NET CLR 1.1.4322) Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.1; SV1; .NET CLR 1.1.4322) Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 1.1.4322) Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.1; .NET CLR 2.0.50727) Mozilla/4.0 (compatible; MSIE 5.23; Mac_PowerPC) Mozilla/4.0 (compatible; MSIE 5.22; Mac_PowerPC) Mozilla/4.0 (compatible; MSIE 5.21; Mac_PowerPC) Mozilla/4.0 (compatible; MSIE 5.2; Mac_PowerPC) Mozilla/4.0 (compatible; MSIE 5.2; Mac_PowerPC) Mozilla/4.0 (compatible; MSIE 5.17; Mac_PowerPC) Mozilla/4.0 (compatible; MSIE 5.17; Mac_PowerPC Mac OS; en) Mozilla/4.0 (compatible; MSIE 5.16; Mac_PowerPC) Mozilla/4.0 (compatible; MSIE 5.16; Mac_PowerPC) Mozilla/4.0 (compatible; MSIE 5.15; Mac_PowerPC) Mozilla/4.0 (compatible; MSIE 5.15; Mac_PowerPC) Mozilla/4.0 (compatible; MSIE 5.14; Mac_PowerPC) Mozilla/4.0 (compatible; MSIE 5.13; Mac_PowerPC) Mozilla/4.0 (compatible; MSIE 5.12; Mac_PowerPC) Mozilla/4.0 (compatible; MSIE 5.12; Mac_PowerPC) Mozilla/4.0 (compatible; MSIE 5.0b1; Mac_PowerPC) Mozilla/4.0 (compatible; MSIE 5.05; Windows NT 4.0) Mozilla/4.0 (compatible; MSIE 5.05; Windows NT 3.51) Mozilla/4.0 (compatible; MSIE 5.01; Windows NT; YComp 5.0.0.0) Mozilla/4.0 (compatible; MSIE 5.01; Windows NT; Hotbar 4.1.8.0) Mozilla/4.0 (compatible; MSIE 5.01; Windows NT; DigExt) Mozilla/4.0 (compatible; MSIE 5.01; Windows NT; .NET CLR 1.0.3705) Mozilla/4.0 (compatible; MSIE 5.01; Windows NT) Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; YComp 5.0.2.6; MSIECrawler) Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; YComp 5.0.2.6; Hotbar 4.2.8.0) Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; YComp 5.0.2.6; Hotbar 3.0) Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; YComp 5.0.2.6) Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; YComp 5.0.2.4) Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; YComp 5.0.0.0; Hotbar 4.1.8.0) Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; YComp 5.0.0.0) Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; Wanadoo 5.6) Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; Wanadoo 5.3; Wanadoo 5.5) Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; Wanadoo 5.1) Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; SV1; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 2.0.50727) Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; SV1) Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; Q312461; T312461) Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; Q312461) Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; MSIECrawler) Mozilla/4.0 (compatible; MSIE 5.00; Windows 98) Mozilla/4.0(compatible; MSIE 5.0; Windows 98; DigExt) Mozilla/4.0 (compatible; MSIE 5.0; Windows NT;) Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt; YComp 5.0.2.6) Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt; YComp 5.0.2.5) Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt; YComp 5.0.0.0) Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt; Hotbar 4.1.8.0) Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt; Hotbar 3.0) Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt; .NET CLR 1.0.3705) Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt) Mozilla/4.0 (compatible; MSIE 5.0; Windows NT) Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 5.9; .NET CLR 1.1.4322) Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 5.2; .NET CLR 1.1.4322) Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 5.0) Mozilla/4.0 (compatible; MSIE 5.0; Windows 98;) Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; YComp 5.0.2.4) Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; Hotbar 3.0) Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt; YComp 5.0.2.6; yplus 1.0) Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt; YComp 5.0.2.6) Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt; YComp 5.0.2.5; YComp 5.0.0.0) Mozilla/4.0 (compatible; MSIE 4.5; Windows 98; ) Mozilla/4.0 (compatible; MSIE 4.5; Mac_PowerPC) Mozilla/4.0 (compatible; MSIE 4.5; Mac_PowerPC) Mozilla/4.0 PPC (compatible; MSIE 4.01; Windows CE; PPC; 240x320; Sprint:PPC-6700; PPC; 240x320) Mozilla/4.0 (compatible; MSIE 4.01; Windows NT) Mozilla/4.0 (compatible; MSIE 4.01; Windows NT 5.0) Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Sprint;PPC-i830; PPC; 240x320) Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Sprint; SCH-i830; PPC; 240x320) Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Sprint:SPH-ip830w; PPC; 240x320) Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Sprint:SPH-ip320; Smartphone; 176x220) Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Sprint:SCH-i830; PPC; 240x320) Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Sprint:SCH-i320; Smartphone; 176x220) Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Sprint:PPC-i830; PPC; 240x320) Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Smartphone; 176x220) Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320; Sprint:PPC-6700; PPC; 240x320) Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320; PPC) Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC) Mozilla/4.0 (compatible; MSIE 4.01; Windows CE) Mozilla/4.0 (compatible; MSIE 4.01; Windows 98; Hotbar 3.0) Mozilla/4.0 (compatible; MSIE 4.01; Windows 98; DigExt) Mozilla/4.0 (compatible; MSIE 4.01; Windows 98) Mozilla/4.0 (compatible; MSIE 4.01; Windows 95) Mozilla/4.0 (compatible; MSIE 4.01; Mac_PowerPC) Mozilla/4.0 WebTV/2.6 (compatible; MSIE 4.0) Mozilla/4.0 (compatible; MSIE 4.0; Windows NT) Mozilla/4.0 (compatible; MSIE 4.0; Windows 98 ) Mozilla/4.0 (compatible; MSIE 4.0; Windows 95; .NET CLR 1.1.4322; .NET CLR 2.0.50727) Mozilla/4.0 (compatible; MSIE 4.0; Windows 95) Mozilla/4.0 (Compatible; MSIE 4.0) Mozilla/2.0 (compatible; MSIE 4.0; Windows 98) Mozilla/2.0 (compatible; MSIE 3.0B; Windows NT) Mozilla/2.0 (compatible; MSIE 3.03; Windows 3.1) Mozilla/2.0 (compatible; MSIE 3.02; Windows 3.1) Mozilla/2.0 (compatible; MSIE 3.01; Windows 95) Mozilla/2.0 (compatible; MSIE 3.01; Windows 95) Mozilla/3.0 (compatible; MSIE 3.0; Windows NT 5.0) Mozilla/2.0 (compatible; MSIE 3.0; Windows 95) Mozilla/2.0 (compatible; MSIE 3.0; Windows 3.1) Mozilla/4.0 (compatible; MSIE 2.0; Windows NT 5.0; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0) Mozilla/1.22 (compatible; MSIE 2.0; Windows 95) Mozilla/1.22 (compatible; MSIE 2.0; Windows 3.1)00_test_function_parser.t000644000000000000 26111614255470 20076 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 1) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); use_ok 'Scrappy'; 00_test_function_domain.t000644000000000000 52611614255470 20055 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use Scrappy; use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 2) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); my $s = Scrappy->new; $s->get("http://www.perl.org/"); ok $s->domain eq 'www.perl.org'; $s->get("http://search.cpan.org/"); ok $s->domain eq 'search.cpan.org';00_test_function_logger.t000644000000000000 26111614255470 20061 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 1) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); use_ok 'Scrappy'; 00_test_function_plugin.t000644000000000000 26111614255470 20100 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 1) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); use_ok 'Scrappy'; 00_test_function_select.t000644000000000000 26111614255470 20061 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 1) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); use_ok 'Scrappy'; 00_test_function_worker.t000644000000000000 26111614255470 20113 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 1) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); use_ok 'Scrappy'; 00_test_function_content.t000644000000000000 46511614255470 20262 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use Scrappy; use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 3) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); my $s = Scrappy->new; ok $s->get("http://search.cpan.org/"); ok 'HTTP::Response' eq ref $s->content; ok $s->content->decoded_content;00_test_function_plugins.t000644000000000000 26111614255470 20263 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 1) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); use_ok 'Scrappy'; 00_test_function_control.t000644000000000000 165711614255470 20314 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use Scrappy; use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 12) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); my $s = Scrappy->new; ok $s->control->allow('http://search.cpan.org/'); ok 'HASH' eq ref $s->control->allowed->{'search.cpan.org'}; ok $s->control->is_allowed('http://search.cpan.org/'); ok $s->control->is_allowed('http://search.cpan.org/recent'); ok $s->control->is_allowed('http://search.cpan.org/dist/Scrappy/lib/Scrappy.pm'); ok ! $s->control->is_allowed('http://www.google.com/'); ok 0 == keys %{$s->control->restricted}; # no restriction rules set ok $s->control->restrict('search.cpan.org'); ok ! $s->control->is_allowed('http://search.cpan.org/'); ok ! $s->control->is_allowed('http://search.cpan.org/recent'); ok ! $s->control->is_allowed('http://search.cpan.org/dist/Scrappy/lib/Scrappy.pm'); ok $s->control->is_allowed('http://www.google.com/'); 00_test_function_session.t000644000000000000 26111614255470 20265 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 1) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); use_ok 'Scrappy'; 00_test_function_cookies.t000644000000000000 35411614255470 20241 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use Scrappy; use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 1) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); my $s = Scrappy->new; ok 'HTTP::Cookies' eq ref $s->cookies; Scraper000755000000000000 011614255477 16366 5ustar00rootroot000000000000Scrappy-0.94112090/lib/ScrappyParser.pm000644000000000000 3504411614255476 20344 0ustar00rootroot000000000000Scrappy-0.94112090/lib/Scrappy/Scraper# ABSTRACT: Scrappy Scraper Data Extrator # Dist::Zilla: +PodWeaver package Scrappy::Scraper::Parser; BEGIN { $Scrappy::Scraper::Parser::VERSION = '0.94112090'; } # load OO System use Moose; # load other libraries use Carp; use Web::Scraper; # web-scraper object has 'worker' => ( is => 'ro', isa => 'Web::Scraper', default => sub { scraper(sub { }); } ); # html attribute has html => (is => 'rw', isa => 'Any'); # data attribute has data => (is => 'rw', isa => 'ArrayRef', default => sub { [] }); # html-tags attribute has 'html_tags' => ( is => 'rw', isa => 'HashRef', default => sub { return { 'abbr' => '@abbr', 'accept-charset' => '@accept', 'accept' => '@accept', 'accesskey' => '@accesskey', 'action' => '@action', 'align' => '@align', 'alink' => '@alink', 'alt' => '@alt', 'archive' => '@archive', 'axis' => '@axis', 'background' => '@background', 'bgcolor' => '@bgcolor', 'border' => '@border', 'cellpadding' => '@cellpadding', 'cellspacing' => '@cellspacing', 'char' => '@char', 'charoff' => '@charoff', 'charset' => '@charset', 'checked' => '@checked', 'cite' => '@cite', 'class' => '@class', 'classid' => '@classid', 'clear' => '@clear', 'code' => '@code', 'codebase' => '@codebase', 'codetype' => '@codetype', 'color' => '@color', 'cols' => '@cols', 'colspan' => '@colspan', 'compact' => '@compact', 'content' => '@content', 'coords' => '@coords', 'data' => '@data', 'datetime' => '@datetime', 'declare' => '@declare', 'defer' => '@defer', 'dir' => '@dir', 'disabled' => '@disabled', 'enctype' => '@enctype', 'face' => '@face', 'for' => '@for', 'frame' => '@frame', 'frameborder' => '@frameborder', 'headers' => '@headers', 'height' => '@height', 'href' => '@href', 'hreflang' => '@hreflang', 'hspace' => '@hspace', 'http' => '@http-equiv', 'id' => '@id', 'ismap' => '@ismap', 'label' => '@label', 'lang' => '@lang', 'language' => '@language', 'link' => '@link', 'longdesc' => '@longdesc', 'marginheight' => '@marginheight', 'marginwidth' => '@marginwidth', 'maxlength' => '@maxlength', 'media' => '@media', 'method' => '@method', 'multiple' => '@multiple', 'name' => '@name', 'nohref' => '@nohref', 'noresize' => '@noresize', 'noshade' => '@noshade', 'nowrap' => '@nowrap', 'object' => '@object', 'onblur' => '@onblur', 'onchange' => '@onchange', 'onclick' => '@onclick', 'ondblclick' => '@ondblclick', 'onfocus' => '@onfocus', 'onkeydown' => '@onkeydown', 'onkeypress' => '@onkeypress', 'onkeyup' => '@onkeyup', 'onload' => '@onload', 'onmousedown' => '@onmousedown', 'onmousemove' => '@onmousemove', 'onmouseout' => '@onmouseout', 'onmouseover' => '@onmouseover', 'onmouseup' => '@onmouseup', 'onreset' => '@onreset', 'onselect' => '@onselect', 'onsubmit' => '@onsubmit', 'onunload' => '@onunload', 'profile' => '@profile', 'prompt' => '@prompt', 'readonly' => '@readonly', 'rel' => '@rel', 'rev' => '@rev', 'rows' => '@rows', 'rowspan' => '@rowspan', 'rules' => '@rules', 'scheme' => '@scheme', 'scope' => '@scope', 'scrolling' => '@scrolling', 'selected' => '@selected', 'shape' => '@shape', 'size' => '@size', 'span' => '@span', 'src' => '@src', 'standby' => '@standby', 'start' => '@start', 'style' => '@style', 'summary' => '@summary', 'tabindex' => '@tabindex', 'target' => '@target', 'text' => '@text', 'title' => '@title', 'type' => '@type', 'usemap' => '@usemap', 'valign' => '@valign', 'value' => '@value', 'valuetype' => '@valuetype', 'version' => '@version', 'vlink' => '@vlink', 'vspace' => '@vspace', 'width' => '@width', 'text' => 'TEXT', 'html' => 'HTML', }; } ); sub filter { my ($self, @filters) = @_; # remove filter list if (@filters) { # remove all except for specified attributes $self->data( [ map { my $record = $_; my $changes = {}; foreach my $filter (@filters) { #if ('HASH' eq ref $filter) { # my ($tag, $value) = each(%{$filter}); # $changes->{$filter} = $record->{$filter} # if $record->{$filter} # && $record->{$filter} eq $value # && $filter eq $tag; #} #else { $changes->{$filter} = $record->{$filter} if $record->{$filter}; #} } $changes; } @{$self->data} ] ); } # remove all empty attributes $self->data( [ map { my $record = $_; foreach my $tag (keys %{$record}) { delete $record->{$tag} if !$record->{$tag} && $tag ne 'html' && $tag ne 'text'; } $record; } @{$self->data} ] ); return $self; } sub focus { my $self = shift; my $index = shift || 0; return $self unless $self->has_html; $self->html($self->data->[$index]->{html}); return $self; } sub scrape { my ($self, $selector, $html) = @_; $self->html($html) if $html; return [] unless $self->has_html; $self->select($selector); return $self->data; } sub select { my ($self, $selector, $html) = @_; $self->html($html) if $html; return $self unless $self->has_html; $self->worker->{code} = scraper { process($selector, "data[]", $self->html_tags); }; my $scraper = $self->worker->{code}; $self->data($scraper->scrape($self->html)->{data} || []); $self->filter; return $self; } sub first { return shift->data->[0]; } sub last { my $self = shift; my $index = @{$self->data} - 1; return $self->data->[$index]; } sub select_first { my ($self, $selector, $attribute) = @_; $self->select($selector); return $self->data->[0] ? $self->data->[0]->{$attribute || 'text'} : ''; } sub select_last { my ($self, $selector, $attribute) = @_; $self->select($selector); my $index = @{$self->data} - 1; return $self->data->[$index] ? $self->data->[$index]->{$attribute || 'text'} : ''; } sub each { my ($self, $code) = @_; foreach my $item (@{$self->data}) { $code->($item); } return $self; } sub has_html { my $self = shift; return $self->html ? 1 : 0; } 1; __END__ =pod =head1 NAME Scrappy::Scraper::Parser - Scrappy Scraper Data Extrator =head1 VERSION version 0.94112090 =head1 SYNOPSIS #!/usr/bin/perl use Scrappy::Scraper::Parser; my $parser = Scrappy::Scraper::Parser->new; $parser->html($html); # get all links in all table rows with CSS selector my $links = $parser->scrape('table tr a'); # select all links in the 2nd table row of all tables with XPATH selector my $links = $parser->scrape('//table/tr[2]/a'); # percision scraping ! # select all links in the 2nd table row ONLY with CSS selectors and focus() my $links = $parser->select('table tr') ->focus(2) ->scrape('a'); =head1 DESCRIPTION Scrappy::Scraper::Parser provides various tools for scraping/extracting information from web pages using the L framework. =head2 ATTRIBUTES The following is a list of object attributes available with every Scrappy::Scraper::Parser instance. =head3 data The data attribute gets/sets the extracted data which is returned from the scrape method. my $parser = Scrappy::Scraper::Parser->new; $parser->select('table tr'); $parser->data; =head3 html The html attribute gets/sets the HTML content to be parsed and extracted from. my $parser = Scrappy::Scraper::Parser->new; $parser->html($HTML); =head3 html_tags The html_tags attribute gets a hashref of all known HTML tags and attributes to be used with L. my $parser = Scrappy::Scraper::Parser->new; $parser->html_tags; =head3 worker The worker attribute holds the L object which is used to parse HTML and extract data. my $parser = Scrappy::Scraper::Parser->new; $parser->worker; =head1 METHODS =head2 filter The filter method allows you to filter the tags returned within the results by supplying the filter method with a list of tag attributes that you specifically want to return, forsaking all others, including the special text and html tags/keys. # filter results and only return meta tags with a content attribute my $parser = Scrappy::Scraper::Parser->new; $parser->select('meta'); print $parser->data; ... { name => '...', text => '...', html => '...', content => '....', http => '...', .... } print $parser->filter('name', 'content')->data; ... { name => '...', content => '....', } =head2 focus The focus method is used zero-in on specific blocks of HTML so the selectors only extract data from within the highlighted block. The focus method is meant to be used after the select method extracts rows of data, the focus method is passed an array index which zeros-in on that row of data. my $parser = Scrappy::Scraper::Parser->new; # percision scraping ! # select all links in the 2nd table row ONLY my $links = $parser->select('table tr') ->focus(2) ->scrape('a'); =head2 scrape The scrape method is used to extract data from the specified HTML and return the extracted data. This method is dentical to the select method with the exception of what is returned. my $parser = Scrappy::Scraper::Parser->new; my $links = $parser->scrape('a', $from_html); #get all links =head2 select The select method is used to extract data from the specified HTML and return the parser object. The data method can be used to access the extracted information. my $parser = Scrappy::Scraper::Parser->new; $parser->select('a', $from_html); #get all links my $links = $parser->data; =head2 first The first method is used to return the first element from the extracted dataset. my $parser = Scrappy::Scraper::Parser->new; $parser->select('a', $from_html); #get all links my $first_link = $parser->first; # equivalent to ... my $first_link = $parser->data->[0]; =head2 last The last method is used to return the last element from the extracted dataset. my $parser = Scrappy::Scraper::Parser->new; $parser->select('a', $from_html); #get all links my $last_link = $parser->last; # equivalent to ... my $last_link = $parser->data->[(@{$parser->data}-1)]; =head2 select_first The select_first method is a convenience feature combining the select() and first() methods to return the first element from the extracted data. my $parser = Scrappy::Scraper::Parser->new; $parser->select_first('a'); #get link text $parser->select_first('a', 'href'); #get link URL =head2 select_last The select_last method is a convenience feature combining the select() and last() methods to return the last element from the extracted data. my $parser = Scrappy::Scraper::Parser->new; $parser->select_last('a'); #get link text $parser->select_last('a', 'href'); #get link URL =head2 each The each method is used loop through the extracted dataset. The each method takes one argument, a code reference, and is passed the each extracted item. my $parser = Scrappy::Scraper::Parser->new; $parser->select('a', $from_html); #get all links $parser->each(sub{ print shift->{href} . "\n" }); =head2 has_html The has_html method return a boolean which determine whether HTML content has been set. my $parser = Scrappy::Scraper::Parser->new; print 'oh no' unless $parser->has_html; =head1 AUTHOR Al Newkirk =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2010 by awncorp. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut 00_test_function_response.t000644000000000000 26111614255470 20440 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 1) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); use_ok 'Scrappy'; 00_test_function_download.t000644000000000000 56111614255470 20414 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use Scrappy; use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 2) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); my $s = Scrappy->new; my $d = "$FindBin::Bin/htdocs"; ok $s->download('http://search.cpan.org/', $d, 'search.cpan.org.html'); ok -f "$d/search.cpan.org.html"; unlink "$d/search.cpan.org.html";Help.pm.bak000644000000000000 253511614255470 20323 0ustar00rootroot000000000000Scrappy-0.94112090/lib/Scrappy/Actionpackage Scrappy::Action::Help; BEGIN { $Scrappy::Action::Help::VERSION = '0.94112090'; } use Moose::Role; sub menu { my @actions = @{shift->actions}; my @header = (); while () { chomp; push @header, $_; } @actions = map { my $action = $_; $action =~ s/^Scrappy::Action:://; $action =~ s/::/\-/g; $action =~ s/([a-z])([A-Z])/$1\_$2/g; lc "\t$action" } sort @actions; return join("\n", @header) . "\n" . "These commands are currently available:\n\n" . join("\n", @actions) . "\n"; } sub help { my $self = shift; my $data = shift; $data .= "::DATA"; my @header = (); my @content = (); while () { chomp; push @header, $_; } if ($data =~ /^Scrappy::Action::/) { if ($data ne 'Scrappy::Action::Help::DATA') { while (<$data>) { chomp; push @content, $_; } } } return join("\n", @header) . "\n" . (@content ? join("\n", @content) . "\n" : ""); } 1; __DATA__ Welcome to the Scrappy command-line interface. This application should be used to create new projects and execute various installed actions (under the Scrappy::Action namespace); * See `scrappy [COMMAND]` for more information on a specific command. Generate.pm000644000000000000 1557211614255474 20462 0ustar00rootroot000000000000Scrappy-0.94112090/lib/Scrappy/Actionpackage Scrappy::Action::Generate; BEGIN { $Scrappy::Action::Generate::VERSION = '0.94112090'; } use File::Util; use Moose::Role; use String::TT qw/tt strip/; with 'Scrappy::Action::Help'; sub script { my ($self, @options) = @_; my $script_name = $options[0] || "myapp.pl"; return "\nThe specified file already exists\n" if -f $script_name; $script_name =~ s/\.pl$//; File::Util->new->make_dir(join("_", $script_name, "logs")); File::Util->new->write_file( 'file' => "$script_name.pl", 'bitmask' => 644, 'content' => strip tt q{ #!/usr/bin/perl use strict; use warnings; use Scrappy; my $scraper = Scrappy->new; my $datetime = $scraper->logger->timestamp; $datetime =~ s/\D//g; # report warning, errors and other information $scraper->debug(0); # report detailed event logs $scraper->logger->verbose(0); # create a new log file with each execution $scraper->logger->write("[% script_name %]_logs/$datetime.log") if $scraper->debug; # load session file for persistent storage between executions -f '[% script_name %].sess' ? $scraper->session->load('[% script_name %].sess') : $scraper->session->write('[% script_name %].sess'); # crawl something ... $scraper->crawl('http://localhost/', '/' => { 'body' => sub { my ($self, $item, $params) = @_; # ... } } ); } ); return "\n... successfully created script $script_name.pl\n"; } sub class { my ($self, @options) = @_; my $project = $options[0] || "MyApp"; return "\nPlease use a properly formatted class name\n" if $project =~ /[^a-zA-Z0-9\:]/; my $object = $project; $object =~ s/::/\-/g; my $path = $project; $path =~ s/::/\//g; File::Util->new->write_file( 'file' => -d $object ? "$object/lib/$path.pm" : "lib/$path.pm", 'bitmask' => 644, 'content' => strip tt q{ package [% project %]; use Moose; with 'Scrappy::Project::Document'; sub title { return shift->scraper->select('title') ->data->[0]->{text}; } 1; } ); return "\n... successfully created project class $project\n"; } sub project { my ($self, @options) = @_; my $project = $options[0] || "MyApp"; return "\nPlease use a properly formatted class name\n" if $project =~ /[^a-zA-Z0-9\:]/; my $object = $project; $object =~ s/::/\-/g; my $path = $project; $path =~ s/::/\//g; File::Util->new->make_dir('logs'); File::Util->new->write_file( 'file' => "$object/" . lc $object, 'bitmask' => 644, 'content' => strip tt q{ #!/usr/bin/perl use strict; use warnings; use lib 'lib'; use [% project %]; my $project = [% project %]->new; my $scraper = $project->scraper; my $datetime = $scraper->logger->timestamp; $datetime =~ s/\D//g; # report warning, errors and other information $scraper->debug(0); # report detailed event logs $scraper->logger->verbose(0); # create a new log file with each execution $scraper->logger->write("logs/$datetime.log") if $scraper->debug; # load session file for persistent storage between executions -f '[% object FILTER lower %].sess' ? $scraper->session->load('[% object FILTER lower %].sess') : $scraper->session->write('[% object FILTER lower %].sess'); my $url = 'http://search.cpan.org/'; if ($scraper->get($url)->page_loaded) { # testing testing 1 .. 2 .. 3 my $data = $project->parse_document($url); print $scraper->dumper($data); } } ); File::Util->new->write_file( 'file' => "$object/lib/$path.pm", 'bitmask' => 644, 'content' => strip tt q{ package [% project %]; use Moose; use Scrappy; with 'Scrappy::Project'; sub setup { # project class my $self = shift; # define route(s) - route web pages to parsers $self->route('/' => 'root'); # return your configured app instance return $self; } 1; } ); File::Util->new->write_file( 'file' => "$object/lib/$path/Root.pm", 'bitmask' => 644, 'content' => strip tt q{ package [% project %]::Root; use Moose; with 'Scrappy::Project::Document'; # ... maybe for parsing /index.html sub title { return shift->scraper->select('title') ->data->[0]->{text}; } 1; } ); File::Util->new->write_file( 'file' => "$object/lib/$path/List.pm", 'bitmask' => 644, 'content' => strip tt q{ package [% project %]::List; use Moose; with 'Scrappy::Project::Document'; # ... maybe for parsing /search.html sub title { return shift->scraper->select('title') ->data->[0]->{text}; } 1; } ); File::Util->new->write_file( 'file' => "$object/lib/$path/Page.pm", 'bitmask' => 644, 'content' => strip tt q{ package [% project %]::Page; use Moose; with 'Scrappy::Project::Document'; # ... maybe for parsing /:page.html sub title { return shift->scraper->select('title') ->data->[0]->{text}; } 1; } ); return "\n... successfully created project $project\n"; } 1; __DATA__ The generate action is use to generate various scaffolding (or boiler-plate code) to reduce the tedium, get you up and running quicker and with more efficiency. * Generate a Scrappy script USAGE: scrappy generate script [FILENAME] EXAMPLE: scrappy generate script eg/web_crawler.pl * Generate a Scrappy project USAGE: scrappy generate project [PACKAGE] EXAMPLE: scrappy generate project MyApp * Generate a Scrappy project class USAGE: scrappy generate class [CLASS] EXAMPLE: scrappy generate class MyApp::SearchPage Download.pm000644000000000000 1013011614255474 20460 0ustar00rootroot000000000000Scrappy-0.94112090/lib/Scrappy/Actionpackage Scrappy::Action::Download; BEGIN { $Scrappy::Action::Download::VERSION = '0.94112090'; } use URI; use Moose::Role; use Scrappy; with 'Scrappy::Action::Help'; sub page { my ($self, @options) = @_; my $url = $options[0]; die "Can't download a page without a proper URL" unless $url; $url = URI->new($url)->as_string; my $scraper = Scrappy->new; $scraper->debug(1); $scraper->logger->write('download.log'); my $downloader = { '//link[@href]' => sub { my ($self, $item, $params) = @_; my $link = ref $item->{href} ? $item->{href}->as_string : $item->{href}; if ($link) { if ($link =~ m{^$url} || $link !~ m/^http(s)?\:\/\//) { $link = URI->new_abs($link, $url)->as_string if $link !~ m/^http(s)?\:\/\//; $self->download($link); # assuming its a css stylesheet, lets see if we find # any images that need downloading # YES, ITS A HACK ... and a bad one, AHHHHHHHHHHHHHHH !!!!!! if ($self->get($link)->page_loaded) { if ( $self->worker->content_type =~ /css/ || $self->worker->response->filename =~ /\.css(\?.*)?$/) { if ($self->content) { $self->content->decode; my @urls = $self->content->as_string =~ /url\s{0,}?\([\'\"\s]{0,}?([^\)]+)?[\'\"\s]{0,}?\)/g; if (@urls) { # download any found urls (probably images) foreach my $url (@urls) { $url =~ s/^\s+//g; $url =~ s/\s+$//g; $url =~ s/[\'\"]//g; $url !~ m/^http(s)?\:\/\// ? $self->download( URI->new_abs($url, $link)) : $self->download($url); } } } } } } } }, '//script[@src]' => sub { my ($self, $item, $params) = @_; my $script = ref $item->{src} ? $item->{src}->as_string : $item->{src}; if ($script) { $script = URI->new_abs($script, $url)->as_string if $script !~ m/^http(s)?\:\/\//; $self->download($script) if $script =~ m{^$url} || $script !~ m/^http(s)?\:\/\//; } }, '//img[@src]' => sub { my ($self, $item, $params) = @_; my $image = ref $item->{src} ? $item->{src}->as_string : $item->{src}; if ($image) { $image = URI->new_abs($image, $url)->as_string if $image !~ m/^http(s)?\:\/\//; $self->download($image) if $image =~ m{^$url} || $image !~ m/^http(s)?\:\/\//; } }, }; $scraper->crawl( $url, '/' => $downloader, '/*' => $downloader ); if ($scraper->get($url)->page_loaded) { my $filename = $scraper->worker->response->filename || 'index.html'; $scraper->store($filename); return "\n... successfully downloaded $filename and it's assets\n"; } return "\n... downloading may have had some trouble, see download.log\n"; } 1; __DATA__ The download action is use to download html pages and/or assets from the Internet for various reasons, e.g. backing up HTML pages, etc. * Download a web page and all images, scripts and stylesheets USAGE: scrappy download page [URL] EXAMPLE: scrappy download page http://search.cpan.org/ Control.pm000644000000000000 1417011614255476 20525 0ustar00rootroot000000000000Scrappy-0.94112090/lib/Scrappy/Scraper# ABSTRACT: Scrappy HTTP Request Constraints System # Dist::Zilla: +PodWeaver package Scrappy::Scraper::Control; BEGIN { $Scrappy::Scraper::Control::VERSION = '0.94112090'; } # load OO System use Moose; # load other libraries use URI; has 'allowed' => (is => 'rw', isa => 'HashRef', default => sub { {} }); has 'options' => ( is => 'ro', isa => 'HashRef', 'default' => sub { {} } ); has 'restricted' => (is => 'rw', isa => 'HashRef', default => sub { {} }); sub allow { my ($self, $target, %constraints) = @_; my $i = 0; $target = URI->new($target); next unless $target && ("URI::http" eq ref $target || "URI::https" eq ref $target); $target = $target->host; delete $self->restricted->{$target} if defined $self->restricted->{$target}; $self->allowed->{$target} = {%constraints}; $i++ if defined $target; return $i; } sub restrict { my ($self, $target, %constraints) = @_; my $i = 0; $target = URI->new($target); next unless $target && ("URI::http" eq ref $target || "URI::https" eq ref $target); $target = $target->host; delete $self->allowed->{$target} if defined $self->allowed->{$target}; $self->restricted->{$target} = {%constraints}; $i++ if defined $target; return $i; } sub is_allowed { my $self = shift; my $url = shift; my %options = @_; # empty domain not allowed return 0 unless $url; # for advanced constraints checking, an HTTP::Response object may be passed my $http; if ("HTTP::Response" eq ref $url) { $http = $url; $url = $url->request->uri; } return 0 unless ("URI::http" eq ref $url || "URI::https" eq ref $url); $url = $url->host; # is anything explicitly allowed, if so everything is restricted unless # explicitly defined in allowed if (keys %{$self->allowed}) { if (keys %{$self->allowed}) { # return $self->allowed->{$url} ? 1 : 0; if ($self->allowed->{$url}) { if ($self->allowed->{$url}->{if}) { return $self->_check_constraints( $self->allowed->{$url}->{if}, $http); } else { return 1; } } else { return 0; } } } # is it explicitly restricted if (keys %{$self->restricted}) { if (keys %{$self->restricted}) { # return 0 if $self->restricted->{$url}; if ($self->restricted->{$url}) { if ($self->restricted->{$url}->{if}) { return $self->_check_constraints( $self->allowed->{$url}->{if}, $http); } else { return 1; } } else { return 0; } } } # i guess its cool return 1; } sub _check_constraints { my ($self, $constraints, $http_response) = @_; # check for failure, if not pass it if ($constraints->{content_type}) { my $ctype = $http_response->header('content_type'); my $types = "ARRAY" eq ref $constraints->{content_type} ? $constraints->{content_type} : [$constraints->{content_type}]; return 1 if (grep { $ctype eq $_ } @{$types}); } return 0; } 1; __END__ =pod =head1 NAME Scrappy::Scraper::Control - Scrappy HTTP Request Constraints System =head1 VERSION version 0.94112090 =head1 SYNOPSIS #!/usr/bin/perl use Scrappy::Scraper::Control; my $control = Scrappy::Scraper::Control->new; $control->allow('http://search.cpan.org'); $control->allow('http://search.cpan.org', if => { content_type => ['text/html', 'application/x-tar'] } ); $control->restrict('http://www.cpan.org'); if ($control->is_allowed('http://search.cpan.org/')) { ... } # constraints will only be checked if the is_allowed method is # passed a HTTP::Response object. =head1 DESCRIPTION Scrappy::Scraper::Control provides HTTP request access control for the L framework. =head2 ATTRIBUTES The following is a list of object attributes available with every Scrappy::Scraper::Control instance. =head3 allowed The allowed attribute holds a hasherf of allowed domain/contraints. my $control = Scrappy::Scraper::Control->new; $control->allowed; e.g. { 'www.foobar.com' => { methods => [qw/GET POST PUSH PUT DELETE/], content_type => ['text/html'] } } =head3 restricted The restricted attribute holds a hasherf of restricted domain/contraints. my $control = Scrappy::Scraper::Control->new; $control->restricted; e.g. { 'www.foobar.com' => { methods => [qw/GET POST PUSH PUT DELETE/] } } =head1 METHODS =head2 allow my $control = Scrappy::Scraper::Control->new; $control->allow('http://www.perl.org'); $control->allow('http://search.cpan.org', if => { content_type => ['text/html', 'application/x-tar'] } ); =head2 restrict my $control = Scrappy::Scraper::Control->new; $control->restrict('http://www.perl.org'); $control->restrict('http://search.cpan.org', if => { content_type => ['text/html', 'application/x-tar'] } ); =head2 is_allowed my $control = Scrappy::Scraper::Control->new; $control->allow('http://search.cpan.org'); $control->restrict('http://www.perl.org'); if (! $control->is_allowed('http://perl.org')) { die 'Cant get to Perl.org'; } =head1 AUTHOR Al Newkirk =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2010 by awncorp. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut 00_test_function_page_data.t000644000000000000 26111614255470 20507 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 1) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); use_ok 'Scrappy'; 00_test_function_page_text.t000644000000000000 26111614255470 20562 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 1) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); use_ok 'Scrappy'; Project000755000000000000 011614255475 16373 5ustar00rootroot000000000000Scrappy-0.94112090/lib/ScrappyDocument.pm000644000000000000 243011614255475 20645 0ustar00rootroot000000000000Scrappy-0.94112090/lib/Scrappy/Projectpackage Scrappy::Project::Document; BEGIN { $Scrappy::Project::Document::VERSION = '0.94112090'; } use Moose::Role; has fields => ( is => 'ro', isa => 'ArrayRef', default => sub { my $self = shift; #die Data::Dumper::Dumper((shift->meta->get_all_methods)[1]); my @fields = (); for ($self->meta->get_all_methods) { push @fields, $_->name if $_->package_name eq ref $self && $_->name ne 'meta' && $_->name ne 'scraper' && $_->name ne 'fields' && $_->name ne 'parse' && $_->name ne 'records' && $_->name ne 'url'; ##### NOTE !!!!!! The list above must always contain a list ##### of all attributes and function in this role } return [@fields]; } ); has records => ( is => 'rw', isa => 'ArrayRef', default => sub { [] } ); has scraper => ( is => 'rw', isa => 'Scrappy' ); sub parse { my ($self, $vars) = @_; my $record = {}; map { $record->{$_} = $self->$_($self->scraper, $vars) } @{$self->fields}; # $record->{url} = $self->scraper->url->as_string; push @{$self->records}, $record; return $record; } 1; 00_test_function_page_title.t000644000000000000 26111614255470 20717 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 1) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); use_ok 'Scrappy'; 00_test_function_page_match.t000644000000000000 26111614255470 20672 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 1) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); use_ok 'Scrappy'; 00_test_function_user_agent.t000644000000000000 26111614255470 20736 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 1) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); use_ok 'Scrappy'; UserAgent.pm000644000000000000 405611614255477 20765 0ustar00rootroot000000000000Scrappy-0.94112090/lib/Scrappy/Scraperpackage Scrappy::Scraper::UserAgent; BEGIN { $Scrappy::Scraper::UserAgent::VERSION = '0.94112090'; } # load OO System use Moose; # load other libraries use Carp; use FindBin; use File::ShareDir ':ALL'; use File::Slurp; has 'name' => (is => 'rw', isa => 'Str'); has 'options' => (is => 'rw', isa => 'HashRef'); sub random_user_agent { my $self = shift; my ($browser, $os) = @_; $browser = 'any' unless $browser; $browser = 'explorer' if lc($browser) eq 'internet explorer' || lc($browser) eq 'explorer' || lc($browser) eq 'ie'; $browser = lc $browser; my @browsers = ('explorer', 'chrome', 'firefox', 'opera', 'safari'); my @oss = ('Windows', 'Linux', 'Macintosh'); if ($browser ne 'any') { croak("Can't load user-agents from unrecognized browser $browser") unless grep /^$browser$/, @browsers; } if ($os) { $os = ucfirst(lc($os)); croak("Can't filter user-agents with an unrecognized Os $os") unless grep /^$os$/, @oss; } my @selection = (); $self->options({}) unless defined $self->options; if ($browser eq 'any') { if ($self->options->{any}) { @selection = @{$self->options->{any}}; } else { foreach my $file (@browsers) { my $u = dist_dir('Scrappy') . "/support/$file.txt"; $u = "share/support/$file.txt" unless -e $u; push @selection, read_file($u); } $self->options->{'any'} = [@selection]; } } else { if ($self->options->{$browser}) { @selection = @{$self->options->{$browser}}; } else { my $u = dist_dir('Scrappy') . "/support/$browser.txt"; $u = "share/support/$browser.txt" unless -e $u; push @selection, read_file($u); $self->options->{$browser} = [@selection]; } } @selection = grep /$os/, @selection if $os; $self->name($selection[rand(@selection)] || ''); return $self->name; } 1; 00_test_function_page_ishtml.t000644000000000000 26111614255470 21076 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 1) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); use_ok 'Scrappy'; 00_test_function_page_status.t000644000000000000 26111614255470 21121 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 1) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); use_ok 'Scrappy'; 00_test_function_page_loaded.t000644000000000000 26111614255470 21026 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 1) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); use_ok 'Scrappy'; 00_test_function_page_reload.t000644000000000000 26111614255470 21044 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 1) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); use_ok 'Scrappy'; Parser.pm.bak000644000000000000 3465511614255470 21101 0ustar00rootroot000000000000Scrappy-0.94112090/lib/Scrappy/Scraper# ABSTRACT: Scrappy Scraper Data Extrator # Dist::Zilla: +PodWeaver package Scrappy::Scraper::Parser; BEGIN { $Scrappy::Scraper::Parser::VERSION = '0.94112090'; } # load OO System use Moose; # load other libraries use Carp; use Web::Scraper; # web-scraper object has 'worker' => ( is => 'ro', isa => 'Web::Scraper', default => sub { scraper(sub { }); } ); # html attribute has html => (is => 'rw', isa => 'Any'); # data attribute has data => (is => 'rw', isa => 'ArrayRef', default => sub { [] }); # html-tags attribute has 'html_tags' => ( is => 'rw', isa => 'HashRef', default => sub { return { 'abbr' => '@abbr', 'accept-charset' => '@accept', 'accept' => '@accept', 'accesskey' => '@accesskey', 'action' => '@action', 'align' => '@align', 'alink' => '@alink', 'alt' => '@alt', 'archive' => '@archive', 'axis' => '@axis', 'background' => '@background', 'bgcolor' => '@bgcolor', 'border' => '@border', 'cellpadding' => '@cellpadding', 'cellspacing' => '@cellspacing', 'char' => '@char', 'charoff' => '@charoff', 'charset' => '@charset', 'checked' => '@checked', 'cite' => '@cite', 'class' => '@class', 'classid' => '@classid', 'clear' => '@clear', 'code' => '@code', 'codebase' => '@codebase', 'codetype' => '@codetype', 'color' => '@color', 'cols' => '@cols', 'colspan' => '@colspan', 'compact' => '@compact', 'content' => '@content', 'coords' => '@coords', 'data' => '@data', 'datetime' => '@datetime', 'declare' => '@declare', 'defer' => '@defer', 'dir' => '@dir', 'disabled' => '@disabled', 'enctype' => '@enctype', 'face' => '@face', 'for' => '@for', 'frame' => '@frame', 'frameborder' => '@frameborder', 'headers' => '@headers', 'height' => '@height', 'href' => '@href', 'hreflang' => '@hreflang', 'hspace' => '@hspace', 'http' => '@http-equiv', 'id' => '@id', 'ismap' => '@ismap', 'label' => '@label', 'lang' => '@lang', 'language' => '@language', 'link' => '@link', 'longdesc' => '@longdesc', 'marginheight' => '@marginheight', 'marginwidth' => '@marginwidth', 'maxlength' => '@maxlength', 'media' => '@media', 'method' => '@method', 'multiple' => '@multiple', 'name' => '@name', 'nohref' => '@nohref', 'noresize' => '@noresize', 'noshade' => '@noshade', 'nowrap' => '@nowrap', 'object' => '@object', 'onblur' => '@onblur', 'onchange' => '@onchange', 'onclick' => '@onclick', 'ondblclick' => '@ondblclick', 'onfocus' => '@onfocus', 'onkeydown' => '@onkeydown', 'onkeypress' => '@onkeypress', 'onkeyup' => '@onkeyup', 'onload' => '@onload', 'onmousedown' => '@onmousedown', 'onmousemove' => '@onmousemove', 'onmouseout' => '@onmouseout', 'onmouseover' => '@onmouseover', 'onmouseup' => '@onmouseup', 'onreset' => '@onreset', 'onselect' => '@onselect', 'onsubmit' => '@onsubmit', 'onunload' => '@onunload', 'profile' => '@profile', 'prompt' => '@prompt', 'readonly' => '@readonly', 'rel' => '@rel', 'rev' => '@rev', 'rows' => '@rows', 'rowspan' => '@rowspan', 'rules' => '@rules', 'scheme' => '@scheme', 'scope' => '@scope', 'scrolling' => '@scrolling', 'selected' => '@selected', 'shape' => '@shape', 'size' => '@size', 'span' => '@span', 'src' => '@src', 'standby' => '@standby', 'start' => '@start', 'style' => '@style', 'summary' => '@summary', 'tabindex' => '@tabindex', 'target' => '@target', 'text' => '@text', 'title' => '@title', 'type' => '@type', 'usemap' => '@usemap', 'valign' => '@valign', 'value' => '@value', 'valuetype' => '@valuetype', 'version' => '@version', 'vlink' => '@vlink', 'vspace' => '@vspace', 'width' => '@width', 'text' => 'TEXT', 'html' => 'HTML', }; } ); sub filter { my ($self, @filters) = @_; # remove filter list if (@filters) { # remove all except for specified attributes $self->data([ map { my $record = $_; my $changes = {}; foreach my $filter (@filters) { #if ('HASH' eq ref $filter) { # my ($tag, $value) = each(%{$filter}); # $changes->{$filter} = $record->{$filter} # if $record->{$filter} # && $record->{$filter} eq $value # && $filter eq $tag; #} #else { $changes->{$filter} = $record->{$filter} if $record->{$filter}; #} } $changes; } @{$self->data} ]); } # remove all empty attributes $self->data([ map { my $record = $_; foreach my $tag (keys %{$record}) { delete $record->{$tag} if !$record->{$tag} && $tag ne 'html' && $tag ne 'text'; } $record; } @{$self->data} ]); return $self; } sub focus { my $self = shift; my $index = shift || 0; return $self unless $self->has_html; $self->html($self->data->[$index]->{html}); return $self; } sub scrape { my ($self, $selector, $html) = @_; $self->html($html) if $html; return [] unless $self->has_html; $self->select($selector); return $self->data; } sub select { my ($self, $selector, $html) = @_; $self->html($html) if $html; return $self unless $self->has_html; $self->worker->{code} = scraper { process($selector, "data[]", $self->html_tags); }; my $scraper = $self->worker->{code}; $self->data($scraper->scrape($self->html)->{data} || []); $self->filter; return $self; } sub first { return shift->data->[0]; } sub last { my $self = shift; my $index = @{$self->data} - 1; return $self->data->[$index]; } sub select_first { my ($self, $selector, $attribute) = @_; $self->select($selector); return $self->data->[0] ? $self->data->[0]->{$attribute || 'text'} : ''; } sub select_last { my ($self, $selector, $attribute) = @_; $self->select($selector); my $index = @{$self->data} - 1; return $self->data->[$index] ? $self->data->[$index]->{$attribute || 'text'} : ''; } sub each { my ($self, $code) = @_; foreach my $item (@{$self->data}) { $code->($item); } return $self; } sub has_html { my $self = shift; return $self->html ? 1 : 0; } 1; __END__ =pod =head1 NAME Scrappy::Scraper::Parser - Scrappy Scraper Data Extrator =head1 VERSION version 0.94112090 =head1 SYNOPSIS #!/usr/bin/perl use Scrappy::Scraper::Parser; my $parser = Scrappy::Scraper::Parser->new; $parser->html($html); # get all links in all table rows with CSS selector my $links = $parser->scrape('table tr a'); # select all links in the 2nd table row of all tables with XPATH selector my $links = $parser->scrape('//table/tr[2]/a'); # percision scraping ! # select all links in the 2nd table row ONLY with CSS selectors and focus() my $links = $parser->select('table tr') ->focus(2) ->scrape('a'); =head1 DESCRIPTION Scrappy::Scraper::Parser provides various tools for scraping/extracting information from web pages using the L framework. =head2 ATTRIBUTES The following is a list of object attributes available with every Scrappy::Scraper::Parser instance. =head3 data The data attribute gets/sets the extracted data which is returned from the scrape method. my $parser = Scrappy::Scraper::Parser->new; $parser->select('table tr'); $parser->data; =head3 html The html attribute gets/sets the HTML content to be parsed and extracted from. my $parser = Scrappy::Scraper::Parser->new; $parser->html($HTML); =head3 html_tags The html_tags attribute gets a hashref of all known HTML tags and attributes to be used with L. my $parser = Scrappy::Scraper::Parser->new; $parser->html_tags; =head3 worker The worker attribute holds the L object which is used to parse HTML and extract data. my $parser = Scrappy::Scraper::Parser->new; $parser->worker; =head1 METHODS =head2 filter The filter method allows you to filter the tags returned within the results by supplying the filter method with a list of tag attributes that you specifically want to return, forsaking all others, including the special text and html tags/keys. # filter results and only return meta tags with a content attribute my $parser = Scrappy::Scraper::Parser->new; $parser->select('meta'); print $parser->data; ... { name => '...', text => '...', html => '...', content => '....', http => '...', .... } print $parser->filter('name', 'content')->data; ... { name => '...', content => '....', } =head2 focus The focus method is used zero-in on specific blocks of HTML so the selectors only extract data from within the highlighted block. The focus method is meant to be used after the select method extracts rows of data, the focus method is passed an array index which zeros-in on that row of data. my $parser = Scrappy::Scraper::Parser->new; # percision scraping ! # select all links in the 2nd table row ONLY my $links = $parser->select('table tr') ->focus(2) ->scrape('a'); =head2 scrape The scrape method is used to extract data from the specified HTML and return the extracted data. This method is dentical to the select method with the exception of what is returned. my $parser = Scrappy::Scraper::Parser->new; my $links = $parser->scrape('a', $from_html); #get all links =head2 select The select method is used to extract data from the specified HTML and return the parser object. The data method can be used to access the extracted information. my $parser = Scrappy::Scraper::Parser->new; $parser->select('a', $from_html); #get all links my $links = $parser->data; =head2 first The first method is used to return the first element from the extracted dataset. my $parser = Scrappy::Scraper::Parser->new; $parser->select('a', $from_html); #get all links my $first_link = $parser->first; # equivalent to ... my $first_link = $parser->data->[0]; =head2 last The last method is used to return the last element from the extracted dataset. my $parser = Scrappy::Scraper::Parser->new; $parser->select('a', $from_html); #get all links my $last_link = $parser->last; # equivalent to ... my $last_link = $parser->data->[(@{$parser->data}-1)]; =head2 select_first The select_first method is a convenience feature combining the select() and first() methods to return the first element from the extracted data. my $parser = Scrappy::Scraper::Parser->new; $parser->select_first('a'); #get link text $parser->select_first('a', 'href'); #get link URL =head2 select_last The select_last method is a convenience feature combining the select() and last() methods to return the last element from the extracted data. my $parser = Scrappy::Scraper::Parser->new; $parser->select_last('a'); #get link text $parser->select_last('a', 'href'); #get link URL =head2 each The each method is used loop through the extracted dataset. The each method takes one argument, a code reference, and is passed the each extracted item. my $parser = Scrappy::Scraper::Parser->new; $parser->select('a', $from_html); #get all links $parser->each(sub{ print shift->{href} . "\n" }); =head2 has_html The has_html method return a boolean which determine whether HTML content has been set. my $parser = Scrappy::Scraper::Parser->new; print 'oh no' unless $parser->has_html; =head1 AUTHOR Al Newkirk =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2010 by awncorp. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Plugin000755000000000000 011614255475 16223 5ustar00rootroot000000000000Scrappy-0.94112090/lib/ScrappyRandomProxy.pm000644000000000000 1140711614255475 21225 0ustar00rootroot000000000000Scrappy-0.94112090/lib/Scrappy/Pluginpackage Scrappy::Plugin::RandomProxy; BEGIN { $Scrappy::Plugin::RandomProxy::VERSION = '0.94112090'; } use Moose::Role; has proxy_address => ( is => 'rw', isa => 'Str' ); has proxy_protocol => ( is => 'rw', isa => 'Str', default => 'HTTP' ); has proxy_list => ( is => 'rw', isa => 'ArrayRef', default => sub { [] } ); sub get_proxy_list { my $self = shift; # fetch list of HTTP proxies unless already gathered unless ($self->proxy_list) { # get a proxy from http://www.hidemyass.com/proxy-list/ $self->user_agent->random_user_agent; # goto hidemyass.com $self->get('http://www.hidemyass.com/proxy-list/'); # special post to get HTTP-80 proxies only my %headers = ( 'Content-Type' => 'application/x-www-form-urlencoded', 'Referer' => 'http://www.hidemyass.com/proxy-list/' ); my $form = { 'c[]' => [ 'United States', 'Indonesia', 'China', 'Brazil', 'Russian Federation', 'Iran, Islamic Republic of', 'Germany', 'India', 'Korea, Republic of', 'Kazakhstan', 'Ukraine', 'Japan', 'Colombia', 'Thailand', 'Egypt', 'Taiwan', 'Spain', 'Canada', 'Argentina', 'Poland', 'Czech Republic', 'Turkey', 'South Africa', 'Venezuela', 'France', 'Netherlands', 'Peru', 'Vietnam', 'Mexico', 'Switzerland', 'Bulgaria', 'Kenya', 'Ecuador', 'Latvia', 'Portugal', 'Slovakia', 'Chile', 'Italy', 'Denmark', 'Moldova, Republic of', 'United Kingdom', 'Greece', 'Norway', 'Israel', 'Hungary', 'Nigeria', 'Ireland', 'Australia', 'Hong Kong', 'Finland', 'Philippines', 'United Arab Emirates', 'Ghana', 'Bangladesh', 'Lebanon', 'Romania', 'Syrian Arab Republic', 'Austria', 'Sri Lanka', 'Serbia', 'Sweden', 'Macau', 'Iraq', 'Malaysia', 'Macedonia', 'Malta', 'Jamaica', 'Niger', 'Belarus', 'Bahamas', 'Antarctica', 'Bosnia and Herzegovina', 'Mozambique', 'Benin', 'Grenada', "Cote D'Ivoire", 'Mauritania', 'Brunei Darussalam', 'Ethiopia', 'Pakistan', 'Chad', 'Paraguay', 'Puerto Rico', 'Cambodia', 'Singapore', 'Guatemala', 'Fiji', 'Croatia', 'Kuwait', 'Palestinian Territory', 'Albania', 'Zimbabwe', 'Bolivia', 'Maldives', 'Luxembourg' ], 'pr[]' => ['0'], 'a[]' => ['2', '3', '4'], p => '80', pl => 'on', s => '0', o => '0', pp => '3', ac => 'on', sortBy => 'date' }; $self->post('http://www.hidemyass.com/proxy-list/', $form, %headers); my @proxies = (); my $rows = $self->select('#proxylist-table tr.row')->data; foreach my $row (@{$rows}) { my $cols = $self->select('td', $row->{html})->data; my ($server, $port, $type) = ($cols->[1]->{text}, 80, $cols->[6]->{text}); if ($type eq 'HTTP') { push @proxies, "$server:$port"; } } $self->proxy_list([@proxies]); $self->log( "info", "Proxy list created from hidemyass.com", proxy_list => [@proxies] ); } return $self; } sub use_random_proxy { my $self = shift; $self->get_proxy_list; # select and use a random a proxy my @proxies = @{$self->proxy_list}; my $proxy = $proxies[rand(@proxies)]; $self->proxy_address($proxy); $self->proxy('http', 'http://' . $proxy . '/'); $self->log("info", "Proxy has been set to $proxy using the HTTP protocol"); return $self; } 1; Generate.pm.bak000644000000000000 1571011614255470 21204 0ustar00rootroot000000000000Scrappy-0.94112090/lib/Scrappy/Actionpackage Scrappy::Action::Generate; BEGIN { $Scrappy::Action::Generate::VERSION = '0.94112090'; } use File::Util; use Moose::Role; use String::TT qw/tt strip/; with 'Scrappy::Action::Help'; sub script { my ($self, @options) = @_; my $script_name = $options[0] || "myapp.pl"; return "\nThe specified file already exists\n" if -f $script_name; $script_name =~ s/\.pl$//; File::Util->new->make_dir(join("_", $script_name, "logs")); File::Util->new->write_file( 'file' => "$script_name.pl", 'bitmask' => 644, 'content' => strip tt q{ #!/usr/bin/perl use strict; use warnings; use Scrappy; my $scraper = Scrappy->new; my $datetime = $scraper->logger->timestamp; $datetime =~ s/\D//g; # report warning, errors and other information $scraper->debug(0); # report detailed event logs $scraper->logger->verbose(0); # create a new log file with each execution $scraper->logger->write("[% script_name %]_logs/$datetime.log") if $scraper->debug; # load session file for persistent storage between executions -f '[% script_name %].sess' ? $scraper->session->load('[% script_name %].sess') : $scraper->session->write('[% script_name %].sess'); # crawl something ... $scraper->crawl('http://localhost/', '/' => { 'body' => sub { my ($self, $item, $params) = @_; # ... } } ); } ); return "\n... successfully created script $script_name.pl\n"; } sub class { my ($self, @options) = @_; my $project = $options[0] || "MyApp"; return "\nPlease use a properly formatted class name\n" if $project =~ /[^a-zA-Z0-9\:]/; my $object = $project; $object =~ s/::/\-/g; my $path = $project; $path =~ s/::/\//g; File::Util->new->write_file( 'file' => -d $object ? "$object/lib/$path.pm" : "lib/$path.pm", 'bitmask' => 644, 'content' => strip tt q{ package [% project %]; use Moose; with 'Scrappy::Project::Document'; sub title { return shift->scraper->select('title') ->data->[0]->{text}; } 1; } ); return "\n... successfully created project class $project\n"; } sub project { my ($self, @options) = @_; my $project = $options[0] || "MyApp"; return "\nPlease use a properly formatted class name\n" if $project =~ /[^a-zA-Z0-9\:]/; my $object = $project; $object =~ s/::/\-/g; my $path = $project; $path =~ s/::/\//g; File::Util->new->make_dir('logs'); File::Util->new->write_file( 'file' => "$object/" . lc $object, 'bitmask' => 644, 'content' => strip tt q{ #!/usr/bin/perl use strict; use warnings; use lib 'lib'; use [% project %]; my $project = [% project %]->new; my $scraper = $project->scraper; my $datetime = $scraper->logger->timestamp; $datetime =~ s/\D//g; # report warning, errors and other information $scraper->debug(0); # report detailed event logs $scraper->logger->verbose(0); # create a new log file with each execution $scraper->logger->write("logs/$datetime.log") if $scraper->debug; # load session file for persistent storage between executions -f '[% object FILTER lower %].sess' ? $scraper->session->load('[% object FILTER lower %].sess') : $scraper->session->write('[% object FILTER lower %].sess'); my $url = 'http://search.cpan.org/'; if ($scraper->get($url)->page_loaded) { # testing testing 1 .. 2 .. 3 my $data = $project->parse_document($url); print $scraper->dumper($data); } } ); File::Util->new->write_file( 'file' => "$object/lib/$path.pm", 'bitmask' => 644, 'content' => strip tt q{ package [% project %]; use Moose; use Scrappy; with 'Scrappy::Project'; sub setup { # project class my $self = shift; # define route(s) - route web pages to parsers $self->route('/' => 'root'); # return your configured app instance return $self; } 1; } ); File::Util->new->write_file( 'file' => "$object/lib/$path/Root.pm", 'bitmask' => 644, 'content' => strip tt q{ package [% project %]::Root; use Moose; with 'Scrappy::Project::Document'; # ... maybe for parsing /index.html sub title { return shift->scraper->select('title') ->data->[0]->{text}; } 1; } ); File::Util->new->write_file( 'file' => "$object/lib/$path/List.pm", 'bitmask' => 644, 'content' => strip tt q{ package [% project %]::List; use Moose; with 'Scrappy::Project::Document'; # ... maybe for parsing /search.html sub title { return shift->scraper->select('title') ->data->[0]->{text}; } 1; } ); File::Util->new->write_file( 'file' => "$object/lib/$path/Page.pm", 'bitmask' => 644, 'content' => strip tt q{ package [% project %]::Page; use Moose; with 'Scrappy::Project::Document'; # ... maybe for parsing /:page.html sub title { return shift->scraper->select('title') ->data->[0]->{text}; } 1; } ); return "\n... successfully created project $project\n"; } 1; __DATA__ The generate action is use to generate various scaffolding (or boiler-plate code) to reduce the tedium, get you up and running quicker and with more efficiency. * Generate a Scrappy script USAGE: scrappy generate script [FILENAME] EXAMPLE: scrappy generate script eg/web_crawler.pl * Generate a Scrappy project USAGE: scrappy generate project [PACKAGE] EXAMPLE: scrappy generate project MyApp * Generate a Scrappy project class USAGE: scrappy generate class [CLASS] EXAMPLE: scrappy generate class MyApp::SearchPage Control.pm.bak000644000000000000 1453111614255470 21254 0ustar00rootroot000000000000Scrappy-0.94112090/lib/Scrappy/Scraper# ABSTRACT: Scrappy HTTP Request Constraints System # Dist::Zilla: +PodWeaver package Scrappy::Scraper::Control; BEGIN { $Scrappy::Scraper::Control::VERSION = '0.94112090'; } # load OO System use Moose; # load other libraries use URI; has 'allowed' => (is => 'rw', isa => 'HashRef', default => sub { {} }); has 'options' => ( is => 'ro', isa => 'HashRef', 'default' => sub { {} } ); has 'restricted' => (is => 'rw', isa => 'HashRef', default => sub { {} }); sub allow { my ($self, $target, %constraints) = @_; my $i = 0; $target = URI->new($target); next unless $target && ("URI::http" eq ref $target || "URI::https" eq ref $target); $target = $target->host; delete $self->restricted->{$target} if defined $self->restricted->{$target}; $self->allowed->{$target} = { %constraints }; $i++ if defined $target; return $i; } sub restrict { my ($self, $target, %constraints) = @_; my $i = 0; $target = URI->new($target); next unless $target && ("URI::http" eq ref $target || "URI::https" eq ref $target); $target = $target->host; delete $self->allowed->{$target} if defined $self->allowed->{$target}; $self->restricted->{$target} = { %constraints }; $i++ if defined $target; return $i; } sub is_allowed { my $self = shift; my $url = shift; my %options = @_; # empty domain not allowed return 0 unless $url; # for advanced constraints checking, an HTTP::Response object may be passed my $http ; if ("HTTP::Response" eq ref $url) { $http = $url; $url = $url->request->uri; } return 0 unless ("URI::http" eq ref $url || "URI::https" eq ref $url); $url = $url->host; # is anything explicitly allowed, if so everything is restricted unless # explicitly defined in allowed if (keys %{$self->allowed}) { if (keys %{$self->allowed}) { # return $self->allowed->{$url} ? 1 : 0; if ($self->allowed->{$url}) { if ($self->allowed->{$url}->{if}) { return $self->_check_constraints( $self->allowed->{$url}->{if}, $http ); } else { return 1; } } else { return 0; } } } # is it explicitly restricted if (keys %{$self->restricted}) { if (keys %{$self->restricted}) { # return 0 if $self->restricted->{$url}; if ($self->restricted->{$url}) { if ($self->restricted->{$url}->{if}) { return $self->_check_constraints( $self->allowed->{$url}->{if}, $http ); } else { return 1; } } else { return 0; } } } # i guess its cool return 1; } sub _check_constraints { my ($self, $constraints, $http_response) = @_; # check for failure, if not pass it if ($constraints->{content_type}) { my $ctype = $http_response->header('content_type'); my $types = "ARRAY" eq ref $constraints->{content_type} ? $constraints->{content_type} : [$constraints->{content_type}]; return 1 if (grep { $ctype eq $_ } @{$types}); } return 0; } 1; __END__ =pod =head1 NAME Scrappy::Scraper::Control - Scrappy HTTP Request Constraints System =head1 VERSION version 0.94112090 =head1 SYNOPSIS #!/usr/bin/perl use Scrappy::Scraper::Control; my $control = Scrappy::Scraper::Control->new; $control->allow('http://search.cpan.org'); $control->allow('http://search.cpan.org', if => { content_type => ['text/html', 'application/x-tar'] } ); $control->restrict('http://www.cpan.org'); if ($control->is_allowed('http://search.cpan.org/')) { ... } # constraints will only be checked if the is_allowed method is # passed a HTTP::Response object. =head1 DESCRIPTION Scrappy::Scraper::Control provides HTTP request access control for the L framework. =head2 ATTRIBUTES The following is a list of object attributes available with every Scrappy::Scraper::Control instance. =head3 allowed The allowed attribute holds a hasherf of allowed domain/contraints. my $control = Scrappy::Scraper::Control->new; $control->allowed; e.g. { 'www.foobar.com' => { methods => [qw/GET POST PUSH PUT DELETE/], content_type => ['text/html'] } } =head3 restricted The restricted attribute holds a hasherf of restricted domain/contraints. my $control = Scrappy::Scraper::Control->new; $control->restricted; e.g. { 'www.foobar.com' => { methods => [qw/GET POST PUSH PUT DELETE/] } } =head1 METHODS =head2 allow my $control = Scrappy::Scraper::Control->new; $control->allow('http://www.perl.org'); $control->allow('http://search.cpan.org', if => { content_type => ['text/html', 'application/x-tar'] } ); =head2 restrict my $control = Scrappy::Scraper::Control->new; $control->restrict('http://www.perl.org'); $control->restrict('http://search.cpan.org', if => { content_type => ['text/html', 'application/x-tar'] } ); =head2 is_allowed my $control = Scrappy::Scraper::Control->new; $control->allow('http://search.cpan.org'); $control->restrict('http://www.perl.org'); if (! $control->is_allowed('http://perl.org')) { die 'Cant get to Perl.org'; } =head1 AUTHOR Al Newkirk =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2010 by awncorp. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Document.pm.bak000644000000000000 242411614255470 21377 0ustar00rootroot000000000000Scrappy-0.94112090/lib/Scrappy/Projectpackage Scrappy::Project::Document; BEGIN { $Scrappy::Project::Document::VERSION = '0.94112090'; } use Moose::Role; has fields => ( is => 'ro', isa => 'ArrayRef', default => sub { my $self = shift; #die Data::Dumper::Dumper((shift->meta->get_all_methods)[1]); my @fields = (); for ($self->meta->get_all_methods) { push @fields, $_->name if $_->package_name eq ref $self && $_->name ne 'meta' && $_->name ne 'scraper' && $_->name ne 'fields' && $_->name ne 'parse' && $_->name ne 'records' && $_->name ne 'url'; ##### NOTE !!!!!! The list above must always contain a list ##### of all attributes and function in this role } return [@fields]; } ); has records => ( is => 'rw', isa => 'ArrayRef', default => sub { [] } ); has scraper => ( is => 'rw', isa => 'Scrappy' ); sub parse { my ($self, $vars) = @_; my $record = {}; map { $record->{$_} = $self->$_($self->scraper, $vars) } @{$self->fields}; # $record->{url} = $self->scraper->url->as_string; push @{$self->records}, $record; return $record; } 1; 00_test_function_request_denied.t000644000000000000 26111614255470 21602 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 1) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); use_ok 'Scrappy'; UserAgent.pm.bak000644000000000000 405311614255470 21507 0ustar00rootroot000000000000Scrappy-0.94112090/lib/Scrappy/Scraperpackage Scrappy::Scraper::UserAgent; BEGIN { $Scrappy::Scraper::UserAgent::VERSION = '0.94112090'; } # load OO System use Moose; # load other libraries use Carp; use FindBin; use File::ShareDir ':ALL'; use File::Slurp; has 'name' => (is => 'rw', isa => 'Str'); has 'options' => (is => 'rw', isa => 'HashRef'); sub random_user_agent { my $self = shift; my ($browser, $os) = @_; $browser = 'any' unless $browser; $browser = 'explorer' if lc($browser) eq 'internet explorer' || lc($browser) eq 'explorer' || lc($browser) eq 'ie'; $browser = lc $browser; my @browsers = ('explorer', 'chrome', 'firefox', 'opera', 'safari'); my @oss = ('Windows', 'Linux', 'Macintosh'); if ($browser ne 'any') { croak("Can't load user-agents from unrecognized browser $browser") unless grep /^$browser$/, @browsers; } if ($os) { $os = ucfirst(lc($os)); croak("Can't filter user-agents with an unrecognized Os $os") unless grep /^$os$/, @oss; } my @selection = (); $self->options({}) unless defined $self->options; if ($browser eq 'any') { if ($self->options->{any}) { @selection = @{$self->options->{any}}; } else { foreach my $file (@browsers) { my $u = dist_dir('Scrappy') . "/support/$file.txt"; $u = "share/support/$file.txt" unless -e $u; push @selection, read_file($u); } $self->options->{'any'} = [@selection]; } } else { if ($self->options->{$browser}) { @selection = @{$self->options->{$browser}}; } else { my $u = dist_dir('Scrappy') . "/support/$browser.txt"; $u = "share/support/$browser.txt" unless -e $u; push @selection, read_file($u); $self->options->{$browser} = [@selection]; } } @selection = grep /$os/, @selection if $os; $self->name($selection[rand(@selection)] || ''); return $self->name; } 1; RandomProxy.pm.bak000644000000000000 1140411614255470 21751 0ustar00rootroot000000000000Scrappy-0.94112090/lib/Scrappy/Pluginpackage Scrappy::Plugin::RandomProxy; BEGIN { $Scrappy::Plugin::RandomProxy::VERSION = '0.94112090'; } use Moose::Role; has proxy_address => ( is => 'rw', isa => 'Str' ); has proxy_protocol => ( is => 'rw', isa => 'Str', default => 'HTTP' ); has proxy_list => ( is => 'rw', isa => 'ArrayRef', default => sub { [] } ); sub get_proxy_list { my $self = shift; # fetch list of HTTP proxies unless already gathered unless ($self->proxy_list) { # get a proxy from http://www.hidemyass.com/proxy-list/ $self->user_agent->random_user_agent; # goto hidemyass.com $self->get('http://www.hidemyass.com/proxy-list/'); # special post to get HTTP-80 proxies only my %headers = ( 'Content-Type' => 'application/x-www-form-urlencoded', 'Referer' => 'http://www.hidemyass.com/proxy-list/' ); my $form = { 'c[]' => [ 'United States', 'Indonesia', 'China', 'Brazil', 'Russian Federation', 'Iran, Islamic Republic of', 'Germany', 'India', 'Korea, Republic of', 'Kazakhstan', 'Ukraine', 'Japan', 'Colombia', 'Thailand', 'Egypt', 'Taiwan', 'Spain', 'Canada', 'Argentina', 'Poland', 'Czech Republic', 'Turkey', 'South Africa', 'Venezuela', 'France', 'Netherlands', 'Peru', 'Vietnam', 'Mexico', 'Switzerland', 'Bulgaria', 'Kenya', 'Ecuador', 'Latvia', 'Portugal', 'Slovakia', 'Chile', 'Italy', 'Denmark', 'Moldova, Republic of', 'United Kingdom', 'Greece', 'Norway', 'Israel', 'Hungary', 'Nigeria', 'Ireland', 'Australia', 'Hong Kong', 'Finland', 'Philippines', 'United Arab Emirates', 'Ghana', 'Bangladesh', 'Lebanon', 'Romania', 'Syrian Arab Republic', 'Austria', 'Sri Lanka', 'Serbia', 'Sweden', 'Macau', 'Iraq', 'Malaysia', 'Macedonia', 'Malta', 'Jamaica', 'Niger', 'Belarus', 'Bahamas', 'Antarctica', 'Bosnia and Herzegovina', 'Mozambique', 'Benin', 'Grenada', "Cote D'Ivoire", 'Mauritania', 'Brunei Darussalam', 'Ethiopia', 'Pakistan', 'Chad', 'Paraguay', 'Puerto Rico', 'Cambodia', 'Singapore', 'Guatemala', 'Fiji', 'Croatia', 'Kuwait', 'Palestinian Territory', 'Albania', 'Zimbabwe', 'Bolivia', 'Maldives', 'Luxembourg' ], 'pr[]' => ['0'], 'a[]' => ['2', '3', '4'], p => '80', pl => 'on', s => '0', o => '0', pp => '3', ac => 'on', sortBy => 'date' }; $self->post('http://www.hidemyass.com/proxy-list/', $form, %headers); my @proxies = (); my $rows = $self->select('#proxylist-table tr.row')->data; foreach my $row (@{$rows}) { my $cols = $self->select('td', $row->{html})->data; my ($server, $port, $type) = ($cols->[1]->{text}, 80, $cols->[6]->{text}); if ($type eq 'HTTP') { push @proxies, "$server:$port"; } } $self->proxy_list([@proxies]); $self->log( "info", "Proxy list created from hidemyass.com", proxy_list => [@proxies] ); } return $self; } sub use_random_proxy { my $self = shift; $self->get_proxy_list; # select and use a random a proxy my @proxies = @{$self->proxy_list}; my $proxy = $proxies[rand(@proxies)]; $self->proxy_address($proxy); $self->proxy('http', 'http://' . $proxy . '/'); $self->log("info", "Proxy has been set to $proxy using the HTTP protocol"); return $self; } 1; 00_test_function_page_content_type.t000644000000000000 26111614255470 22311 0ustar00rootroot000000000000Scrappy-0.94112090/t#!/usr/bin/env perl use FindBin; use Test::More $ENV{TEST_LIVE} ? (tests => 1) : (skip_all => 'env var TEST_LIVE not set, live testing is not enabled'); use_ok 'Scrappy';