ฉันรู้ว่าในสคริปต์ PHP:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
จะติดตามการเปลี่ยนเส้นทาง มีวิธีในการติดตามการเปลี่ยนเส้นทางด้วยบรรทัดคำสั่ง cURL หรือไม่
ฉันรู้ว่าในสคริปต์ PHP:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
จะติดตามการเปลี่ยนเส้นทาง มีวิธีในการติดตามการเปลี่ยนเส้นทางด้วยบรรทัดคำสั่ง cURL หรือไม่
คำตอบ:
ใช้การตั้งค่าสถานะส่วนหัว:
curl -L <URL>
man curl
: "เมื่อใช้การตรวจสอบความถูกต้อง Curl จะส่งข้อมูลรับรองไปยังโฮสต์เริ่มต้นเท่านั้น <... > ดูเพิ่มเติม - เชื่อถือได้ในการเปลี่ยนวิธีนี้"
ฉันมีปัญหาที่คล้ายกัน ฉันกำลังโพสต์วิธีแก้ปัญหาของฉันที่นี่เพราะฉันเชื่อว่ามันอาจช่วยหนึ่งในผู้แสดงความคิดเห็น
สำหรับฉันสิ่งที่เป็นอุปสรรคคือหน้านั้นจำเป็นต้องเข้าสู่ระบบแล้วให้ URL ใหม่ผ่านทางจาวาสคริปต์ นี่คือสิ่งที่ฉันต้องทำ:
curl -c cookiejar -g -O -J -L -F "j_username=yourusename" -F "j_password=yourpassword" <URL>
โปรดทราบว่า j_username และ j_password เป็นชื่อของเขตข้อมูลสำหรับแบบฟอร์มการเข้าสู่ระบบของเว็บไซต์ของฉัน คุณจะต้องเปิดแหล่งที่มาของหน้าเว็บเพื่อดูว่า 'ชื่อ' ของฟิลด์ชื่อผู้ใช้และ 'ชื่อ' ของฟิลด์รหัสผ่านในกรณีของคุณคืออะไร หลังจากนั้นฉันไปที่ไฟล์ html ที่มีจาวาสคริปต์ซึ่งฝัง URL ใหม่ หลังจากแยกวิเคราะห์สิ่งนี้เพียงส่งใหม่ด้วย URL ใหม่:
curl -c cookiejar -g -O -J -L -F "j_username=yourusename" -F "j_password=yourpassword" <NEWURL>
ตามที่ได้กล่าวไว้ในการติดตามการเปลี่ยนเส้นทางคุณสามารถใช้การตั้งค่าสถานะ-L
หรือ--location
:
curl -L http://www.example.com
แต่ถ้าคุณต้องการ จำกัด จำนวนการเปลี่ยนเส้นทางให้เพิ่มพารามิเตอร์--max-redirs
--max-redirs <num>
กำหนดจำนวนสูงสุดของการติดตามการเปลี่ยนเส้นทางที่อนุญาต ถ้า
-L
,--location
มีการใช้ตัวเลือกนี้สามารถนำมาใช้เพื่อป้องกันไม่ให้ขดจากการติดตามการเปลี่ยนเส้นทาง "ในการหัวเราะ" โดยค่าเริ่มต้นขีด จำกัด ถูกตั้งค่าเป็น 50 การเปลี่ยนเส้นทาง ตั้งค่าตัวเลือกนี้เป็น -1 เพื่อทำให้ไร้ขีด จำกัด หากใช้ตัวเลือกนี้หลายครั้งตัวเลือกสุดท้ายจะถูกใช้