Посылка HTTP запросов, используя прокси с авторизацией
Вход Регистрация

Посылка HTTP запросов, используя прокси с авторизацией

Этот скрипт может быть использован для получения страницы с помощью прокси-серверов с аутентификацией.

Он может послать HTTP-запрос на веб-сервер, используя заданный HTTP-прокси.

Скрипт поддерживает прокси-аутентификации при необходимости.

Лицензия BSD.

Системные требования скрипта:

PHP не младше 5.0 версии.

Исходник скрипта


// API__SHELL_PROXY (INTERFACE)
// CLS__SHELL_PROXY (CLASS)

interface api__shell_proxy
{
	public static function proxy_isset();
	public static function proxy_set( $proxy_host, $proxy_port, $proxy_user = null, $proxy_pass = null );
	public static function proxy_get( $url );
}

//  Based on http://www.php.net/manual/de/function.fopen.php#47224

class cls__shell_proxy implements api__shell_proxy
{
	private static $proxy_host = null;
	private static $proxy_port = null;
	private static $proxy_user = null;
	private static $proxy_pass = null;

	private static $proxy_timeout = 2;
	private static $proxy_isset = false;

	private static $proxy_error_number = null;
	private static $proxy_error_string = null;

	public static function proxy_isset(){
		return (self::$proxy_isset?true:false);
	}
	public static function proxy_set( $proxy_host, $proxy_port, $proxy_user = null, $proxy_pass = null ){
		self::proxy_host( $proxy_host );
		self::proxy_port( $proxy_port );
		self::proxy_user( $proxy_user );
		self::proxy_pass( $proxy_pass );
		self::$proxy_isset = true;
	}
	public static function proxy_get( $url ){
		if( $resource_fsock = @fsockopen( self::proxy_host(), self::proxy_port(), self::$proxy_error_number, self::$proxy_error_string, self::$proxy_timeout ) ) {
			$string_return = '';
			fputs( $resource_fsock, "GET ".$url." HTTP/1.0\r\nHost: ".self::proxy_host()."\r\n");
			if( self::proxy_user() === null ) {
				fputs( $resource_fsock, "\r\n" );
			} else {
				fputs( $resource_fsock, "Proxy-Authorization: Basic ".base64_encode( self::proxy_user().':'.self::proxy_pass() ) . "\r\n\r\n");
			}
			while( !feof( $resource_fsock ) ) {
				$string_return .= fread( $resource_fsock, 4096 );
			}
			fclose( $resource_fsock );
			$string_return = substr( $string_return, strpos( $string_return, "\r\n\r\n" ) +4 );
		} else {
			trigger_error( '['.self::$proxy_error_number.'] '.self::$proxy_error_string );
			$string_return = null;
		}
		return $string_return;
	}

// SET / GET
	private static function proxy_host( $proxy_name = null ){
		if( $proxy_name !== null ) self::$proxy_host = $proxy_name;
		return self::$proxy_host;
	}
	private static function proxy_port( $proxy_port = null ){
		if( $proxy_port !== null ) self::$proxy_port = $proxy_port;
		return self::$proxy_port;
	}
	private static function proxy_user( $proxy_user = null ){
		if( $proxy_user !== null ) self::$proxy_user = $proxy_user;
		return self::$proxy_user;
	}
	private static function proxy_pass( $proxy_pass = null ){
		if( $proxy_pass !== null ) self::$proxy_pass = $proxy_pass;
		return self::$proxy_pass;
	}
}

Пример использования


// Proxy
require_once('shell.proxy.php');

// Some simple example :o)
cls__shell_proxy::proxy_set( 'proxy_ip', 'proxy_port' );
var_dump( cls__shell_proxy::proxy_get( 'http://www.google.com' ) );

// or with Basic authentication
cls__shell_proxy::proxy_set( 'proxy_ip', 'proxy_port', 'proxy_user', 'proxy_password' );
var_dump( cls__shell_proxy::proxy_get( 'http://www.google.com' ) );

/*
Returns:
(string) index file of www.google.com
*/

Скачать архивы


Комментировать

captcha

  #1 / Гость
25 июня 2013 / Ответить  

Спасибо за скрипт.

  #2 / codomaza
25 июня 2013 / Ответить  

Пожалуйста! Заходите ещё.

Вход

Зарегистрируйтесь, если нет учетной записи

Напомнить пароль
Регистрация
Напомнить пароль
Войти в личный кабинет