wget ve kodlanmış URL


12

Ben böyle bir URL var:

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

Bu URL'yi kullanarak indirmek istiyorum wget. Eğer doğrudan doğruya geçirirsem wget, her şey yolunda gidiyor. Ancak indirme URL'lerinin yalnızca kodlanmış sürümlerine sahip olduğum bir durumdayım. Yukarıdaki URL'nin kodlanmış sürümünü wgetgeçersem şu hatayı atar:

$ 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'

Bildirim wget(örneğin URL kasasını değiştirdi Khumbaiçin khumba). Bu sorunu çözmek için ne yapmalıyım?

Yanıtlar:


19

Bu can sıkıcı bir şekilde yaygın olduğundan, çeşitli dönüştürücüler vardır - örneğin, bu site . Bunları URL'nin kodunu çözmek için kullanabilirsiniz - böylece şunu dönüştürür:

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

için:

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

Yine de bir komut satırı sürümü olması niCe olurdu ...

DÜZENLE:

Bir komut satırı sürümü bulundu - temel olarak:

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

Bu, URL'nin kodunu çözmek için şöyle bir komut dosyasında uygulanabilir:

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

hangi kaydedilmiş ve çalıştırılabilir yapılır, oldukça iyi çalışıyor.

ayrıca UL'yi de indirecek olan bu komut dosyası:

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

NB URL'nin bulunduğu durumun çoğu site için önemli olmadığını düşünüyorum - ör.HTTP://WWW.UBUNTU.COM


4
python -c 'import urllib2; print urllib2.unquote("'${URL}'")'URL'nizi ortam değişkeni URL'sine koyarsanız yaklaşık olarak aynı şeyi yapar.
taneli

3
Etki alanı için durum genellikle önemli değildir, ancak bundan sonra gelen durum, sunucu büyük / küçük harfe duyarlı yönlendirme kullanıyorsa veya farklı durumdaki URL'leri gerçek sayfaya yönlendirmiyorsa olabilir. Burada örnek: geliştirici.android.com/ reference/android/view/View.html ve developer.android.com/reference/android/view/view.html .
JAB

7

Bunu böyle kullanmalısın

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

Sadece her alanı değiştirin %20. Veya Orijinal bağlantınızı kopyalayıp Chromium Tarayıcı adres çubuğuna yapıştırın. Otomatik olarak sizin için biçimlendirir. Şimdi oradan terminalinize kopyalayın.


2
Bu yöntem bazı durumlarda güvenlik riski oluşturabilir. Zaten Chromium açıksa, muhtemelen [Ctrl]+[Shift]+[J](geliştirici konsolu için) tuşuna basıp eklemenin en hızlı yoludur decodeURIComponent("your-decoded-URI").
ComFreek

4

Wget, URL'nin aşağıdaki biçime sahip olmasını bekler:

[protocol://]host/path

Protokol isteğe bağlıdır. Protokol olmadığında Wget HTTP'yi kabul eder.

Wget yüzde kodlu URL'leri iyi kabul eder, ancak protokol , ana bilgisayar ve yol arasındaki sınırlayıcılar yüzde kodlu olamaz.

Bu yüzden Wget, URL'nin büyük / küçük harf durumunu değiştirdi. Kodlanmamış tek bir eğik çizgi bulamadığı için,

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

ana bilgisayar adıdır (büyük / küçük harfe duyarlı değildir). Gerçek ana bilgisayar adı elbette dl.minitoons.ir.

Otomatik çözümü, ikame için %3A%2F%2Fve %2Ftarafından ana bilgisayar adından sonra ://ve /yeterli olacaktır, ancak birinde URL'yi deşifre etmek gibi kolay. @Wilf zaten bunun için iyi bir çözüm verdi.

Ancak, Wget komutunu el ile yazacaksanız, bunu yapmanız yeterlidir:

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

1

Sadece URL'nin etrafına tırnak koymanız ve yapmanız gerekenler:

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          

Bu şekilde daha kolay ve kendinizi eşyalarla utandırmanıza gerek yok.


0

Bunun için bir python betiği yazdım.

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))
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.