仅使用 URL 字符串确定 URL 是不是会将客户端重定向到其他 URL
Posted
技术标签:
【中文标题】仅使用 URL 字符串确定 URL 是不是会将客户端重定向到其他 URL【英文标题】:Determine if a URL will redirect the client to some other URL, using only the URL string仅使用 URL 字符串确定 URL 是否会将客户端重定向到其他 URL 【发布时间】:2014-01-19 05:24:13 【问题描述】:我可以相信以下陈述吗?
一个 URL 会将客户端重定向到某个其他 URL当且仅当它包含多次出现的“http://”和/或“https://”? p>
注意:我所说的“和/或”是指每个标记的单次出现仍算作两次出现。
我猜答案是否定的,因为一些只有一个这样的令牌的 URL 可能仍会将客户端引导到一个网页,然后该网页将运行一些 javascript,最终将重定向客户端。
如果答案确实是否定的,那么我是否有任何其他方法可以在不“进入 URL”的情况下确定这一点(使用 URL-Connection、浏览器、Selenium 等)?
谢谢
【问题讨论】:
没有。您必须转到 URL。 您必须获取该页面才能查看它会将您重定向到哪里。但是您不需要网络浏览器。一个简单的netcat
或curl
将显示返回的页面是301、302、303 还是任何3XX。这是您发出curl http://google.com
时的示例输出。 <html><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>301 Moved</TITLE></HEAD><BODY> <H1>301 Moved</H1> The document has moved <A HREF="http://www.google.com/">here</A>. </BODY></HTML>
我如何在 Java 中“卷曲”?
@barakmanos 要在使用HttpUrlConnection
时检查响应代码,您可以在其对象上调用getResponseCode()
方法。它返回一个整数代码。例如:200-表示正常,301-表示永久重定向等
@boxed__l,谢谢,但这在 100% 的情况下都不起作用。方法“getResponseCode”可能返回 200,而 URL 仍会将客户端重定向到其他地方。因此,HttpURLConnection 和“curl”(我猜它们是等效的)都没有提供“完全证明”的解决方案(不过,我很高兴听到任何可以证明不同的使用建议)。
【参考方案1】:
无法从 URL 得知您是否会被重定向。例如,http://bit.ly/1dprzK4 重定向到此处 - 没有任何额外的“http://”或“https://”。
网址中没有任何内容表明您将被重定向或不会被重定向。无论 URL 是什么样的,是否重定向都是 Web 服务器/应用程序的选择。
【讨论】:
简短而准确的答案;谢谢。顺便说一句,您是如何生成重定向到此页面的 URL 的? @barakmanos - 转到bit.ly,然后粘贴这个*** url,它会给你一个新的url,你可以像这样粘贴在这里bit.ly/1dprzK4。以上是关于仅使用 URL 字符串确定 URL 是不是会将客户端重定向到其他 URL的主要内容,如果未能解决你的问题,请参考以下文章
确定字符串是不是是Java中带有正则表达式的URL [重复]
图像标签 - 如何在 url 失败的情况下放置一个 ICON(不是字符串 - 不是 URL)?