Этот скрипт может быть использован для получения страницы с помощью прокси-серверов с аутентификацией.
Он может послать 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-архив со скриптом.
24 мар. 2012
6,931
2
Комментировать
Спасибо за скрипт.