Прокси-серверы PHP - PullRequest
       2

Прокси-серверы PHP

3 голосов
/ 20 января 2011


Мне было интересно, есть ли способ превратить мой сайт в прокси-сервер ... Я нашел множество скриптов, использующих PHP, но все они требуют перехода на сайт, чтобы использовать
прокси, но чтоМне действительно нужен скрипт, который позволяет мне получить доступ к сайту через конфигурацию браузера, как в Firefox, когда вы вводите IP и номер порта в диалоге настроек, есть ли сценарии, которые это делают?
любые ссылки могут мне помочьбыстро на предмет приветствуются ..
Спасибо,
AB

Ответы [ 2 ]

0 голосов
/ 26 декабря 2015

Перенаправьте ваш адаптер на IP-адрес и порт этого компьютера, хотя он будет синхронным, поэтому он будет работать медленно.

    $addr   = gethostbyname('0.0.0.0'); //ip sensitive :((
    $server = stream_socket_server("tcp://" . $addr . ":8000", $errno, $errorMessage);

    echo "connected to: $addr:8000";

    if ($server === false) {
            throw new UnexpectedValueException("Could not bind to socket: $errorMessage");
    }

    $conns      = array( $server ); // connections
    $connection = 0;

    // loop forever
    for (;;) {
            $reads = $conns;

            // get number of connections with new data
            $mod = stream_select($reads, $write, $except, 5);
            if ($mod===false) break;

            // I have no idea what this does but what im doing here is separating the client ip and port from server 1:1 only!
            foreach ($reads as $read) {
                    if ($read===$server) {

                            // if a client is connected
                            if ($client = @stream_socket_accept( $server )) {

                                    echo "\nconnection from " . stream_socket_get_name( $client, true ) . "\n";

                                    $recv = fread($client, 1024);
                                    $rec_arr = explode( ' ', $recv );

                                    echo hex_dump($recv);

                                    if(strpos($recv, "CONNECT ")!==0) {

                                            if( $src = @fopen( $rec_arr[ 1 ], 'rb') ) {
                                                    while ($chunk = fread($src, 1024000)) {
                                                            @fwrite( $client, $chunk );
                                                    }

                                                    $chunk = "";

                                                    fclose( $src );
                                            }
                                    }

                                    stream_socket_shutdown($client, STREAM_SHUT_RDWR);
                            }
                    }
            }
    }

    function hex_dump($data, $newline="\n")
    {
            $from = '';
            $to = '';

            $width = 16; # number of bytes per line

            $pad = '.'; # padding for non-visible characters

            if ($from==='')
            {
                            for ($i=0; $i<=0xFF; $i++)
                            {
                                            $from .= chr($i);
                                            $to .= ($i >= 0x20 && $i <= 0x7E) ? chr($i) : $pad;
                            }
            }

            $hex = str_split(bin2hex($data), $width*2);
            $chars = str_split(strtr($data, $from, $to), $width);

            $offset = 0;
            foreach ($hex as $i => $line)
            {
                            $line = strtoupper( $line );

                            echo sprintf('%6X',$offset).' : '.implode(' ', str_split($line,2)) . ' [' . $chars[$i] . ']' . $newline;

                            $offset += $width;
            }
    }
0 голосов
/ 20 января 2011

(и более, спросите Google)

Это тот тип прокси-программы, который вы ищете? Просто HTTP прокси в PHP.

...