[英]How to Determine the Download Link from a Secure Link?
这是我关于stackoverflow的第一篇文章。 在编写过程中遇到任何困难时,StackOverflow一直是我的帮手。
好吧,不要浪费很多时间,让我去解决我所困扰的问题,
对于一个项目,我正在建立数据库。
我有这种格式的超链接数据库,
http://link.xyz.com/?id=108
http://link.xyz.com/?id=109
httpp://link.xyz.com/ ID = 110
等等。
这些链接在浏览器中启动时,会将我重定向到一个下载链接,该链接开始下载内容。
例:
在浏览器中打开httpp://link.xyz.com/?id = 108时,它会将我重定向到以下URL。
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)
PS上面的异常仅是由这些链接引起的,程序与其他链接可以正常运行。
伙计们请帮忙,这个问题使我丧命,因此我无法在项目中取得进展。
注意:httpp是有意添加的,因为我无法发布超过2个超链接
谢谢
403 HTTP错误代码是“禁止”的代码。 服务器不希望您访问该资源。
收到此响应代码的原因之一是您尚未登录。服务器希望您在允许下载之前使用用户名和密码登录,这可能是通过HTTP-POST请求到登录表单的某个位置。网站。 然后,它将使用Set-Cookie:
在标头中回复,该标头中包含一个session-id,该ID用作您通过身份验证的证明。 它将希望您在以后的任何请求的Cookie:
标头中包含相同的值。
另一个原因可能是网站检测到您未使用网络浏览器,并希望阻止您抓取其内容。 你应该尊重那个! 当您真的想忽略网站管理员的意愿时,您需要找出导致他们将您的程序检测为非浏览器的确切原因。 它可能只检查您的User-Agent
标头,但是有数百万种其他方法可能会使您的程序表现不同,从而触发检测。 在不知道服务器检查什么的情况下,无法给您任何正确的答案。
下一个问题将是重定向。 您可以获得HTTP状态代码301、307或308的响应。然后,您将在响应的Location
header中找到真实的URL。 另一种实现重定向的方法是通过客户端的Javascript(对于下载门户来说很受欢迎,因为它提供了显示更多广告的机会)。 这意味着您将必须解析content-body,并从其源代码中提取真实URL。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.