建立外部HTTP连接的脚本示例(Windows)

2020年12月29日16:02:55 发表评论 40 次浏览

对于notlogy Windows Web托管软件包

如果程序或脚本旨在从Internet上的其他资源(例如网站或其他文件)中读取数据, 则必须使用HTTP代理服务器的notlogy(winproxyus1.server.lan)。如果不这样做, 出于安全原因将拒绝连接。

使用HTTP代理进行外部连接有两种方法:配置web.config文件或将其写入程序。

选项1:在web.config中启用HTTP代理

由于必须始终将代理自动自动用于HTTP请求, 因此必须配置web.config文件。为此, 主机winproxyus1.server.lan必须注册为defaultProxy在里面<system.net>...</system.net>部分:

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

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

选项2:在脚本中启用HTTP代理

作为web.config配置的替代方法, 还可以为请求临时激活代理。

以下代码示例VB.NET和C#展示如何使用激活HTTP代理WebRequest.Proxy的属性Web请求类(来自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://winproxyus1.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://winproxyus1.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>

应用范例(ASP.NET)

以下是一个简单的代码示例ASP.NET可用于验证HTTP代理功能的Web应用程序。这是通过发送不完整的请求到Google reCAPTCHA API, 通常用于验证用户对recAPTCHA质询的响应。然后, 来自Google服务器的响应将显示在网站上。

请注意, 这不是Google reCAPTCHA的完整实现。没有reCAPCHTA的情况下, 仅模拟recAPTCHA挑战所需的请求。

  • 创建两个名为default.aspx和default.aspx.cs在你的网站空间上, 然后将下面的代码复制到其中。
  • 打开default.aspx浏览器中你域中的页面。
  • 请点击开始发送请求并在页面输入字段之前显示响应。
  • 检查文本是否显示在输入字段的左侧。输出应如下所示:

    {"成功":false, "错误代码":["缺少输入响应", "缺少输入秘密"]}

    重要的是那里有东西并且没有系统错误。如果你不能更正后者, 请检查是否可以使用前面提到的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://winproxyus1.server.lan:3128/", true);
wrGETURL.Proxy = myProxy;

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

内容

  • 选项1:在web.config中启用HTTP代理
  • 选项2:在脚本中启用HTTP代理
  • 应用范例(ASP.NET)
  • 到达顶点
一盏木

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: