במדריך זה אני אסביר תוך מתן דוגמה איך לבנות סוקט אתרים מסוג POST.
מדריך זה לא למתחילים, ממליץ ללמוד קודם סוקט אתרים מסוג GET.
האתר עליו אני אבצע את הדוגמה הוא: http://www.ontxt.info/
הדבר החשוב ביותר בסוקט מסוג זה הוא למצוא את תבנית המידע שאנו צריכים לשלוח לאתר מסויים, לשם כך נשתמש ב Developer Tools שנמצא בתוך הדפדפן Explorer.
שלב א:
נכנסים לאתר http://www.ontxt.info/ דרך ה Explorer.
שלב ב:
לוחצים על F12 לפתיחת Developer Tools.
שלב ג:
לוחצים על הכפתור המסומן בכדי לפתוח בחלון נפרד.
http://i.imgur.com/KswsC.jpg
שלב ד:
ב DT (developer tools) לוחצים על הלשונית Network ואז על הכפתור Start capturing בכדי להתחיל ולתפוס את כל התקשורת בין הדפדפן לבין האתר.
שלב ה:
בדוגמה שלי זה מה שכתבתי באתר ולחיצה על Submit
http://i.imgur.com/FDGrJ.jpg
שלב ו:
הולכים ל DT
http://i.imgur.com/XOXyN.jpg
לוחצים על Stop capturing.
Clear - מנקה את המידע בחלון (אם תלחצו המידע ימחק)
הבחירה בצבע כחול, זהו המידע שאנחנו צריכים, לפירוט יש ללחוץ פעמיים על השורה או לחיצה על הכפתור שמסומן באדום Go to detailed view.
שלב ז:
הגענו לחלון הזה
http://i.imgur.com/PHW97.jpg
הכפתור בצבע ירוק Back to summary view יחזיר אותנו לחלון הקודם.
לשונית Request headers
זהו בעצם תוכן הסוקט שלנו שיהיה במירק, כל השורות שמסומנות באדום אותן נצטרך לסוקט, כל השורות שלא מסומנות אין צורך בהן (הן בשימוש בדפדפן ואין צורך למירק).
לשונית Request body
אם נכנס לשם תראו את התוכן הבא:
קוד: בחר הכל
parent_pid=&format=text&code2=do.it.for.mircs&poster=&paste=Submit&expiry=f&password=
זהו בעצם המידע שנשלח לאתר, אם תבדוק בתוכן המידע תוכלו לראות את השורה שכתבתי באתר do.it.for.mircs
לשונית Response headers
תראה לנו מה האתר מחזיר, מה שנראה ב on sockread.
נתחיל לבנות את הסקריפט.
פתיחת הסוקט:
קוד: בחר הכל
alias post {
sockclose mircs.post
sockopen mircs.post www.ontxt.info 80
}
הגדרת הסוקט ושליחת הנתונים:
קוד: בחר הכל
on *:sockopen:mircs.post:{
var %txt = parent_pid=&format=text&code2=justdoit&poster=&paste=Submit&expiry=f&password=
var %x = sockwrite -tn $sockname
%x POST /index.php HTTP/1.1
%x Host: www.ontxt.info
%x Content-Type: application/x-www-form-urlencoded
%x Content-Length: $len(%txt)
%x $crlf
%x %txt
}
%txt - המשתנה הזה מכיל את המידע שנשלח לאתר באותה התבנית לפי מה שראינו ב DT.
POST - כתיבת הכתובת של העמוד אליו שולחים את המידע
Content-Length - גודל המידע שנשלח לאתר. האתר בקבלת המידע משווה את גודלו לגודל שאנחנו שלחנו לו וכך הוא ידע שכל המידע ששלחנו הגיע.
כמו שאנחנו יודעים בכדי שהאתר ידע ששלחנו את כל הגדרות הסוקט אנו שולחים שורה ריקה בסוף.
המידע הנוסף שאנחנו שולחים נשלח אחרי השורה הריקה.
קריאה התשובה של האתר:
קוד: בחר הכל
on *:sockread:mircs.post:{
if ($sockerr) { return }
var %mircs
sockread -f %mircs
if (%mircs) { echo -ag %mircs }
}
השלב הבא לבדוק אם זה עובד.
מחברים את כל הסקריפט, ומפעילים את הסקריפט.
המידע שנקבל מהאתר הוא זה:
קוד: בחר הכל
HTTP/1.1 302 Moved Temporarily
Date: Mon, 20 Aug 2012 15:33:27 GMT
Server: Apache/2
X-Powered-By: PHP/5.2.17
Location: 11472
Vary: Accept-Encoding,User-Agent
Content-Length: 0
Content-Type: text/html
ניתן לראות שהמספר שמקבלים ב Location הוא המספר של הלינק.
מחברים את הלינק של האתר למספר http://www.ontxt.info/11472
נכנסים ללינק ונראה בדיוק את מה ששלחנו.
סוף המדריך.
אשמח לקבל הערות/הארות ושאר תגובות.
נכתב על ידי Zen-.