Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

01.04.2009, 20:19
|
|
Познающий
Регистрация: 28.10.2008
Сообщений: 43
Провел на форуме: 117557
Репутация:
125
|
|
Чего-то в нем нехватало, на мой взгляд, добавил нормальные цепочки и ротатор с файла
Серверная часть.
Код:
<?php
//$secret = 'secret';
if (isset($_POST["transfer"]) && $_POST["transfer"] != "")
{
if(isset($secret) && ($_POST['secret'] != $secret))exit;
$transfer_hosts = explode("::", base64_decode($_POST["transfer"]));
$next_host = array_shift($transfer_hosts);
$postfields = array(
"query" => $_POST['query'],
"host" => $_POST['host'],
"secret" => $_POST['secret']
);
if ($transfer_hosts[0] != "") $postfields["transfer"] = base64_encode(implode("::", $transfer_hosts));
$ch = curl_init($next_host);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
curl_setopt($ch, CURLOPT_HEADER, 0);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
} else {
if(isset($_POST['query']) && isset($_POST['host']))
{
if(isset($secret) && ($_POST['secret'] != $secret))exit;
header('Content-type: application/octet-stream');
@set_time_limit(0);
$query = base64_decode(str_replace(" ", "+", $_POST['query']));
list($host, $port) = explode(':', base64_decode(str_replace(" ", "+", $_POST['host'])));
if(!$port)$port = 80;
$ip = gethostbyname($host);
if($fp = @fsockopen($ip, $port, $errno, $errstr, 20))
{
fwrite($fp, $query);
while(!feof($fp))
{
$answer = fread($fp, 1024);
echo $answer;
}
fclose($fp);
}
exit;
}
}
?>
Локальная часть с генерацией рандомно распределенной цепочки:
Код:
use HTTP::Daemon;
use MIME::Base64 ();
use Getopt::Long;
use POSIX ":sys_wait_h";
use strict;
my $user_agent = 'Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4';
my $errheader = "HTTP/1.1 200 OK\x0D\x0AContent-Type: text/plain\x0D\x0A\x0D\x0A";
my $errmsg1 = $errheader . 'Could not connect to server';
my $errmsg2 = $errheader . 'Could not connect to pproxy';
my ($pproxyhost, $pproxyport, $pproxyurl);
my ($tunnelhost, $tunnelport);
my ($pproxy, $pproxyfile, @pproxylist, $bindport, $tunnel, $secret);
my ($destaddr, $destport, $desturl);
#Вывод справки
Usage() if @ARGV==0;
#Задание опций
GetOptions(
"px=s" => \$pproxy,
"bp=s" => \$bindport,
"tpx=s" => \$tunnel,
"pwd=s" => \$secret,
"pf=s" => \$pproxyfile
);
die "need pproxy.php url or pproxy.php url filelist" unless $pproxy || $pproxyfile;
#Получение параметров
$pproxyfile =~ /(.+)/;
if ($pproxyfile)
{
open(file, "proxies.txt");
@pproxylist = <file>;
} else {
$pproxy =~ /http:\/\/([\w\.\-]+)(:\d*)?\/(.+)/;
$pproxyhost = $1; $pproxyport = substr($2, 1); $pproxyurl = '/' . $3;
}
defined($pproxyport) || ($pproxyport = 80);
defined($bindport) || ($bindport = 8008);
if(defined($tunnel))
{
$tunnel =~ /http:\/\/([\w\.\-]+):(\d*)?/;
$tunnelhost = $1; $tunnelport = $2;
$destaddr = $tunnelhost;
$destport = $tunnelport;
$desturl = $pproxy;
print "# tunnelhost = $tunnelhost\n";
print "# tunnelport = $tunnelport\n";
}else{
if (!$pproxyfile)
{
$destaddr = $pproxyhost;
$desturl = $pproxyurl;
}
$destport = $pproxyport;
}
if (!$pproxyfile)
{
print "# pproxyhost = $pproxyhost\n";
print "# pproxyport = $pproxyport\n";
print "# pproxyurl = $pproxyurl\n";
} else {
print "# pproxyfile = $pproxyfile\n";
}
print "# bindport = $bindport\n\n";
$|=1;
my %children;
my $slave;
#Прием подключений
my $master = HTTP::Daemon->new( LocalPort => $bindport,
LocalAddr => 'localhost',
Reuse=>1)
|| die "Can't start server ($@)";
&MainProc($slave) while $slave = $master->accept;
sub MainProc
{
my $conn = shift;
#Прием HTTP-запроса
my $request = $conn->get_request();
#Ответвление процесса(потока)
my $pid = fork();
unless(defined($pid))
{
print "# Erorr couldn't fork\n";
close $conn;
return;
}
if($pid)
{
close $conn;
$children{$pid}++;
foreach(keys %children )
{
my $kid = waitpid($_, &WNOHANG);
delete $children{$_} if($kid == -1 || $kid == $_);
}
return;
}
#Преобразование HTTP заголовка
$request -> remove_header('Proxy-Connection');
$request -> remove_header('Keep-Alive');
$request -> header(Connection=>'close');
my $host = $request -> header('Host');
my $http = $request -> as_string();
my $head_end = index ($http, "\x0A\x0A") + 2;
my $head = substr ($http, 0, $head_end);
my $post = substr ($http, $head_end);
$head =~ s/\x0A/\x0D\x0A/g;
$http = $head . $post;
$http =~ s/http:\/\/$host//;
my $time_start = time;
#Отправка запроса прокси и прием результата
my $lastaddr = SendToPProxy( MIME::Base64::encode($host),
MIME::Base64::encode($http),
$conn
);
my $time_end = time;
#Лог
print &TranslateTimeHour($time_end), " ", $host, " <- ", $lastaddr,
" (", &TranslateTime($time_end - $time_start),
")\n";
close $conn;
exit;
}
sub SendToPProxy
{
my $dest_host = shift;
my $query_content = shift;
my $clientsock = shift;
my (@destaddr, $desturl, $proxytransfer, $desthost);
if ($pproxyfile)
{
my @pproxylist_shuffled = @pproxylist;
shuffle(\@pproxylist_shuffled);
chomp(@pproxylist_shuffled);
my $desthost = shift(@pproxylist_shuffled);
my @destaddr = split("//", $desthost);
my @destaddrhost = (@destaddr[0] != "http:") ? split("/", @destaddr[0]) : split("/", @destaddr[1]);
$destaddr = shift(@destaddrhost);
$proxytransfer = MIME::Base64::encode(join("::", @pproxylist_shuffled));
$desturl = $desthost;
}
my $proxysock = IO::Socket::INET->new(Proto=>'tcp',PeerAddr=>$destaddr,PeerPort=>$destport);
unless($proxysock)
{
syswrite($clientsock, $errmsg2, length($errmsg2));
return;
}
my $post_query;
#print "[!] <= $destaddr\n";
$post_query = 'secret=' . $secret . '&' if defined($secret);
$post_query .= 'transfer=' . $proxytransfer . '&' if defined($pproxyfile);
$post_query .= 'host=' . $dest_host . '&query=' . $query_content;
my $postlen = length($post_query);
my $request = "POST $desturl HTTP/1.0\x0D\x0A".
"Host: $pproxyhost:$pproxyport\x0D\x0A".
"Accept: */*\x0D\x0A".
"Content-Type: application/x-www-form-urlencoded\x0D\x0A".
"Content-Length: $postlen\x0D\x0A".
"User-Agent: $user_agent\x0D\x0A".
"Connection: close\x0D\x0A\x0D\x0A" . $post_query;
syswrite($proxysock, $request, length($request));
my ($result, $buffer, $response);
my $contentstart = -1;
my $count = 0;
while(1)
{
$result = sysread($proxysock, $buffer, 1024);
last if !defined($result) || !$result;
if($contentstart == -1)
{
$response .= $buffer;
last if length($response)>65535;
$contentstart = index($response,"\x0D\x0A\x0D\x0A");
next if $contentstart == -1;
$buffer = substr($response, $contentstart+4);
}
$count += length($buffer);
syswrite($clientsock, $buffer, length($buffer));
}
syswrite($clientsock, $errmsg1, length($errmsg1)) if $count == 0;
close $proxysock;
return $destaddr;
}
sub TranslateTime
{
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(shift);
return sprintf "%02u:%02u", $min, $sec;
}
sub TranslateTimeHour
{
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(shift);
return sprintf "%02u:%02u:%02u", $hour, $min, $sec;
}
sub shuffle
{
my $deck = shift; # $deck — ссылка на массив
my $i = @$deck;
while (--$i) {
my $j = int rand ($i+1);
@$deck[$i,$j] = @$deck[$j,$i];
}
}
sub Usage
{
print "Usage: $0 -px proxy_url [-bp bindport] [-tpx tunnel_proxy] [-pwd secret] [-pf proxy filelist]\n";
print "Example: $0 -px http://site.com/proxy/proxy.php -bp 8080\n";
print " $0 -px http://site.com/proxy/proxy.php -pwd pproxypass\n";
print " $0 -px http://site.com/proxy/proxy.php -tpx http://localhost:8118\n";
print " $0 -pf proxies.txt -bp 8080 -pwd pproxypass\n";
print "\nDefault bind port - 8008\n";
exit;
}
Либо с рандомной ротацией:
Код:
use HTTP::Daemon;
use MIME::Base64 ();
use Getopt::Long;
use POSIX ":sys_wait_h";
use strict;
my $user_agent = 'Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4';
my $errheader = "HTTP/1.1 200 OK\x0D\x0AContent-Type: text/plain\x0D\x0A\x0D\x0A";
my $errmsg1 = $errheader . 'Could not connect to server';
my $errmsg2 = $errheader . 'Could not connect to pproxy';
my ($pproxyhost, $pproxyport, $pproxyurl);
my ($tunnelhost, $tunnelport);
my ($pproxy, $pproxyfile, @pproxylist, $bindport, $tunnel, $secret);
my ($destaddr, $destport, $desturl);
#Вывод справки
Usage() if @ARGV==0;
#Задание опций
GetOptions(
"px=s" => \$pproxy,
"bp=s" => \$bindport,
"tpx=s" => \$tunnel,
"pwd=s" => \$secret,
"pf=s" => \$pproxyfile
);
die "need pproxy.php url or pproxy.php url filelist" unless $pproxy || $pproxyfile;
#Получение параметров
$pproxyfile =~ /(.+)/;
if ($pproxyfile)
{
open(file, "proxies.txt");
@pproxylist = <file>;
} else {
$pproxy =~ /http:\/\/([\w\.\-]+)(:\d*)?\/(.+)/;
$pproxyhost = $1; $pproxyport = substr($2, 1); $pproxyurl = '/' . $3;
}
defined($pproxyport) || ($pproxyport = 80);
defined($bindport) || ($bindport = 8008);
if(defined($tunnel))
{
$tunnel =~ /http:\/\/([\w\.\-]+):(\d*)?/;
$tunnelhost = $1; $tunnelport = $2;
$destaddr = $tunnelhost;
$destport = $tunnelport;
$desturl = $pproxy;
print "# tunnelhost = $tunnelhost\n";
print "# tunnelport = $tunnelport\n";
}else{
if (!$pproxyfile)
{
$destaddr = $pproxyhost;
$desturl = $pproxyurl;
}
$destport = $pproxyport;
}
if (!$pproxyfile)
{
print "# pproxyhost = $pproxyhost\n";
print "# pproxyport = $pproxyport\n";
print "# pproxyurl = $pproxyurl\n";
} else {
print "# pproxyfile = $pproxyfile\n";
}
print "# bindport = $bindport\n\n";
$|=1;
my %children;
my $slave;
#Прием подключений
my $master = HTTP::Daemon->new( LocalPort => $bindport,
LocalAddr => 'localhost',
Reuse=>1)
|| die "Can't start server ($@)";
&MainProc($slave) while $slave = $master->accept;
sub MainProc
{
my $conn = shift;
#Прием HTTP-запроса
my $request = $conn->get_request();
#Ответвление процесса(потока)
my $pid = fork();
unless(defined($pid))
{
print "# Erorr couldn't fork\n";
close $conn;
return;
}
if($pid)
{
close $conn;
$children{$pid}++;
foreach(keys %children )
{
my $kid = waitpid($_, &WNOHANG);
delete $children{$_} if($kid == -1 || $kid == $_);
}
return;
}
#Преобразование HTTP заголовка
$request -> remove_header('Proxy-Connection');
$request -> remove_header('Keep-Alive');
$request -> header(Connection=>'close');
my $host = $request -> header('Host');
my $http = $request -> as_string();
my $head_end = index ($http, "\x0A\x0A") + 2;
my $head = substr ($http, 0, $head_end);
my $post = substr ($http, $head_end);
$head =~ s/\x0A/\x0D\x0A/g;
$http = $head . $post;
$http =~ s/http:\/\/$host//;
my $time_start = time;
#Отправка запроса прокси и прием результата
my $lastaddr = SendToPProxy( MIME::Base64::encode($host),
MIME::Base64::encode($http),
$conn
);
my $time_end = time;
#Лог
print &TranslateTimeHour($time_end), " ", $host, " <- ", $lastaddr,
" (", &TranslateTime($time_end - $time_start),
")\n";
close $conn;
exit;
}
sub SendToPProxy
{
my $dest_host = shift;
my $query_content = shift;
my $clientsock = shift;
my (@destaddr, $desturl, $proxytransfer, $desthost);
if ($pproxyfile)
{
my @pproxylist_shuffled = @pproxylist;
shuffle(\@pproxylist_shuffled);
chomp(@pproxylist_shuffled);
my $desthost = shift(@pproxylist_shuffled);
my @destaddr = split("//", $desthost);
my @destaddrhost = (@destaddr[0] != "http:") ? split("/", @destaddr[0]) : split("/", @destaddr[1]);
$destaddr = shift(@destaddrhost);
$proxytransfer = MIME::Base64::encode(join("::", @pproxylist_shuffled));
$desturl = $desthost;
}
my $proxysock = IO::Socket::INET->new(Proto=>'tcp',PeerAddr=>$destaddr,PeerPort=>$destport);
unless($proxysock)
{
syswrite($clientsock, $errmsg2, length($errmsg2));
return;
}
my $post_query;
#print "[!] <= $destaddr\n";
$post_query = 'secret=' . $secret . '&' if defined($secret);
#$post_query .= 'transfer=' . $proxytransfer . '&' if defined($pproxyfile);
$post_query .= 'host=' . $dest_host . '&query=' . $query_content;
my $postlen = length($post_query);
my $request = "POST $desturl HTTP/1.0\x0D\x0A".
"Host: $pproxyhost:$pproxyport\x0D\x0A".
"Accept: */*\x0D\x0A".
"Content-Type: application/x-www-form-urlencoded\x0D\x0A".
"Content-Length: $postlen\x0D\x0A".
"User-Agent: $user_agent\x0D\x0A".
"Connection: close\x0D\x0A\x0D\x0A" . $post_query;
syswrite($proxysock, $request, length($request));
my ($result, $buffer, $response);
my $contentstart = -1;
my $count = 0;
while(1)
{
$result = sysread($proxysock, $buffer, 1024);
last if !defined($result) || !$result;
if($contentstart == -1)
{
$response .= $buffer;
last if length($response)>65535;
$contentstart = index($response,"\x0D\x0A\x0D\x0A");
next if $contentstart == -1;
$buffer = substr($response, $contentstart+4);
}
$count += length($buffer);
syswrite($clientsock, $buffer, length($buffer));
}
syswrite($clientsock, $errmsg1, length($errmsg1)) if $count == 0;
close $proxysock;
return $destaddr;
}
sub TranslateTime
{
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(shift);
return sprintf "%02u:%02u", $min, $sec;
}
sub TranslateTimeHour
{
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(shift);
return sprintf "%02u:%02u:%02u", $hour, $min, $sec;
}
sub shuffle
{
my $deck = shift; # $deck — ссылка на массив
my $i = @$deck;
while (--$i) {
my $j = int rand ($i+1);
@$deck[$i,$j] = @$deck[$j,$i];
}
}
sub Usage
{
print "Usage: $0 -px proxy_url [-bp bindport] [-tpx tunnel_proxy] [-pwd secret] [-pf proxy filelist]\n";
print "Example: $0 -px http://site.com/proxy/proxy.php -bp 8080\n";
print " $0 -px http://site.com/proxy/proxy.php -pwd pproxypass\n";
print " $0 -px http://site.com/proxy/proxy.php -tpx http://localhost:8118\n";
print " $0 -pf proxies.txt -bp 8080 -pwd pproxypass\n";
print "\nDefault bind port - 8008\n";
exit;
}
|
|
|

02.04.2009, 13:15
|
|
Участник форума
Регистрация: 28.03.2009
Сообщений: 163
Провел на форуме: 948709
Репутация:
43
|
|
а вот например когда я пользуюсь wi-fi и ммне нужно другой ип поставить как сделать
|
|
|

05.04.2009, 13:51
|
|
Участник форума
Регистрация: 20.11.2008
Сообщений: 120
Провел на форуме: 1254550
Репутация:
87
|
|
юзать виртуалку либо дед
|
|
|

08.04.2009, 21:51
|
|
Участник форума
Регистрация: 20.12.2007
Сообщений: 295
Провел на форуме: 1777055
Репутация:
347
|
|
по поводу сокс-версии, думаю без помощи я не справлюсь. Недоработанная версия здесь: http://forum.antichat.ru/showthread.php?p=1214063
Большая просьба всем кто имеет знания в этой области посмотреть и исправить ошибки
|
|
|

26.05.2009, 16:45
|
|
Участник форума
Регистрация: 27.10.2008
Сообщений: 215
Провел на форуме: 810079
Репутация:
90
|
|
C Socks-версией всё понятно, а поддержка HTTPS когда-нибудь будет?
|
|
|

01.06.2009, 16:48
|
|
Banned
Регистрация: 01.02.2009
Сообщений: 48
Провел на форуме: 554628
Репутация:
76
|
|
Написал пару строчек кода к клиенту... Теперь работает строка для юзверь агента...
plocal.pl
Код:
use HTTP::Daemon;
use MIME::Base64 ();
use Getopt::Long;
use POSIX ":sys_wait_h";
use strict;
my $user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4';
my $errheader = "HTTP/1.1 200 OK\x0D\x0AContent-Type: text/plain\x0D\x0A\x0D\x0A";
my $errmsg1 = $errheader . 'Could not connect to server';
my $errmsg2 = $errheader . 'Could not connect to pproxy';
my ($pproxyhost, $pproxyport, $pproxyurl);
my ($tunnelhost, $tunnelport);
my ($pproxy, $bindport, $tunnel, $secret);
my ($destaddr, $destport, $desturl);
#Вывод справки
Usage() if @ARGV==0;
#Задание опций
GetOptions(
"px=s" => \$pproxy,
"bp=s" => \$bindport,
"tpx=s" => \$tunnel,
"pwd=s" => \$secret
);
die "need pproxy.php url" unless $pproxy;
#Получение параметров
$pproxy =~ /http:\/\/([\w\.\-]+)(:\d*)?\/(.+)/;
$pproxyhost = $1; $pproxyport = substr($2, 1); $pproxyurl = '/' . $3;
defined($pproxyport) || ($pproxyport = 80);
defined($bindport) || ($bindport = 8008);
if(defined($tunnel))
{
$tunnel =~ /http:\/\/([\w\.\-]+):(\d*)?/;
$tunnelhost = $1; $tunnelport = $2;
$destaddr = $tunnelhost;
$destport = $tunnelport;
$desturl = $pproxy;
print "# tunnelhost = $tunnelhost\n";
print "# tunnelport = $tunnelport\n";
}else{
$destaddr = $pproxyhost;
$destport = $pproxyport;
$desturl = $pproxyurl;
}
print "# pproxyhost = $pproxyhost\n";
print "# pproxyport = $pproxyport\n";
print "# pproxyurl = $pproxyurl\n";
print "# bindport = $bindport\n\n";
$|=1;
my %children;
my $slave;
#Прием подключений
my $master = HTTP::Daemon->new( LocalPort => $bindport,
LocalAddr => 'localhost',
Reuse=>1)
|| die "Can't start server ($@)";
&MainProc($slave) while $slave = $master->accept;
sub MainProc
{
my $conn = shift;
#Прием HTTP-запроса
my $request = $conn->get_request();
#Ответвление процесса(потока)
my $pid = fork();
unless(defined($pid))
{
print "# Erorr couldn't fork\n";
close $conn;
return;
}
if($pid)
{
close $conn;
$children{$pid}++;
foreach(keys %children )
{
my $kid = waitpid($_, &WNOHANG);
delete $children{$_} if($kid == -1 || $kid == $_);
}
return;
}
#Преобразование HTTP заголовка
$request -> remove_header('Proxy-Connection');
$request -> remove_header('Keep-Alive');
$request -> header(Connection=>'close');
$request -> remove_header('User-Agent');
$request -> header('User-Agent'=>$user_agent);
my $host = $request -> header('Host');
my $http = $request -> as_string();
my $head_end = index ($http, "\x0A\x0A") + 2;
my $head = substr ($http, 0, $head_end);
my $post = substr ($http, $head_end);
$head =~ s/\x0A/\x0D\x0A/g;
$http = $head . $post;
$http =~ s/http:\/\/$host//;
my $time_start = time;
#Отправка запроса прокси и прием результата
SendToPProxy( MIME::Base64::encode($host),
MIME::Base64::encode($http),
$conn
);
my $time_end = time;
#Лог
print &TranslateTimeHour($time_end), " ", $host,
" (", &TranslateTime($time_end - $time_start),
")\n";
close $conn;
exit;
}
sub SendToPProxy
{
my $dest_host = shift;
my $query_content = shift;
my $clientsock = shift;
my $proxysock = IO::Socket::INET->new(Proto=>'tcp',PeerAddr=>$destaddr,PeerPort=>$destport);
unless($proxysock)
{
syswrite($clientsock, $errmsg2, length($errmsg2));
return;
}
my $post_query;
$post_query = 'secret=' . $secret . '&' if defined($secret);
$post_query .= 'host=' . $dest_host . '&query=' . $query_content;
my $postlen = length($post_query);
my $request = "POST $desturl HTTP/1.1\x0D\x0A".
"Host: $pproxyhost:$pproxyport\x0D\x0A".
"Accept: */*\x0D\x0A".
"Content-Type: application/x-www-form-urlencoded\x0D\x0A".
"Content-Length: $postlen\x0D\x0A".
"User-Agent: $user_agent\x0D\x0A".
"Connection: close\x0D\x0A\x0D\x0A" . $post_query;
syswrite($proxysock, $request, length($request));
my ($result, $buffer, $response);
my $contentstart = -1;
my $count = 0;
while(1)
{
$result = sysread($proxysock, $buffer, 1024);
last if !defined($result) || !$result;
if($contentstart == -1)
{
$response .= $buffer;
last if length($response)>65535;
$contentstart = index($response,"\x0D\x0A\x0D\x0A");
next if $contentstart == -1;
$buffer = substr($response, $contentstart+4);
}
$count += length($buffer);
syswrite($clientsock, $buffer, length($buffer));
}
syswrite($clientsock, $errmsg1, length($errmsg1)) if $count == 0;
close $proxysock;
}
sub TranslateTime
{
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(shift);
return sprintf "%02u:%02u", $min, $sec;
}
sub TranslateTimeHour
{
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(shift);
return sprintf "%02u:%02u:%02u", $hour, $min, $sec;
}
sub Usage
{
print "Usage: $0 -px proxy_url [-bp bindport] [-tpx tunnel_proxy] [-pwd secret]\n";
print "Example: $0 -px http://site.com/proxy/proxy.php -bp 8080\n";
print " $0 -px http://site.com/proxy/proxy.php -pwd pproxypass\n";
print " $0 -px http://site.com/proxy/proxy.php -tpx http://localhost:8118\n";
print "\nDefault bind port - 8008\n";
exit;
}
Серверная часть не изменялась...
Последний раз редактировалось Ty3uK; 01.06.2009 в 16:50..
|
|
|

02.06.2009, 12:41
|
|
Познающий
Регистрация: 05.06.2008
Сообщений: 73
Провел на форуме: 217880
Репутация:
21
|
|
Спасибо, то что нужно, как раз возникла необходимость.
|
|
|

04.06.2009, 23:54
|
|
Banned
Регистрация: 01.02.2009
Сообщений: 48
Провел на форуме: 554628
Репутация:
76
|
|
Нету за что! Надеюсь что ТС не обидится если я немного попробую переписать клиента под свои нужды))
|
|
|

13.06.2009, 22:14
|
|
Познающий
Регистрация: 28.10.2008
Сообщений: 43
Провел на форуме: 117557
Репутация:
125
|
|
Сообщение от InFlame
C Socks-версией всё понятно, а поддержка HTTPS когда-нибудь будет?
Код:
<?php
$secret = 'pwd';
if (isset($_POST["transfer"]) && $_POST["transfer"] != "")
{
if(isset($secret) && ($_POST['secret'] != $secret))exit;
$transfer_hosts = explode("::", base64_decode($_POST["transfer"]));
$next_host = array_shift($transfer_hosts);
$postfields = array(
"query" => $_POST['query'],
"host" => $_POST['host'],
"secret" => $_POST['secret']
);
if ($transfer_hosts[0] != "") $postfields["transfer"] = base64_encode(implode("::", $transfer_hosts));
$ch = curl_init($next_host);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
curl_setopt($ch, CURLOPT_HEADER, 1);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
} else {
if(isset($_POST['query']) && isset($_POST['host']))
{
if(isset($secret) && ($_POST['secret'] != $secret))exit;
header('Content-type: application/octet-stream');
@set_time_limit(0);
$query = base64_decode(str_replace(" ", "+", $_POST['query']));
list($host, $port) = explode(':', base64_decode(str_replace(" ", "+", $_POST['host'])));
if(!$port) {if (eregi("https:", $host) && !$port) {$port = 443;} else {$port = 80;}}
$ip = gethostbyname($host);
if($fp = @fsockopen($ip, $port, $errno, $errstr, 20))
{
fwrite($fp, $query);
while(!feof($fp))
{
$answer = fread($fp, 1024);
echo $answer;
}
fclose($fp);
}
exit;
}
}
?>
Изменения в строке
Код:
if (!$port) $port=80;
на
Код:
if(!$port) {if (eregi("https:", $host) && !$port) {$port = 443;} else {$port = 80;}}
и вуаля, https есть 
Последний раз редактировалось HIVER; 14.06.2009 в 08:14..
|
|
|

14.06.2009, 08:09
|
|
Познающий
Регистрация: 28.10.2008
Сообщений: 43
Провел на форуме: 117557
Репутация:
125
|
|
з.ы. пардон, в большом блоке очепятка с брекетами была, исправлено.
Последний раз редактировалось HIVER; 14.06.2009 в 08:13..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|