Saya perlu mendapatkan URL final setelah pengalihan halaman, sebaiknya dengan curl atau wget.
Misalnya http://google.com dapat dialihkan ke http://www.google.com .
Isinya mudah didapat (mis. curl --max-redirs 10 http://google.com -L
), Tetapi saya hanya tertarik pada url terakhir (dalam kasus sebelumnya http://www.google.com ).
Apakah ada cara untuk melakukan ini dengan hanya menggunakan alat bawaan Linux? (hanya baris perintah)
:-)
-I
jika tidak maka file akan benar-benar diunduh.curl -A ...
untuk mengarahkan ke lokasi yang diharapkan.Terima kasih, itu membantu saya. Saya membuat beberapa perbaikan dan membungkusnya dengan skrip pembantu "finalurl":
-o
keluaran ke/dev/null
-I
tidak benar-benar mengunduh, temukan saja URL finalnya-s
mode diam, tidak ada bilah kemajuanIni memungkinkan untuk memanggil perintah dari skrip lain seperti ini:
sumber
finalurl() { curl --silent --location --head --output /dev/null --write-out '%{url_effective}' -- "$@"; }
sebagai opsi lain:
Tapi itu tidak melewati yang pertama.
sumber
Anda biasanya dapat melakukan ini dengan wget.
wget --content-disposition
"url" tambahan jika Anda menambahkan-O /dev/null
Anda tidak akan benar-benar menyimpan file.wget -O /dev/null --content-disposition example.com
sumber
-O /dev/null
menjadi saja-O-
. Lebih baik:wget -O- --content-disposition example.com
Terima kasih. Saya akhirnya menerapkan saran Anda: curl -i + grep
Mengembalikan kosong jika situs web tidak mengalihkan, tetapi itu cukup baik bagi saya karena berfungsi pada pengalihan berturut-turut.
Mungkin buggy, tapi sekilas berfungsi dengan baik.
sumber
Ini akan berhasil:
sumber
Parameter
-L (--location)
dan-I (--head)
masih melakukan permintaan HEAD yang tidak perlu ke lokasi-url.Jika Anda yakin bahwa Anda tidak akan memiliki lebih dari satu pengalihan, lebih baik nonaktifkan lokasi mengikuti dan gunakan variabel-curl% {redirect_url}.
Kode ini hanya melakukan satu permintaan HEAD ke URL yang ditentukan dan mengambil redirect_url dari header lokasi:
Tes kecepatan
all_videos_link.txt
- 50 tautan goo.gl + bit.ly yang dialihkan ke youtube1. Dengan mengikuti lokasi
Hasil:
2. Tanpa mengikuti lokasi
Hasil:
sumber
Saya tidak yakin bagaimana melakukannya dengan curl, tetapi libwww-perl menginstal alias GET.
sumber
Bisakah kamu mencobanya?
Catatan: ketika Anda menjalankan perintah curl -I http://your-domain.com harus menggunakan tanda kutip tunggal pada perintah seperti
curl -I 'http://your-domain.com'
sumber
Anda bisa menggunakan grep. tidak akan memberi tahu Anda di mana itu mengarahkan juga? Grep saja.
sumber