繁体   English   中英

如何从安全链接确定下载链接?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM