Question

Je dois créer un script proxy pouvant accéder à une page cachée derrière un écran de connexion.Je n'ai pas besoin du proxy pour "simuler" la connexion, mais la page de connexion HTML doit être affichée normalement à l'utilisateur, et tous les cookies et les données HTTP GET/POST doivent passer par le proxy vers le serveur, donc la connexion doit être authentique.

Je ne veux pas de login/mot de passe, j'ai seulement besoin d'accéder au code source HTML des pages générées après se connecter.

Est-ce que quelqu'un ici sait comment cela peut être réalisé ?Est-ce facile?

Sinon, par où commencer ?* (J'utilise actuellement PHP)*

Était-ce utile?

La solution

Vous parlez d’accéder à des pages pour lesquelles vous devez vous authentifier.

Voici quelques éléments qui doivent être définis :

  • vous ne pouvez pas consulter ces pages sans vous authentifier.
  • si le site Web (dont vous souhaitez voir le code HTML) ne prend en charge que la connexion Web comme méthode d'authentification, vous devrez simuler la connexion en envoyant un (nom d'utilisateur, mot de passe) via POST/GET, selon le cas
  • si le site Web vous permet de vous authentifier par d'autres moyens (comme LDAP, Kerberos, etc.), alors vous devriez le faire

Le point clé est que vous ne pouvez pas y accéder sans vous authentifier au préalable.

Quant au langage, c'est assez faisable en PHP.Et comme le suggèrent les balises sur la question, vous utilisez déjà les bons outils pour effectuer ce travail.

Une chose que j'aimerais savoir, c'est pourquoi appelez-vous cela un « proxy » ?souhaitez-vous proposer le contenu à d'autres utilisateurs ?

MODIFIER: [mise à jour après commentaire]

Dans ce cas, utilisez phproxy.Il fait ce que vous voulez, avec une foule d'autres fonctionnalités.

Autres conseils

Demandez à votre script PHP de demander l'URL souhaitée et réécrivez tous les liens et actions de formulaire pour pointer vers votre script php.Lorsque vous recevez des requêtes adressées au script comportant un paramètre URL, transférez-le au serveur distant et répétez.

Vous ne pourrez pas intercepter toutes les requêtes JavaScript (sauf si vous avez implémenté une partie JavaScript de votre "proxy")

Par exemple:Types d'utilisateurs http://exemple.com/login.php dans votre formulaire de procuration.

envoyer l'utilisateur vers http://votresite.com/proxy.php?url=http://example.com/login.php

assurez-vous de coder en urlen le paramètre "http://exemple.com/login.php"

Dans http://votresite.com/proxy.php, vous faites une requête HTTP à http://exemple.com/login.php

$url = $_REQUEST['url'];

// make sure we have a valid URL and not file path
if (!preg_match("`https?\://`i", $url)) {
    die('Not a URL');
}

// make the HTTP request to the requested URL
$content = file_get_contents($url);

// parse all links and forms actions and redirect back to this script
$content = preg_replace("/some-smart-regex-here/i", "$1 or $2 smart replaces", $content);

echo $content;

Noter que /une-regex-intelligente-ici/i est en fait une expression régulière que vous devez écrire pour analyser les liens, etc.

L'exemple proxy simplement le corps HTTP, vous souhaiterez peut-être proxy les en-têtes HTTP.Vous pouvez utiliser les fonctions de flux fsockopen() ou PHP en PHP5+ (stream_socket_client() etc.)

Tu pourrais vérifier http://code.google.com/p/php-transparent-proxy/ , je l'ai fait parce que je me posais exactement la même question et j'ai décidé d'en faire une.C'est sous licence BSD, alors amusez-vous bien :)

Je recommanderais d'utiliser Curl (bibliothèque PHP que vous pourriez avoir besoin d'activer dans votre php.ini), il est utilisé pour manipuler des sites Web distants, la gestion des cookies et tous les paramètres HTTP dont vous avez besoin.Vous devrez rédiger votre proxy en fonction des pages Web que vous consultez, mais cela fera l'affaire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top