Exemples de scripts pour établir une connexion HTTP externe (hébergement Windows)

Pour les offres Hébergement Windows

Si un programme/script doit lire les données d'une ressource Internet (un site Web ou un fichier), la connexion doit être établie via le serveur proxy HTTP de 1&1 IONOS (winproxy.server.lan). Autrement, la connexion est rejetée pour des raisons de sécurité.

Il y a deux façons d'utiliser le proxy HTTP pour les connexions externes : Déclaratif via web.config, ou au niveau du programme.

Option 1 : Activer le proxy HTTP via web.config

Si le proxy doit toujours être utilisé automatiquement pour les requêtes HTTP, une configuration via le fichier web.config est nécessaire. Pour cela, l'hôte winproxy.schlund.de doit être installé comme defaultProxy dans la zone<system.net> ... </system.net> doivent être enregistré :

<configuration> 
...
<system.net>
    <defaultProxy>
        <proxy  proxyaddress="http://winproxy.server.lan:3128"
                bypassonlocal="true"
        />

    </defaultProxy>
</system.net>
...
</configuration> 

//Les ... représentent ici les entrées déjà présentes dans le script

Option 2 : Activer le proxy HTTP dans le script

Comme alternative à la configuration via web.config, le proxy peut également être activé temporairement pour les requêtes.

Les exemples de code suivants pour VB.NET et C# montrent comment activer le proxy HTTP en utilisant la propriété WebRequest.Proxy de la classe WebRequest (depuis l'espace de noms system.net) :

VB.NET
<% @Import Namespace="System.Net" %>
<% @Import Namespace="System.IO" %>
<script language="VB" runat=server>

Sub Page_Load(sender as object, e as System.EventArgs)
Try
Dim wrq As WebRequest = WebRequest.Create("http://domain.tld") //replace domain.tld as wanted
wrq.Proxy = new WebProxy("http://winproxy.server.lan:3128")
Dim wrp As WebResponse = wrq.GetResponse()

Dim sr as StreamReader = new StreamReader(wrp.GetResponseStream(), Encoding.ASCII)
While sr.Peek() > 0
Response.Write(sr.ReadLine())
End While

Catch ex as WebException
Response.Write(ex.Message)
End Try
End Sub

</script>
C#
<% @Import Namespace="System.Net" %>
<% @Import Namespace="System.IO" %>
<script language="C#" runat=server>

void Page_Load(object sender, System.EventArgs e)
{
try
{
WebRequest wrq = WebRequest.Create("http://domain.tld"); // replace domain.tld as wanted
wrq.Proxy = new WebProxy("http://winproxy.server.lan:3128");
WebResponse wrp = wrq.GetResponse();

StreamReader sr = new StreamReader(wrp.GetResponseStream(), Encoding.ASCII);
while (sr.Peek() > 0)
{
Response.Write(sr.ReadLine());
}
}
catch(WebException ex)
{
Response.Write(ex.Message);
}
}
</script> 

Exemple d'application (ASP.NET)

Ce qui suit sont des exemples de code d'une simple application Web ASP.NET que vous pouvez utiliser pour vérifier la fonctionnalité du proxy HTTP. Cela se fait en envoyant une requête (incomplète) à l'API Google reCAPTCHA, qui est couramment utilisée pour vérifier la réponse d'un utilisateur à une tâche recAPTCHA. La réponse du serveur Google sera alors affichée sur le site Web.

Veuillez noter qu'il ne s'agit pas d'une implémentation complète de Google reCAPTCHA ; seule la requête nécessaire pour une tâche recAPTCHA est simulée sans un reCAPCHTA correspondant.

  • Créez deux fichiers nommés default.aspx et default.aspx.cs sur votre espace Web et copiez le code ci-dessous.
  • Ouvrez la page default.aspx depuis votre domaine dans le navigateur.
  • Cliquez sur Start.

    Une demande est maintenant envoyée et la réponse est affichée juste avant le champ de saisie de la page.
  • Vérifiez si un texte est affiché à gauche du champ de saisie. Cela devrait ressembler à ceci :

    { "success": false, "error-codes": [ "missing-input-response", "missing-input-secret" ] }
    CE qui importe est qu'il y ait quelque chose et qu'il n'y ait pas d'erreur système. S'il y a une erreur système et que vous ne pouvez pas la corriger, vérifiez si le proxy peut être activé alternativement via web.config.
default.aspx
<%@ Page Language="C#" AutoEventWireup="true" Codefile="default.aspx.cs" Inherits="WebApplication1._default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="URL:"></asp:Label>
<asp:TextBox ID="TextBox1" runat="server" Width="269px" Text="https://www.google.com/recaptcha/api/siteverify"></asp:TextBox> 
<asp:Button ID="Button1" runat="server" Text="Start" OnClick="Button1_Click" /> 
</div>
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>

</form>
</body>
</html>
default.aspx.cs
using System;
using System.Net;
using System.IO;

namespace WebApplication1

{
public partial class _default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}

protected void Button1_Click(object sender, EventArgs e)
{
WebrequesProxy();
}

protected void WebrequesProxy()
{
WebRequest wrGETURL;
wrGETURL = WebRequest.Create(TextBox1.Text);
WebProxy myProxy = new WebProxy("http://winproxy.server.lan:3128/",true);
wrGETURL.Proxy = myProxy;

Stream objStream;
objStream = wrGETURL.GetResponse().GetResponseStream();
StreamReader objReader = new StreamReader(objStream);
Label1.Text = objReader.ReadToEnd();
}
}
}