当前位置: 首页 > 面试题库 >

在Go中查询网址而无需重定向

狄富
2023-03-14
问题内容

我正在为重定向脚本编写基准测试。

我希望程序查询某些重定向到AppStore的URL。但是我不希望下载AppStore页面。我只想记录重定向URL或错误。

我该如何告诉转到查询URL而无需第二次重定向查询?

更新

这两个答案都是正确的,但是:

我尝试了两种解决方案。我正在做基准测试。我使用10-500个go例程运行1个或多个go进程。他们循环查询URL。我的服务器也是用go编写的。它每秒报告一次请求数。

  • 第一个解决方案:http.DefaultTransport.RoundTrip-工作缓慢,出现错误。前4秒工作正常。进行300-500个查询,然后性能会下降到每秒80个查询。

然后下降到每秒0-5个查询,queryies脚本开始出现如下错误

dial tcp IP:80: A connection attempt failed because the connected 
party did not properly respond after a period of time, or established 
connection failed because connected host has failed to respond.

我猜它重用了已关闭的连接。

  • 第二种解决方案:CheckRedirect field以恒定的性能工作。我不确定它是否重用连接还是为每个请求打开一个新连接。我client为循环中的每个请求创建一个。这就是它在现实生活中的行为方式(每个请求都是一个新的连接)。有没有办法确保每个查询后关闭连接并且不重新使用连接?

这就是为什么我要标记第二种解决方案来回答我的问题。但是对于我的研究而言,每个查询都是一个新的连接非常重要。如何保证第二种解决方案?


问题答案:

为了完整起见,您 可以
使用http.Client和不遵循重定向。http.Client具有CheckRedirect场这是一个功能。在进行任何重定向之前都将调用它。

如果此函数返回错误,httpClient.Do(...)则将
遵循重定向(请参见doFollowingRedirects()Go的源代码中的函数),而将返回错误(其具体类型为url.Error,并且其URL字段将为重定向到URL,也就是Location标头值)
,请参见此代码)。

您可以查看我的gocrawl库以获取此用法的具体示例



 类似资料:
  • 问题内容: 我想知道如何更改URL而不重定向,就像在我们的网站http://dekho.com.pk/ads-in- lahore 上那样, 当我们单击选项卡时url会更改,但是页面完全重新加载。在上还有其他问题,表明这是不可能的,但我想知道上述网站是如何实现的。谢谢 问题答案: 用途:

  • 问题内容: 当用户输入无效的url时,如何使node.js服务器将用户重定向到404.html页面? 我做了一些搜索,看起来大多数结果都是针对Express的,但是我想用纯node.js编写我的服务器。 问题答案: 确定“错误” URL的逻辑特定于您的应用程序。如果您正在执行RESTful应用,则可能是一个简单的文件未找到错误或其他错误。一旦弄清楚了,发送重定向就很简单:

  • 有没有办法不在方法请求和集成请求中定义URL查询字符串参数,并将查询字符串传递给HTTP代理? 例如,在https://{api id}-api.us-east-1.amazonaws.com/test/user?start=1 查询字符串1. start 2. end 若我把URL查询字符串参数放在方法请求和集成请求中,那个么我就能够得到这两个查询字符串。然而,如果我不添加它们并在postman

  • 问题内容: 我正在使用scrapy抓取一个似乎在每个URL末尾向查询字符串添加随机值的网站。这将爬网变成一种无限循环。 我如何抓紧忽略URL的查询字符串部分? 问题答案: 示例代码: 输出示例:

  • demo import java.io.IOException; import java.net.*; /**  * 查找IP地址  */ public class TestFindDNS {   public static void main(String[] args) throws IOException {     //     String href = "http://

  • 问题内容: 有什么方法可以在不重启mySQL服务器的情况下 清除 mysql 查询缓存 ? 问题答案: 我相信您可以使用… …如果您所运行的用户具有重新加载权限。另外,您可以通过…对查询缓存进行碎片整理。 有关更多信息,请参见MySQL手册的“ 查询缓存状态和维护”部分。