Apakah ada cara untuk mengikuti arahan ulang dengan command line cURL?

456

Saya tahu itu dalam skrip php:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

akan mengikuti arahan ulang. Apakah ada cara untuk mengikuti arahan ulang dengan command line cURL?

LDN
sumber

Jawaban:

763

Gunakan bendera tajuk lokasi:

curl -L <URL>

Nathan Kuchta
sumber
1
Ini juga tidak berfungsi dengan mengautentikasi dengan Google untuk mengakses spreadsheet. : /
fatuhoku
13
man curl: "Ketika otentikasi digunakan, curl hanya mengirim kredensial ke host awal. <...> Lihat juga --lokasi-tepercaya tentang cara mengubahnya."
hudolejev
25

Saya punya masalah serupa. Saya memposting solusi saya di sini karena saya percaya itu mungkin membantu salah satu komentator.

Bagi saya, kendalanya adalah bahwa halaman tersebut memerlukan login dan kemudian memberi saya URL baru melalui javascript. Inilah yang harus saya lakukan:

curl -c cookiejar -g -O -J -L -F "j_username=yourusename" -F "j_password=yourpassword" <URL>

Perhatikan bahwa j_username dan j_password adalah nama bidang untuk formulir login situs web saya. Anda harus membuka sumber halaman web untuk melihat apa 'nama' bidang nama pengguna dan 'nama' bidang kata sandi dalam kasus Anda. Setelah itu saya pergi file html dengan skrip java di mana URL baru tertanam. Setelah menguraikan ini, kirim ulang hanya dengan URL baru:

curl -c cookiejar -g -O -J -L -F "j_username=yourusename" -F "j_password=yourpassword" <NEWURL>

pengguna3817445
sumber
15

Seperti yang dikatakan, untuk mengikuti arahan ulang Anda dapat menggunakan bendera -Latau --location:

curl -L http://www.example.com

Tetapi, jika Anda ingin membatasi jumlah pengalihan , tambahkan parameter--max-redirs

--max-redirs <num>

Tetapkan jumlah maksimum pengalihan-tindak yang diizinkan. Jika -L, --locationdigunakan, opsi ini dapat digunakan untuk mencegah ikal mengikuti pengalihan "dalam absurdum". Secara default, batasnya diatur ke 50 pengalihan. Setel opsi ini menjadi -1 untuk menjadikannya tidak terbatas. Jika opsi ini digunakan beberapa kali, yang terakhir akan digunakan.

freedev
sumber