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