【问题标题】:Redirect url to obtain the direct url重定向url获取直接url
【发布时间】:2013-11-02 18:49:44
【问题描述】:

我做了一个解析html文档然后获取一些url的应用程序,问题是url只能直接从导航器下载。

在 VB.NET 或 C# 中,我如何重定向此 url 以获得直接链接,以便稍后将链接粘贴到下载管理器中下载?

dim url as string = "http://m.mrtzcmp3.net/get.php?singer=Madonna&song=Like%20A%20Virgin%20&size=5242104&ids=687474703a2h2h63733434303876342g766s2g6f652h75323237363831362h617564696h732h3132323564303466333839622g6f7033"

我需要说我对 http 的东西没有太多的实验,也许我错了,url 有任何重定向或类似的错误,请告诉我如何重定向那种 url 或者如果我错了。

更新:

试过了,但我得到了相同的网址,没有任何更改:

    Dim url As String = _
    "http://m.mrtzcmp3.net/get.php?singer=Madonna&song=Like%20A%20Virgin%20&size=5242104&ids=687474703a2h2h63733434303876342g766s2g6f652h75323237363831362h617564696h732h3132323564303466333839622g6f7033"

    Dim request As HttpWebRequest = DirectCast(HttpWebRequest.Create(url), HttpWebRequest)
    request.AllowAutoRedirect = True
    Dim response As HttpWebResponse
    Dim resUri As String
    response = request.GetResponse
    resUri = response.ResponseUri.AbsoluteUri
    MsgBox(resUri)

更新 2:

在此处HttpWebRequest Login data Then Redirect的答案中

他说

如果重定向是透明处理的,_response.ResponseURI 将包含它重定向到的地址。如果没有,你必须阅读 重定向标头并自行决定是否请求 新页面。

所以...如果我需要这样做,我该怎么做?

更新 3:

DownloadThemAll Firefox 插件可以获取直接 url...你可以看到所有 url 都以 .mp3 文件扩展名结尾,这就是我需要的

【问题讨论】:

  • 您能否澄清一下“重定向 url 以获取直接链接以供以后粘贴链接”是什么意思?
  • @Adam Moszczyński 该网址用于下载 MP3 音频文件,我希望如果我可以进行重定向操作以获得可以以文件名结尾的“真实网址”,如下所示:@987654326 @ ,这是我的直接链接,如果我认为不对,请见谅。
  • 该 url 也可能指向 http 处理程序,该处理程序将通过将文件直接写入响应来提供文件。它不必是“真实的网址”。
  • DownThenAll 上的 URL/Nombre 不是 url,它只是一个文件名。您可以使用 httpwebresponse.headers (它在该数据中的某个位置)获取该文件名,但这对您没有用。我很确定您提供的网址是下载网址
  • 我不完全确定你在问什么,但直接 url 是你帖子顶部的 url(真的很长),可以用 webclient.downloadfile(url , 文件名 + "mp3")

标签: c# .net vb.net url url-redirection


【解决方案1】:

据我所知,网址

http://m.mrtzcmp3.net/get.php?singer=Madonna&song=Like%20A%20Virgin%20&size=5242104&ids=687474703a2h2h63733434303876342g766s2g6f652h75323237363831362h617564696h732h3132323564303466333839622g6f7033

是直接url,直接文件url不需要文件类型。

您可以使用

下载文件
string url = "http://m.mrtzcmp3.net/get.php?singer=Madonna&song=Like%20A%20Virgin%20&size=5242104&ids=687474703a2h2h63733434303876342g766s2g6f652h75323237363831362h617564696h732h3132323564303466333839622g6f7033"
WebClient wc = new WebClient();
wc.DownloadFile(url, fileName);

您可以通过使用获取文件名(Madonna-Like A Virgin -www.mrtzcmp3.net.mp3)

HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
string header =  myHttpWebResponse.Headers.ToString();
fileName = header.Remove(0, header.IndexOf("filename=")+10);
fileName = fileName.Remove(fileName.IndexOf('"'));

这是未经测试的,但它应该可以工作。

编辑:我认为这是你想要的,但我可能误解了你的问题

【讨论】:

    【解决方案2】:

    您可以使用 web 客户端执行 web 请求以从该 url 获取内容 (url),然后您只需要执行重定向。

    【讨论】:

    • 谢谢,你的意思是我可以像那样获取重定向网址?,我会在几分钟内尝试一下
    • 如果在浏览器中调用url,可以得到url吗?如果是,您可以从 webclient 获取它
    • 我已尝试执行请求,但我的 url 没有任何更改,请查看我的更新?
    • 当我将 url 放入 Firefox 时,url 并没有改变,它只是下载文件。
    • 您是否尝试过使用 webbrowser 类? “WebBrowser 控件维护浏览会话期间访问的所有网页的历史列表。” msdn.microsoft.com/en-us/library/…
    【解决方案3】:

    使用HttpWebRequest 并使用AllowAutoRedirect=true 获取直接链接并下载文件。

    【讨论】:

    • 但这并不能解决我的问题,我想在我的应用程序之外下载它,然后我不能使用 HttpWebRequest 下载它或者 WebBrowser 控件,我只想获得直接下载链接它来自其他应用程序。谢谢你的回答!
    • 如果你想要一个外部应用程序检查我的更新。例如,使用 process.start 并将 URL 提供给 Internet Explorer。
    • 我看到了你的更新,但还是同样的问题,我仍然没有直接的 url,我管理了大量的 url 来重定向
    • 我已尝试执行请求,但我的 url 没有任何更改,请查看我的更新?
    【解决方案4】:

    您可以尝试将 URL 粘贴到诸如 tinyUrl 或 BitLy 之类的 URl 缩短器中吗?也许有一个提供 API 的缩短服务?

    然后文件将下载到:http://tinyurl.com/phzhxsr

    您永远不会从网站所有者那里获得直接的 URL,因为 URL 是动态解析的,并且文件是通过重新运行的数据流发送的,而不是通过下载特定的 URL。

    【讨论】:

    • 谢谢,但我需要直接 url,而不是缩短器,You will never get a direct URL from the site owner because... 我已经更新了我的问题以上传图片以显示可以在下载之前获取直接 url 的程序。
    猜你喜欢
    • 2013-02-24
    • 2013-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 2011-03-22
    相关资源
    最近更新 更多