automatic login และ post ด้วย cURL

posted on 23 Mar 2008 13:24 by wonam in softdev

คราวก่อนจะลอง 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 ให้โหลดข้อมูลจากไฟล์

Comment

Comment:

Tweet

sugree: jmeter นี่แหล่ะ ตัวทำให้ซับซ้อน

#4 By wonam on 2008-03-24 00:18

ผมใช้ curl ส่งข้อความเข้า twitter ก็ง่ายดีนะ
แต่ว่าใช้ http basic auth อ่ะ

#3 By ไอ้แพท.. on 2008-03-23 20:24

ถ้ามันซับซ้อนใช้ jmeter ก็ได้ครับ

#2 By sugree (58.9.53.36) on 2008-03-23 16:26

บนแมคนี่มันไม่มี wget มาให้ จะเอาอะไรต้อง curl -O ตลอดเลย

#1 By mk (213.121.151.142) on 2008-03-23 14:57