automatic login และ post ด้วย cURL
posted on 23 Mar 2008 13:24 by wonamคราวก่อนจะลอง load test เว็บสำหรับการแข่งขันเขียนโปรแกรมที่พัฒนาขึ้น คุณ sirn เคยแนะนำให้ใช้ siege ซึ่งเมื่อทดลองแล้วก็ใช้ได้ดีเลยทีเดียว
คราวนี้มีความต้องการมากขึ้น เนื่องจากเว็บที่ใช้ก่อนจะทำอะไรได้ต้อง log in นอกจากนี้ ผู้ใช้ยังจะต้องส่งโปรแกรมเข้ามายังเว็บ นั่นก็คือมีการ POST มายังเว็บด้วย
ทีนี้การจะเขียนลักษณะดังกล่าวบน siege รู้สึกว่าจะทำได้ยาก เนื่องจากต้องมีการจำ cookies อะไรพวกนี้ด้วย
พอไปดูตัวอื่น ๆ เช่น Grinder รู้สึกว่ากว่าจะใช้ได้คงตายเสียก่อน
เมื่อเช้าผมก็เลยคิดว่าจะเขียนเอง ก็ไปเปิดอ่านไลบรารี Net::HTTP ของ Ruby เรียบร้อย กด google อีกหน่อยหาว่าจะ upload file อย่างไร กด ๆ ก็พอหาเจอคร่าว ๆ พบว่ามีคนบนมาเยอะว่าต้องทำเองเสียเยอะ อ่านเจอเห็นว่ามีคนหนึ่งเขียนไปเรียกโปรแกรมที่ชื่อว่า cURL ก็เลยคิดว่าน่าจะลองดูสักหน่อย
พอเข้าไปอ่านหน้า Using cURL to automate HTTP jobs ก็พบว่าเจ้า cURL มันจัดการ cookies ได้ดีทีเดียว สุดท้าย ตอนนี้ผมก็เลยใช้วิธีเดียวกับคนดังกล่าว คือส่วน load page ก็ไปเขียน ruby เพื่อเรียกเจ้า cURL เอา
ส่วน command line ที่ใช้เรียกเพื่อ login กับที่ใช้ post ก็เป็นประมาณนี้ครับ (แปลงมาจากหน้าของ cURL ด้านบน)
curl -D mycookie -d "login=name&password=mypass" http://mysite/login curl -b mycookie -F file=@myfilename http://mysite/submit
คำสั่งแรกจะ login แล้วก็เก็บพวกข้อมูล cookies เอาไว้ใน mycookie คำสั่งสองจะ post ข้อมูลจากไฟล์ myfilename โดยใช้ข้อมูลของ cookies มาจากคำสั่งแรก เครื่องหมาย @ ที่นำหน้าบอก cURL ให้โหลดข้อมูลจากไฟล์
ไอ้แพท..
#1 By mk (213.121.151.142) on 2008-03-23 14:57