Aion-Surf

 view release on metacpan or  search on metacpan

META.json  view on Meta::CPAN

            "Test::CPAN::Meta" : "0",
            "Test::MinimumVersion::Fast" : "0.04",
            "Test::PAUSE::Permissions" : "0.07",
            "Test::Pod" : "1.41",
            "Test::Spellunker" : "v0.2.7"
         }
      },
      "runtime" : {
         "requires" : {
            "Aion::Format" : "v0.0.2",
            "HTTP::Cookies" : "0",
            "LWP::UserAgent" : "6.72",
            "List::Util" : "0",
            "common::sense" : "0",
            "perl" : "v5.22.0"
         }
      },
      "test" : {
         "requires" : {
            "Test::More" : "0.98"
         }

META.yml  view on Meta::CPAN

    - eg
    - examples
    - author
    - builder
provides:
  Aion::Surf:
    file: lib/Aion/Surf.pm
    version: v0.0.3
requires:
  Aion::Format: v0.0.2
  HTTP::Cookies: '0'
  LWP::UserAgent: '6.72'
  List::Util: '0'
  common::sense: '0'
  perl: v5.22.0
resources:
  bugtracker: https://github.com/darviarush/perl-aion-surf/issues
  homepage: https://github.com/darviarush/perl-aion-surf
  repository: https://github.com/darviarush/perl-aion-surf.git
version: 0.0.3
x_authority: cpan:DART

README.md  view on Meta::CPAN

* `response` - returns response (as HTTP::Response) by this reference.

```perl
my $req = "MAYBE_ANY_METHOD https://ya.ru/page?z=30&x=10&y=%1F9E8
Accept: */*,image/*
Content-Type: application/x-www-form-urlencoded

x&y=2
";

my $req_cookies = 'Set-Cookie3: go=""; path="/"; domain=ya.ru; version=0
Set-Cookie3: session=%1F9E8; path="/page"; domain=ya.ru; version=0
';

# mock
*LWP::UserAgent::request = sub {
    my ($ua, $request) = @_;

    $request->as_string # -> $req
    $ua->cookie_jar->as_string  # -> $req_cookies

    my $response = HTTP::Response->new(200, "OK");

cpanfile  view on Meta::CPAN

    requires 'Liveman', '1.0';
};

on 'test' => sub {
	requires 'Test::More', '0.98';
};

requires 'common::sense';
requires 'List::Util';
requires 'LWP::UserAgent', '6.72';
requires 'HTTP::Cookies';

requires 'Aion::Format', '0.0.2';

lib/Aion/Surf.md  view on Meta::CPAN

* `response` - returns response (as HTTP::Response) by this reference.

```perl
my $req = "MAYBE_ANY_METHOD https://ya.ru/page?z=30&x=10&y=%1F9E8
Accept: */*,image/*
Content-Type: application/x-www-form-urlencoded

x&y=2
";

my $req_cookies = 'Set-Cookie3: go=""; path="/"; domain=ya.ru; version=0
Set-Cookie3: session=%1F9E8; path="/page"; domain=ya.ru; version=0
';

# mock
*LWP::UserAgent::request = sub {
    my ($ua, $request) = @_;

    $request->as_string # -> $req
    $ua->cookie_jar->as_string  # -> $req_cookies

    my $response = HTTP::Response->new(200, "OK");

lib/Aion/Surf.pm  view on Meta::CPAN

package Aion::Surf;
use 5.22.0;
no strict; no warnings; no diagnostics;
use common::sense;

our $VERSION = "0.0.3";

use List::Util qw/pairmap/;
use LWP::UserAgent qw//;
use HTTP::Cookies qw//;
use Aion::Format::Json qw//;
use Aion::Format::Url qw//;

use Exporter qw/import/;
our @EXPORT = our @EXPORT_OK = grep {
	ref \$Aion::Surf::{$_} eq "GLOB"
		&& *{$Aion::Surf::{$_}}{CODE}
			&& !/^(_|(NaN|import)\z)/n
} keys %Aion::Surf::;

lib/Aion/Surf.pm  view on Meta::CPAN


use config TIMEOUT => 10;
use config FROM_IP => undef;
use config AGENT => q{Mozilla/5.0 (Macintosh; Intel Mac OS X 14_0) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Safari/605.1.15};

our $ua = LWP::UserAgent->new;
$ua->agent(AGENT);
#$ua->env_proxy;
$ua->timeout(TIMEOUT);
$ua->local_address(FROM_IP) if FROM_IP;
$ua->cookie_jar(HTTP::Cookies->new);

# Между вызовами делаем случайный интервал (для граббинга - чтобы не быть заблокированным за автоматические обращения)
our $SLEEP = 0;
our $LAST_REQUEST = Time::HiRes::time();
sub _sleep(;$) {
	Time::HiRes::sleep(rand + .5) if Time::HiRes::time() - $LAST_REQUEST < 2;
	$LAST_REQUEST = Time::HiRes::time();
}

sub surf(@) {

lib/Aion/Surf.pm  view on Meta::CPAN


=back

	my $req = "MAYBE_ANY_METHOD https://ya.ru/page?z=30&x=10&y=%1F9E8
	Accept: */*,image/*
	Content-Type: application/x-www-form-urlencoded
	
	x&y=2
	";
	
	my $req_cookies = 'Set-Cookie3: go=""; path="/"; domain=ya.ru; version=0
	Set-Cookie3: session=%1F9E8; path="/page"; domain=ya.ru; version=0
	';
	
	# mock
	*LWP::UserAgent::request = sub {
	    my ($ua, $request) = @_;
	
	    $request->as_string # -> $req
	    $ua->cookie_jar->as_string  # -> $req_cookies
	
	    my $response = HTTP::Response->new(200, "OK");

t/aion/surf.t  view on Meta::CPAN

# * `response` - returns response (as HTTP::Response) by this reference.
# 
done_testing; }; subtest 'surf (\[$method], $url, \[$data], %params)' => sub { 
my $req = "MAYBE_ANY_METHOD https://ya.ru/page?z=30&x=10&y=%1F9E8
Accept: */*,image/*
Content-Type: application/x-www-form-urlencoded

x&y=2
";

my $req_cookies = 'Set-Cookie3: go=""; path="/"; domain=ya.ru; version=0
Set-Cookie3: session=%1F9E8; path="/page"; domain=ya.ru; version=0
';

# mock
*LWP::UserAgent::request = sub {
    my ($ua, $request) = @_;

::is scalar do {$request->as_string}, scalar do{$req}, '    $request->as_string # -> $req';
::is scalar do {$ua->cookie_jar->as_string}, scalar do{$req_cookies}, '    $ua->cookie_jar->as_string  # -> $req_cookies';

    my $response = HTTP::Response->new(200, "OK");



( run in 0.986 second using v1.01-cache-2.11-cpan-e9199f4ba4c )