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

Он может послать 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
*/

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

Скачать zip-архив со скриптом.
Скачать tar.gz-архив со скриптом.

Комментарии

captcha
 25 июн. 2013 Ответить

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

,  25 июн. 2013 Ответить

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


Советы по настройке онлайн-календаря под себя Советы по настройке онлайн-календаря
Что такое облачное хранилище и как им пользоваться? Что такое облачное хранилище и как им пользоваться?
Как выбрать пластины для теплообменника? Пластины для теплообменника
Изучение языка ECMAScript: основа современной веб-разработки История языка ECMAScript
Как добавить комментарий в HTML? HTML примеры
Apple позволит разработчикам распространять приложения напрямую с их сайтов Apple позволит разработчикам распространять приложения напрямую с их сайтов
jQuery 4.0 сокращает поддержку браузеров, удаляет API Новое в jQuery 4.0
Как продвинуть Telegram-канал: с нуля до результата Как продвинуть канал в Telegram с нуля?
Получить IT профессию с нуля: академия Eduson Получить IT профессию с нуля
Перспективы эволюции SEO: встречайте будущее продвижения в поисковых системах Будущее SEO-продвижения
Создание сайтов в Алматы: агентство site-promote.kz Разработка сайта компании
Антипкин Михаил Сергеевич о метавселенной, открывающей безграничные возможности для инноваций и экспериментов Антипкин Михаил Сергеевич о метавселенной
Сёрфинг с браузером FraudFox: исчерпывающее руководство Сёрфинг с браузером FraudFox
Где найти лицензионные ключи активации к ПО? Где найти лицензионные ключи активации к ПО?
Курсы веб дизайна: обучение онлайн Курсы веб дизайна: обучение онлайн
Как продлить срок службы бытовой техники? Как продлить срок службы бытовой техники?
Основы VPS/VDS: что нужно знать перед арендой? Основы VPS/VDS: что нужно знать перед арендой?
Откройте для себя азарт Mostbet KZ - ведущего онлайн-казино для геймеров Откройте для себя азарт Mostbet KZ - ведущего онлайн-казино для геймеров
Топ-10 игр для Android стоимостью менее $5 Топ-10 игр для Android стоимостью менее $5
Проверка авто в базе ГИБДД перед покупкой Проверка авто в базе ГИБДД перед покупкой