簡體   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