ฉันจะใช้เครื่องมือบรรทัดคำสั่งเช่น Wget เพื่อเข้าสู่เว็บไซต์ OpenID ได้อย่างไร


10

โดยเฉพาะฉันต้องการดาวน์โหลดบางหน้าจากโปรไฟล์ผู้ใช้ของฉันในเว็บไซต์ Stack Exchange ต่างๆ อย่างไรก็ตามฉันต้องการทำสิ่งนี้โดยอัตโนมัติ (ใช้cronงาน) จากบรรทัดคำสั่งและในรูปแบบแยกวิเคราะห์ ฉันชอบใช้ Linux มากสำหรับสิ่งนี้ แต่ฉันสามารถเข้าถึงเครื่อง Mac หรือ Windows ได้ถ้าจำเป็น

โดยหลักการแล้วฉันต้องการใช้เครื่องมือเช่นWgetหรือcURLเพื่อดึงข้อมูลหน้าเว็บ ฉันไม่รู้ว่าจะผ่านการเข้าสู่ระบบได้อย่างไร ฉันเห็นคำแนะนำที่ระบุว่าคุณสามารถเข้าสู่ระบบผ่าน Firefox ส่งออกคุกกี้ที่เกี่ยวข้องและนำเข้าสู่ Wget ผ่าน--load-cookiesตัวเลือก ยกตัวอย่างเช่นที่นี่และที่นี่ ขณะนี้ใช้งานได้หากฉันเพิ่งเข้าสู่ระบบ แต่หลังจากนั้นไม่นาน ฉันเดาเพราะโทเค็น ID ต้องได้รับการรีเฟรช

ดังนั้นหลังจากเข้าสู่ระบบ SU และส่งออกคุกกี้ของฉันฉันสามารถทำได้:

wget --load-cookies cookies.txt \
  https://superuser.com/users/151431/terdon?tab=responses

หลังจากผ่านไปสองสามนาทีฉันได้รับข้อผิดพลาด 404:

wget -O ~/stack/$(date +%s) --load-cookies ~/cookies.txt \
   https://superuser.com/users/151431/terdon?tab=responses

--2013-08-06 04:04:14--  https://superuser.com/users/151431/terdon?tab=responses
Resolving superuser.com (superuser.com)... 198.252.206.16
Connecting to superuser.com (superuser.com)|198.252.206.16|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2013-08-06 04:04:15 ERROR 404: Not Found.

ดังนั้นฉันจะเข้าสู่เว็บไซต์ที่เปิดใช้งาน OpenID โดยอัตโนมัติจากบรรทัดคำสั่งได้อย่างไร


PS ฉันคิดว่าสิ่งนี้เหมาะสมกว่าในเว็บแอปพลิเคชันเนื่องจากคำถามของฉันเกี่ยวกับลักษณะของบรรทัดคำสั่งไม่ใช่รายละเอียดที่แท้จริงของหน้าเว็บที่เป็นปัญหา ฉันเดาว่าโซลูชันใด ๆ จะสามารถใช้ได้กับไซต์OpenIDทั้งหมด


3
คุณตรวจสอบ SE API ( api.stackexchange.com ) เพื่อดูว่าเป็นข้อมูลที่คุณต้องการหรือไม่ นี่เป็นวิธีที่เป็นทางการในการเข้าถึงข้อมูลแบบเป็นโปรแกรมและใช้ OAuth ในการตรวจสอบสิทธิ์
หนัก

@heavyd ใช่ฉันหวังว่าฉันจะไม่ต้องเจาะลึก API นี้ ถ้านั่นเป็นวิธีเดียวที่ฉันคิดว่าฉันจะต้องทำ จากภาพรวมคร่าวๆมันไม่ปรากฏว่าฉันสามารถทำให้กระบวนการเข้าสู่ระบบโดยอัตโนมัติผ่าน API ได้ คุณรู้หรือไม่ว่าฉันสามารถรับรองความถูกต้องในแบบที่ไม่ต้องมีการป้อนข้อมูลที่ใช้งานได้จากฉัน หากฉันเข้าใจเอกสารอย่างถูกต้องเพื่อรับข้อมูลที่ต้องมีการตรวจสอบสิทธิ์ฉันจะต้องลงชื่อเข้าใช้ด้วยตนเอง
terdon

ฉันไม่ได้ใช้ SE API แต่ในการใช้งาน OAuth อื่น ๆ ที่ฉันใช้คุณเข้าสู่ระบบหนึ่งครั้งและคุณได้รับโทเค็นซึ่งดีอย่างไม่มีกำหนด
หนัก

คำตอบ:


1

คุณไม่สามารถเพราะคุกกี้รีเฟรชทุกครั้ง นี่คือเพื่อความปลอดภัยวิธีเดียวที่คุณทำได้คือวิธีที่คุณทำไปแล้ว อย่างน้อยจากความเข้าใจของฉัน


ฉันเพิ่งเห็นว่านี่เป็นคำถามที่เก่ามากจริงๆอ๊ะ
Maarten

-3

(Re-) อ่าน man page สำหรับwgetและดูคำอธิบายสำหรับ--userและ--passwordค่าสถานะ

โปรดทราบว่าไม่แนะนำให้ส่งรหัสผ่านเป็นอาร์กิวเมนต์บรรทัดคำสั่งเนื่องจากทุกคนที่ทำงาน psสามารถมองเห็นได้ แนวปฏิบัติที่เหมาะสมที่สุดคือการไม่บันทึกรหัสผ่านแบบดิบไว้ที่ใดก็ได้ แต่วิธีที่ดีที่สุดถัดไปคือการใส่รหัสผ่านในไฟล์ที่มีเพียงเจ้าของเท่านั้นที่สามารถอ่านได้


3
การตั้งค่าสถานะที่คุณกล่าวถึงนั้นใช้สำหรับการตรวจสอบความถูกต้องโดยใช้ HTTP (พื้นฐาน, สรุปย่อ, ฯลฯ ) SE ไม่ได้ใช้สิ่งเหล่านี้สำหรับการตรวจสอบ พวกเขาพึ่งพาผู้ให้บริการOpenIDบุคคลที่สามสำหรับการตรวจสอบ
หนัก
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.