diff --git a/README b/README index 16abadb..f511987 100644 --- a/README +++ b/README @@ -7,7 +7,7 @@ aleesa-webapp ----------------------------------------------------------------------------------------------------------------------- Клиент подписан на на redis-канал webapp. В этот канал пишет другой демоночек - aleesa-misc. -Формат протокола +Формат протокола общения по redis pub-sub - см README от aleesa-misc. Плагин для работы с flickr @@ -28,7 +28,7 @@ aleesa-webapp Далее, разлогиньтесь, это нужно, чтобы потом проще было достать параметр verifier. Запустите bin/flickr_init.pl и следуте предлагаемым инструкциям - в итоге будет дана ссылка, которую надо скопипастить -в браузер. По ссылке предложат залогиниться, далее надо будет разрешить приложению просматривать профиль и через +в браузер. По ссылке предложат залогиниться, далее надо будет разрешить приложению просматривать профиль и через один-два редиректа вы попадёте на example.com. Из адресной строки браузера надо скопировать параметр "verifier" и вписать его в config.json. @@ -40,12 +40,18 @@ aleesa-webapp ----------------------------------------------------------------------------------------------------------------------- Для работы погодного плагина надо заргистрироваться на сайте OWM https://home.openweathermap.org/users/sign_in , залогиниться -https://home.openweathermap.org/users/sign_in и создать api key +https://home.openweathermap.org/users/sign_in и создать api key https://home.openweathermap.org/api_keys . Free plan предлагает всё необхдимое для работы плагина. Когда api key будет создан, его нужно вписать в config.json в секцию openweathermap в качестве appid. На этом всё. +Список строк UserAgent для модуля Drink +----------------------------------------------------------------------------------------------------------------------- +На сайте https://kakoysegodnyaprazdnik.ru/ умеют банить по useragent-у чем-то им не угодил UA от Mojo::Client. Пришлось +прикрутить список из 31 штуки Browser UserAgent string, по одному на каждый день недели. + + Как это запустить? ----------------------------------------------------------------------------------------------------------------------- Понадобится perl, cpanm и local::lib, а также несколько разных devel-пакетов для разных библиотек. Как правило, это diff --git a/data/useragents.txt b/data/useragents.txt new file mode 100644 index 0000000..2f39c1c --- /dev/null +++ b/data/useragents.txt @@ -0,0 +1,31 @@ +Mozilla/5.0 (Macintosh; Intel Mac OS X 12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.81 Safari/537.36 OPR/83.0.4254.27 +Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.81 Safari/537.36 +Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Vivaldi/3.5 +Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36 Edg/88.0.705.81 +Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36 +Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36 +Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.2 Safari/605.1.15 +Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 +Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.44 +Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 +Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.62 +Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 OPR/82.0.4227.50 +Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Edg/97.0.1072.55 +Mozilla/5.0 (Macintosh; Intel Mac OS X 12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.81 Safari/537.36 +Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.81 Safari/537.36 +Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.81 Safari/537.36 Edg/97.0.1072.69 +Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.81 Safari/537.36 Vivaldi/4.3 +Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.81 YaBrowser/22.1.0 Yowser/2.5 Safari/537.36 +Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0 +Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0 +Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.1 Safari/605.1.15 +Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:96.0) Gecko/20100101 Firefox/96.0 +Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0 +Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Vivaldi/3.5 +Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko +Mozilla/5.0 (Windows NT 10.0; WOW64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.81 Safari/537.36 OPR/83.0.4254.27 +Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0 +Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.81 Safari/537.36 OPR/83.0.4254.27 +Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.81 Safari/537.36 Vivaldi/4.3 +Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:91.0) Gecko/20100101 Firefox/91.0 +Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0 diff --git a/lib/WebApp/Client.pm b/lib/WebApp/Client.pm index 67fa521..3c1cab8 100644 --- a/lib/WebApp/Client.pm +++ b/lib/WebApp/Client.pm @@ -33,6 +33,41 @@ my @MONTH = qw (yanvar fevral mart aprel may iyun iyul avgust sentyabr oktyabr n my $c = LoadConf (); my $cachedir = $c->{cachedir}; +my @useragents = _get_ua_list (); + +sub _get_ua_list { + my $file = $c->{useragentfile}; + my $file_opened = 1; + + open my $FILEHANDLE, '<', $file || do { + carp "[ERROR] No browser useragent list at $file: $OS_ERROR\n"; + $file_opened = 0; + }; + + my @ua_list; + + if ($file_opened) { + while (my $str = <$FILEHANDLE>) { + chomp $str; + next unless $str eq ''; + push @ua_list, $str; + } + + close $FILEHANDLE; ## no critic (InputOutput::RequireCheckedSyscalls + return @ua_list; + } + + if ($#ua_list < 31) { + carp "[ERROR] Useragent list in $file have less than 31 enties, discarding it\n"; + $#ua_list = -1; + } elsif ($#ua_list > 31) { + carp "[INFO] Useragent list in $file have more than 31 enties, truncating it to 31 entries\n"; + $#ua_list = 31; + } + + return @ua_list; +} + sub urlencode { my $str = shift; @@ -197,6 +232,14 @@ sub Drink { ); # just to make Mojo::UserAgent::Cached happy $ua->logger (Mojo::Log->new (path => '/dev/null', level => 'error')); + my $useragent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.80 Safari/537.36'; + + if ($#useragents > 0) { + $useragent = $useragents [ (localtime ()) [3] ]; + } + + $ua->transactor->name ($useragent); + $r = $ua->get ($url => {'Accept-Language' => 'ru-RU', 'Accept-Charset' => 'utf-8'})->result; if ($r->is_success) {