Proxy sans accès à un proxy

Il n’est pas toujours facile d’avoir accès à « tout » internet depuis l’intranet d’une société…

J’ai eu la chance d’avoir dans différentes sociétés ou j’ai travaillé et ou l’accès à Internet qui m’étais offert, d’avoir un accès total, sans limitations… mais cela est bien rare: les administrateurs limitent pour diverses raisons l’accès aux sites, le plus souvent tous les sites de streaming sont limités ou carrément « interdit » !

Une astuce est alors de passer par un proxy ou pour être plus exacte, un site qui ira chercher les pages auxquelles vous n’avez pas accès, mais site auquel vous avez toutefois accès !

Sur mon dernier travail, j’avais accès aux pages qui étaient sur mon domaine dyndns.org et qui pointaient sur mon NAS – c’est lui qui héberge les pages WEB de quelques un de mes sites.

Solution: installer un script qui permet de charger les pages d’une URL puis de les afficher dans une frame HTML.

 

Initialement, alors que je cherchais une fonction PHP pour un projet, je suis tombé sur une de ces fonctions PHP (« curl ») qui permettent de récupérer un stream HTML. Après avoir codé quelques lignes, je me suis apperçu que certains avaient déja mieux travaillés que moi:

// PHP Proxy
// Responds to both HTTP GET and POST requests
//
// Author: Abdul Qabiz
// March 31st, 2006
//

// Get the url of to be proxied
// Is it a POST or a GET?
$url = ($_POST['url']) ? $_POST['url'] : $_GET['url'];
$headers = ($_POST['headers']) ? $_POST['headers'] : $_GET['headers'];
$mimeType =($_POST['mimeType']) ? $_POST['mimeType'] : $_GET['mimeType'];


//Start the Curl session
$session = curl_init($url);

// If it's a POST, put the POST data in the body
if ($_POST['url']) {
	$postvars = '';
	while ($element = current($_POST)) {
		$postvars .= key($_POST).'='.$element.'&';
		next($_POST);
	}
	curl_setopt ($session, CURLOPT_POST, true);
	curl_setopt ($session, CURLOPT_POSTFIELDS, $postvars);
}

// Don't return HTTP headers. Do return the contents of the call
curl_setopt($session, CURLOPT_HEADER, ($headers == "true") ? true : false);

curl_setopt($session, CURLOPT_FOLLOWLOCATION, true); 
//curl_setopt($ch, CURLOPT_TIMEOUT, 4); 
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);

// Make the call
$response = curl_exec($session);

if ($mimeType != "")
{
	// The web service returns XML. Set the Content-Type appropriately
	header("Content-Type: ".$mimeType);
}

echo $response;

curl_close($session);

 

D’autres sources :

 

Comments

No comments yet. Why don’t you start the discussion?

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.