Skip to content

Instantly share code, notes, and snippets.

@Logioniz
Logioniz / README
Last active August 30, 2018 19:31
rucaptcha аналог (решение гугл рекапчи с помощью работников/людей)
3 компоненты:
1. простенький api service, который чем-то похож на апи rucaptcha для приёма recaptcha. Нужно передать рекапча ключ и урл.
2. простенький socks5 прокси, который умеент подменять запросы, когда это нужно (чтобы домен (url) совпадал с доменом разгадываемой капчей)
3. браузер работника должен быть настроен на проксирование через наш socks5 прокси
Первым делом нужно запустить прокси и апи серверы.
Потом нужно дождаться, когда подключится работник (тот, кто капчу разгадывает), при этом работник должен настроить в браузере прокси socks5 с разыменование домена.
Потом сделать запрос на добавление капчи:
curl -XPOST --data-urlencode "googlekey=<публичный ключ рекапчи>" --data-urlencode "pageurl=<страница на которой разгадываем>" "http://127.0.0.1:3000/in.php"
@Logioniz
Logioniz / 1.pl
Last active August 30, 2018 15:20
Simple socks5 implementation using perl Mojo
#!/usr/bin/perl
use Mojo::Base -strict;
use Mojo::IOLoop;
use Devel::Peek;
use Data::Dumper;
my $DEBUG = 1;
my $users = {
@Logioniz
Logioniz / client.pl
Last active May 16, 2018 15:42
UPD server/client example (block/nonblock)
#!/usr/bin/perl
use Mojo::Base -strict;
use Socket ':all';
socket(my $client, AF_INET, SOCK_DGRAM, IPPROTO_UDP) || die "socket: $!";
bind($client, pack_sockaddr_in(7777, inet_aton('192.168.88.114')));
send($client, "hi, vasya", 0, pack_sockaddr_in(12345, inet_aton('192.168.88.114')));
@Logioniz
Logioniz / dpd.pl
Created August 15, 2017 06:55
dpd soap::lite example
#!/usr/bin/perl
use Mojo::Base -strict;
use SOAP::Lite +trace => 'all';
use DDP;
my $soap = new SOAP::Lite->new;
$soap->autotype(0);
$soap->readable(1);
$soap->service('http://ws.dpd.ru/services/geography2?wsdl');
@Logioniz
Logioniz / callback.dynamic.sequential.pl
Last active May 12, 2017 08:04
Sequential dynamic requests
#!/usr/bin/perl
use Mojo::Base -strict;
use Mojo::IOLoop;
use Mojo::UserAgent;
use Mojo::URL;
my $ua = Mojo::UserAgent->new(max_redirects => 3);
sub find_new_url {
@Logioniz
Logioniz / client.pl
Created April 11, 2017 17:35
Example tls server and client
#!/usr/bin/perl
use Mojo::Base;
use Mojo::IOLoop;
use Mojo::IOLoop::Client;
use Mojo::IOLoop::TLS;
use IO::Socket::IP;
my $s;
@Logioniz
Logioniz / socks.pl
Last active March 11, 2017 07:51
Simple non-blocking socks server
#!/usr/bin/perl
use Mojo::Base -strict;
use Socket;
use Mojo::IOLoop;
use IO::Socket::Socks qw/:constants $SOCKS_ERROR/;
my @configs = ({
proxy_addr => '127.0.0.1',
proxy_port => 12345,
@Logioniz
Logioniz / mystem.pl
Last active February 18, 2017 08:05
Web server wrapper for mystem
#!/usr/bin/perl
use Mojo::Base -strict;
use Mojo::JSON::MaybeXS;
use Mojo::JSON 'decode_json';
use Mojolicious::Lite;
use IPC::Open3;
use Mojo::IOLoop;
my $mystem_path = '/usr/local/bin/mystem';
@Logioniz
Logioniz / my_ioloop.pl
Created January 28, 2017 01:51
Example of ioloop (based on Mojo::IOLoop)
#!/usr/bin/perl
package Reactor::Select;
use Mojo::Base -base;
use IO::Select;
sub new {
my $self = shift->SUPER::new;
$self->{select}{read} = IO::Select->new;
@Logioniz
Logioniz / 1.sql
Created December 16, 2016 12:42
Postgresql upsert with many constraints
create table test (id int primary key, a int, b int, unique (a, b));
\d+ test
begin;
insert into test values (1, 1, 1);
do $$
declare
_cn text;
begin
insert into test values (1, 2, 2);