ABA


"איך ניתן להשיג את הפרמטרים שנשלחים ב POST לאתר מסויים?"
גירסת הדפסה        
קבוצות דיון בניית אתרים נושא #15829 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 15829
MrSus
חבר מתאריך 8.5.09
1801 הודעות
   14:55   25.08.10   
אל הפורום  
  איך ניתן להשיג את הפרמטרים שנשלחים ב POST לאתר מסויים?  
 
   יש אתר שאני צריך להזין בו תאריך ואז אני לוחץ "שלח" והוא עובר לעמוד אחר ומציג לי נתונים ע"פ התאריך שהקשתי לו.

אני בונה סקריפט שאמור להכנס לאתר הזה ולקחת נתונים ע"פ תאריכים שאני בוחר מראש.
אני לא רוצה כל פעם להכנס לעמוד הראשי, להכניס לו תאריך וללחוץ "שלח" אלא ישר להכנס לעמוד עם הנתונים ולהזין לו באמצעות הסקריפט את הפרמטרים שנשלחים ב POST מהעמוד הראשי.

איך ניתן לדעת אילו פרמטרים נשלחים ב POST ומה המשתנים שמכילים אותם?
האם יש צורך להשתמש באיזשהי תוכנת SNIFFER או משהו כזה? או שיש דרך אחרת?

האתר בנוי ב ASPX


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  אם זה ב-ASPX אני חושש שאין לך ברירה אחרת... Ice Cold  26.08.10 13:38 1
     אני אפרט את השאלה ואולי תוכל לעזור לי MrSus 26.08.10 14:37 2
         אתה רוצה משהו שיעבור עמודים לבד? Ice Cold  27.08.10 12:27 3
             ממ לא הבנת MrSus 27.08.10 12:55 4
                 אז אתה תמיד רוצה עמוד ראשון בתאריכים שונים? Ice Cold  28.08.10 22:28 6
                     עכשיו הבנת אותי. אבל לא הולך לי :( MrSus 29.08.10 01:10 7
                         יש מצב שהבעיה היא עם ה-VIEWSTATE שלך... Ice Cold  29.08.10 17:17 8
                             יש לך הצעה לפתרון? MrSus 29.08.10 18:25 9
                                 המ... נסה לקחת את ה-viewstate מהתשובה של הקריאה הראשונה Ice Cold  29.08.10 18:47 10
  אתה יכול להשתמש ב-request-headers. Deuce  28.08.10 18:42 5

       
Ice Cold  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 3.8.02
28041 הודעות, 19 פידבק
   13:38   26.08.10   
אל הפורום  
  1. אם זה ב-ASPX אני חושש שאין לך ברירה אחרת...  
בתגובה להודעה מספר 0
 
דפי PHP ו-ASP רגילים שולחים פשוט את הפרמטרים שהם צריכים, ואז אפשר עם SNIFFER כמו FIDDLER למשל כדי להוציא אותם. הבעיה ב-ASPX היא שהוא שולח עוד מידע שאתה יכול לקבל רק מהעמוד הראשי כמו ViewState למשל. אין לך דרך לדעת מה הוא יהיה עד שלא תיכנס לעמוד הראשי...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
MrSus
חבר מתאריך 8.5.09
1801 הודעות
   14:37   26.08.10   
אל הפורום  
  2. אני אפרט את השאלה ואולי תוכל לעזור לי  
בתגובה להודעה מספר 1
 
   באתר הבורסה - www.tase.co.il יש אפשרות לראות רשימת ניירות ערך והשערים הסופיים שלהם ועוד כל מיני נתונים בהקשת תאריך.

מקישים תאריך, לוחצים אישור והאתר מציג לך את רשימת כל הניירות ערך עם ערכים נכונים לתאריך שהקשת.

הכתובת המדויקת של האתר היא:
http://www.tase.co.il/TASE/MarketData/Securities/Securities.htm?action=&SubAction=2

כמו שאתה רואה, יש שם תיבת תאריך וברגע שלוחצים על אישור מתקבל העמוד הבא:
http://www.tase.co.il/TASE/Templates/MarketData/Securities.aspx?NRMODE=Published&NRORIGINALURL=/TASE/MarketData/Securities/Securities.htm%3faction%3d%26SubAction%3d1%26Date%3d%26issubmitted%3d1&NRNODEGUID={D3BCD81A-8C9F-4D16-848A-FF76429D70E7}&NRCACHEHINT=Guest&SubAction=2

יצרתי באמצעות VB אובייקט InternetExplorer ואני רוצה שבאמצעות המתודה NAVIGATE הוא יגיע לי ישירות לעמוד עם ניירות הערך ושהתאריך יהיה תאריך שאני אכניס בתיבת טקסט.

כרגע עשיתי שהוא נכנס לעמוד הראשי, מכניס את התאריך ל INPUT ולוחץ אישור.. וכמובן זה מביא אותי לעמוד השני.. עשיתי אוטומציה של הפעולות שהמשתמש יעשה.. אבל זה לא מה שאני רוצה.

אני אשמח אם תגיד לי איך עליי להשתמש במתודה NAVIGATE של InternetExplorer במצב הזה.

תודה רבה!


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Ice Cold  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 3.8.02
28041 הודעות, 19 פידבק
   12:27   27.08.10   
אל הפורום  
  3. אתה רוצה משהו שיעבור עמודים לבד?  
בתגובה להודעה מספר 2
 
המ... בעיקרון צריך לנתח את הקוד. למשל:

בדף של עמוד 2 בסוף, איפה שהדפדוף, יש את הקוד הבא:


<a href="javascript:__doPostBack('ucGridAllSec$DataGrid1$ctl54$ctl00','')">1</a> <span>2</span> <a href="javascript:__doPostBack('ucGridAllSec$DataGrid1$ctl54$ctl02','')">3</a>&

כמבן שלא שמתי הכל זה רק עמוד 1, עמוד 2 הנוכחי ועמוד 3 הבא. מה שצריך לעשות בגדול זה לרוץ על כל אובייקטי ה-a בעמוד, ולבדוק אם יש ב-href שלהם את הטקסט:


javascript:__doPostBack(

זה יגיד לך שזה עמוד של דפדוף. אחר כך תוכל לקחת את ה-innerText שלהם כדי לדעת באיזה עמוד מדובר לכל a, ואם זה העמוד שאתה רוצה, לבצע עליו פעולת click. כך תוכל לדפדף בלי להתעסק עם navigate בכלל


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
MrSus
חבר מתאריך 8.5.09
1801 הודעות
   12:55   27.08.10   
אל הפורום  
  4. ממ לא הבנת  
בתגובה להודעה מספר 3
 
   כרגע, הפעולה מתבצעת כבר אוטומטית.

הסקריפט נכנס לעמוד הראשון, מזין את התאריך בשדה של התאריך (ע"פ ה- Input Name) ואז מחפש את הכפתור גם ע"פ השם שלו ועושה עליו click.
אני מגיע לעמוד הנדרש.

העניין הוא שאני רוצה להגיע לעמוד הנדרש ישירות ללא דפדוף בין עמודים.

הפעולה Navigate של אובייט InternetExplorer מאפשרת לך להכניס כתובת ובנוסף ארגומנט של post ואז מה שקורה זה שזה נכנס לעמוד, וה post נשלח אוטומטית לפי הפרמטרים שהגדרת לו..וזה מבלי לעבור בעמוד הקודם ולהזין את הנתונים בעצמך... אתה רק צריך להכניס את הנתונים בארגומנט POST דרך הסקריפט...

העניין הוא שאני לא מצליח להכניס את הפרמטרים הנכונים ב post..

ועוד הערה קטנה, למקרה שלא הבנת אותי.. אני לא רוצה לדפדף בין העמודים.. אני רוצה לדפדף בין תאריכים.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Ice Cold  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 3.8.02
28041 הודעות, 19 פידבק
   22:28   28.08.10   
אל הפורום  
  6. אז אתה תמיד רוצה עמוד ראשון בתאריכים שונים?  
בתגובה להודעה מספר 4
 
אתה יכול להשתמש ב-FIDDLER לראות את הערכים שעוברים שחיפוש בפעם הראשונה ואז לשים אותם ב-POST. רק אל תשכח ה-headers לשים גם form-url-encoded שיבין שזה POST...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
MrSus
חבר מתאריך 8.5.09
1801 הודעות
   01:10   29.08.10   
אל הפורום  
  7. עכשיו הבנת אותי. אבל לא הולך לי :(  
בתגובה להודעה מספר 6
 
   עבר עריכה לאחרונה בתאריך 29.08.10 בשעה 01:10:59 על-ידי Ice Cold (מנהל הפורום)
 
אני יושב על זה שעות ולא מבין מה לא עשיתי בסדר.
מצאתי את כל הפרמרטים של ה POST, הכנסתי את הכל כנדרש, כולל HEADERS ולא מבין מה לא בסדר.

הנה, זה הקוד שכתבתי (VB):


Sub test()
Dim IE As Object
Dim URL As String
Dim aByte() As Byte
Dim cPostData As String

URL = "http://www.tase.co.il/TASE/Templates/MarketData/Securities.aspx?NRMODE=Published&NRORIGINALURL=%2fTASE%2fMarketData%2fSecurities%2fSecurities%2ehtm%3faction%3d%26SubAction%3d1%26Date%3d%26issubmitted%3d1&NRNODEGUID=%7bD3BCD81A-8C9F-4D16-848A-FF76429D70E7%7d&NRCACHEHINT=Guest&SubAction=2&issubmitted=1"
cPostData = "__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=/wEPDwULLTE5NDc5NTI4MjJkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYBBTVDaG9vc2VEYXRlU2VjdXJpdHlVQzEkb3RoZXJEYXRlJFRhc2VDYWxlbmRhciRjYWxlbmRhcg==&SearchStr1=&HeaderUC1$SearchBarUC1$cmbSearchOptions=0&hiddenID=&dayhiddenID=&ChooseDateSecurityUC1_otherDate_TaseCalendar=2010-08-23&ChooseDateSecurityUC1$otherDate$TaseCalendar$dateInput=2010-8-23+1:01:0&ChooseDateSecurityUC1$otherDate$TaseCalendar$dateInput_TextBox=23/08/2010&ChooseDateSecurityUC1_otherDate_TaseCalendar_calendar_SD=]&ChooseDateSecurityUC1$otherDate$hdnSelectedDate=&AdvancedSearchNoBorderUC1$comboLevel1=10&AdvancedSearchNoBorderUC1$comboLevel2=---&ucGridAllSec$txtSortField=&issubmitted=1"

ReDim aByte(Len(cPostData) - 1)

aByte = cPostData

Dim vPost As Variant

vPost = aByte

Dim vHeaders As Variant

vHeaders = "Content-Type: application/x-www-form-urlencoded" + Chr(10) + Chr(13)


Set IE = CreateObject("InternetExplorer.Application")

With IE
.Visible = True
.Navigate URL, , , vPost, vHeaders
End With

End Sub

אני יודע שטיפה מסובך לקרוא את זה ככה, אולי תנסה להדביק את זה ב VB וזה יצא טוב. ובכל מקרה צרפתי את זה גם בקובץ טקסט.

תודה רבה על כך העזרה!

http://rotter.name/User_files/nor/4c798a406cc45502.txt


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Ice Cold  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 3.8.02
28041 הודעות, 19 פידבק
   17:17   29.08.10   
אל הפורום  
  8. יש מצב שהבעיה היא עם ה-VIEWSTATE שלך...  
בתגובה להודעה מספר 7
 
לא חושב שאתה יכול להשתמש באותו ViewState שוב ושוב...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
MrSus
חבר מתאריך 8.5.09
1801 הודעות
   18:25   29.08.10   
אל הפורום  
  9. יש לך הצעה לפתרון?  
בתגובה להודעה מספר 8
 
   אני רוצה להמנע מכניסה לעמוד הראשי כל פעם ולהכניס את ערכי החיפוש ורק אז ללחוץ "אישור"..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Ice Cold  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 3.8.02
28041 הודעות, 19 פידבק
   18:47   29.08.10   
אל הפורום  
  10. המ... נסה לקחת את ה-viewstate מהתשובה של הקריאה הראשונה  
בתגובה להודעה מספר 9
 
של, ולהשתמש בה לקריאה הבאה... לא בטוח שזה יעבוד, אבל שווה לנסות


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Deuce 
חבר מתאריך 1.9.08
6225 הודעות
   18:42   28.08.10   
אל הפורום  
  5. אתה יכול להשתמש ב-request-headers.  
בתגובה להודעה מספר 0
 
פשוט לשלוח פקטות לאתר דרך סוקט.






                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net