wget และ URL ที่เข้ารหัส


12

ฉันมี URL เช่นนี้:

http://dl.minitoons.ir/longs/Khumba (2013) [EN] [BR-Rip 720p] - [www.minitoons.ir].rar

ฉันต้องการที่จะดาวน์โหลด URL wgetนี้ใช้ ถ้าฉันส่งมันโดยตรงไปwgetทุกอย่างเป็นไปด้วยดี แต่ฉันอยู่ในสถานการณ์ที่มี URL ดาวน์โหลดเฉพาะรุ่นที่เข้ารหัส หากฉันผ่านรุ่นที่เข้ารหัสของ URL ด้านบนไปยังwgetจะเกิดข้อผิดพลาดต่อไปนี้:

$ wget "http%3A%2F%2Fdl.minitoons.ir%2Flongs%2FKhumba%20(2013)%20%5BEN%5D%20%5BBR-Rip%20720p%5D%20-%20%5Bwww.minitoons.ir%5D.rar"
wget: unable to resolve host address `http://dl.minitoons.ir/longs/khumba (2013) [en] [br-rip 720p] - [www.minitoons.ir].rar'

ขอให้สังเกตว่าwgetเปลี่ยนท่อของ URL (เช่นKhumbaการkhumba) ฉันควรทำอย่างไรเพื่อแก้ไขปัญหานี้

คำตอบ:


19

เนื่องจากนี่เป็นเรื่องธรรมดาที่น่ารำคาญจึงมีตัวแปลงหลายอย่างให้ใช้เช่นเว็บไซต์นี้ คุณสามารถใช้สิ่งเหล่านี้เพื่อถอดรหัส URL - ดังนั้นมันจะทำการแปลง:

http%3A%2F%2Fdl.minitoons.ir%2Flongs%2FKhumba%20(2013)%20%5BEN%5D%20%5BBR-Rip%20720p%5D%20-%20%5Bwww.minitoons.ir%5D.rar

ถึง:

http://dl.minitoons.ir/longs/Khumba (2013) [EN] [BR-Rip 720p] - [www.minitoons.ir].rar

มันจะเป็น niCe ที่จะมีรุ่นบรรทัดคำสั่งแม้ว่า ...

แก้ไข:

พบเวอร์ชันบรรทัดคำสั่ง - โดยทั่วไป:

echo "http%3A%2F%2F-REST-OF-URL" | sed -e's/%\([0-9A-F][0-9A-F]\)/\\\\\x\1/g' | xargs echo -e

สิ่งนี้สามารถนำไปใช้ในสคริปต์เช่นนี้เพื่อถอดรหัส URL:

#!/bin/bash
echo "$@" | sed -e's/%\([0-9A-F][0-9A-F]\)/\\\\\x\1/g' | xargs echo -e
exit

ซึ่งถ้าบันทึกไว้และทำให้สามารถใช้งานได้จะทำงานได้ค่อนข้างดี

สคริปต์นี้ด้วยซึ่งจะดาวน์โหลด UL ด้วย:

#!/bin/bash
echo "$@" | sed -e's/%\([0-9A-F][0-9A-F]\)/\\\\\x\1/g' | xargs echo -e | wget -c -i -
exit

NBฉันคิดว่ากรณีที่ URL ไม่สำคัญสำหรับไซต์ส่วนใหญ่ - เช่นHTTP://WWW.UBUNTU.COM


4
python -c 'import urllib2; print urllib2.unquote("'${URL}'")'ทำเช่นเดียวกันโดยประมาณถ้าคุณใส่ URL ของคุณใน URL ตัวแปรสภาพแวดล้อม
taneli

3
กรณีสำหรับโดเมนโดยทั่วไปจะไม่สำคัญ แต่กรณีสำหรับสิ่งที่เกิดขึ้นหลังจากนั้นอาจเป็นได้หากเซิร์ฟเวอร์ใช้การกำหนดเส้นทางที่เป็นกรณี ๆ ไปหรือไม่เปลี่ยนเส้นทาง URL ที่มีกรณีอื่นไปยังหน้าจริง ในกรณีที่จุด: developer.android.com/reference/android/view/View.htmlเมื่อเทียบกับdeveloper.android.com/reference/android/view/view.html
JAB

7

คุณควรใช้แบบนี้

wget "http://dl.minitoons.ir/longs/Khumba%20(2013)%20[EN]%20[BR-Rip%20720p]%20-%20[www.minitoons.ir].rar"`

%20เพียงแค่เปลี่ยนพื้นที่ที่มีทุก หรือดีกว่าคัดลอกลิงค์เดิมของคุณแล้ววางในแถบที่อยู่ของ Chromium Browser มันจะจัดรูปแบบให้คุณโดยอัตโนมัติ ตอนนี้คัดลอกจากที่นั่นไปยังสถานีของคุณ


2
วิธีนี้อาจมีความเสี่ยงด้านความปลอดภัยในบางกรณี หากคุณมีโครเมี่ยมเปิดก็น่าจะเป็นวิธีที่เร็วที่สุดที่จะกด[Ctrl]+[Shift]+[J](สำหรับคอนโซล dev) decodeURIComponent("your-decoded-URI")และแทรก
ComFreek

4

Wget คาดว่า URL จะมีรูปแบบดังต่อไปนี้:

[protocol://]host/path

โปรโตคอลเป็นตัวเลือก ในกรณีที่ไม่มีโปรโตคอล Wget จะถือว่า HTTP

wget ยอมรับ URL ที่ร้อยละเข้ารหัสเพียงแค่ปรับ แต่ตัวคั่นระหว่างโปรโตคอล , โฮสต์และเส้นทางที่ไม่สามารถร้อยละเข้ารหัส

นี่คือสาเหตุที่ Wget เปลี่ยนการเปลี่ยน URL เนื่องจากมันไม่พบสแลชที่ไม่มีการเข้ารหัสเดียวก็ถือว่ามัน

http://dl.minitoons.ir/longs/khumba (2013) [en] [br-rip 720p] - [www.minitoons.ir].rar

คือชื่อโฮสต์ (ซึ่งจะตรงตามตัวพิมพ์เล็กและใหญ่) dl.minitoons.irชื่อโฮสต์ที่เกิดขึ้นจริงของหลักสูตร

สำหรับโซลูชันอัตโนมัติการแทนที่%3A%2F%2Fและ%2Fหลังชื่อโฮสต์โดย://และ/จะพอเพียง แต่เป็นเรื่องง่ายที่จะถอดรหัส URL ที่หนึ่ง @ Wilf ได้แก้ปัญหาที่ดีสำหรับเรื่องนี้แล้ว

อย่างไรก็ตามหากคุณจะพิมพ์คำสั่ง Wget ด้วยตนเองให้ทำดังนี้

wget "dl.minitoons.ir/longs%2FKhumba%20(2013)%20%5BEN%5D%20%5BBR-Rip%20720p%5D%20-%20%5Bwww.minitoons.ir%5D.rar"

1

คุณจะต้องใส่เครื่องหมายคำพูดรอบ ๆ URL และทำ:

wget "http://dl.minitoons.ir/longs/Khumba (2013) [EN] [BR-Rip 720p] - [www.minitoons.ir].rar"
Warning: wildcards not supported in HTTP.
--2014-03-02 20:40:20--  http://dl.minitoons.ir/longs/Khumba%20(2013)%20[EN]%20[BR-Rip%20720p]%20-%20[www.minitoons.ir].rar
Resolving dl.minitoons.ir (dl.minitoons.ir)... 79.127.127.41
Connecting to dl.minitoons.ir (dl.minitoons.ir)|79.127.127.41|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 594062365 (567M) [application/x-rar-compressed]
Saving to: ‘Khumba (2013) [EN] [BR-Rip 720p] - [www.minitoons.ir].rar’

 0% [                                       ] 73,288      44.9KB/s          

เป็นวิธีที่ง่ายกว่าและคุณไม่ต้องลำบากใจกับสิ่งต่างๆ


0

ฉันสิ้นสุดการเขียนสคริปต์หลามมัน

from os import listdir, rename
from urllib.parse import unquote  # py2: from urllib import unquote

os.chdir('/mydir/')
for filename in listdir('.'):
    rename(filename, unquote(filename))
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.