gpt4 book ai didi

java - 如何确定安全链接的下载链接?

转载 作者:行者123 更新时间:2023-12-01 13:09:10 29 4
gpt4 key购买 nike

这是我在 stackoverflow 上发表的第一篇文章。当我在编码过程中遇到任何困难时,StackOverflow 一直是我的 helper 。

好吧,不浪费太多时间,让我来谈谈我遇到的问题,

对于一个项目,我正在建立数据库。

我有一个这种格式的超链接数据库,

http://link.xyz.com/?id=108
http://link.xyz.com/?id=109
http://link.xyz.com/?id=110

等等。

这些链接在浏览器中启动时,会将我重定向到开始下载内容的下载链接。

示例:

当在浏览器中打开 httpp://link.xyz.com/?id=108 时,它会将我重定向到以下网址。

httpp://xyz.com/abc/pqr/some_content.avi [下载链接]。

所以我正在寻找一种解决方案,将我庞大的超链接列表转换为下载链接。

解决方案是任何编程语言都可以接受,只要将安全链接转换为下载链接即可。

我尝试在 JAVA 中使用 HttpURLConnection 和几个库,但没有成功。

我扔掉了下面的异常,

Request URL ... httpp://link.xyz.com/?id=3108
Response Code ... 403
java.io.IOException: Server returned HTTP response code: 403 for URL: httpp://link.xyz.com/?id=3108
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection$6.run(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection$6.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.net.www.protocol.http.HttpURLConnection.getChainedException(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at Fetch.main(Fetch.java:56)
Caused by: java.io.IOException: Server returned HTTP response code: 403 for URL: httpp://link.xyz.com/?id=3108
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at java.net.HttpURLConnection.getResponseCode(Unknown Source)
at Fetch.main(Fetch.java:26)



P.S 上述异常仅由这些链接引起,其他链接程序运行正常。

大家请帮忙,这个问题快要了我的命,因此我无法在项目中取得进展。

注意:httpp 是故意添加的,因为我无法发布超过 2 个超链接

谢谢

最佳答案

403 HTTP 错误代码是“Forbidden”的代码。服务器不希望您访问该资源。

获得此响应代码的一个原因是您尚未登录。服务器希望您在允许下载之前使用用户名和密码登录,可能会向登录表单发送 HTTP-POST 请求网站上的某个地方。然后,它会在 header 中回复 Set-Cookie:,其中包含一个 session ID,可作为您已通过身份验证的证明。它希望您在任何 future 请求的 Cookie: header 中包含相同的值。

另一个原因可能是网站检测到您没有使用网络浏览器,并希望阻止您抓取其内容。你应该尊重这一点!当您确实想忽略网站管理员的意愿时,您需要找出到底是什么原因导致他们将您的程序检测为非浏览器。它可能只是检查您的 User-Agent header ,但您的程序可能会以数百万种其他方式表现出不同的行为,从而触发检测。在不知道服务器检查什么的情况下,无法给您任何正确的答案。

下一个问题将是重定向之后的问题。您可以获得 HTTP 状态代码 301、307 或 308 的响应。然后您将在响应的 Location header 中找到真实的 URL。实现重定向的另一种方法是通过客户端的 Javascript(在下载门户中很流行,因为它提供了显示更多广告的机会)。这意味着您必须解析内容主体并从其源代码中提取真实的 URL。

关于java - 如何确定安全链接的下载链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23029749/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com