שימוש בAPI למציאת מיקוד
-
אהלן,
בשאלה הבאה אחד המשתמשים פרסם את התשובה הבאה:https://services.israelpost.co.il/zip_data.nsf/SearchZip?OpenAgent&Location=<עיר>&POB=&Street=<רחוב>&House=<מספר בניין>&Entrance=<כניסה>
כשאני מריץ את השאילתה בדפדפן זה עובד לי כמו שצריך ומראה לי את התוצאה הרצויה, אבל כשאני מנסה להריץ את זה בפייתון באמצעות קריאה של ה- API אני מקבל שגיאה והתוכנית קורסת.
אשמח אם מישהו יוכל לעזור לי ולהראות איך אני יכול לכתוב את זה בפייתון,
תודה. -
@segev_gr תראה לנו כתובת שעובדת בדפדפן (תמלא את הפרמטרים) וקוד פייתון מקביל שניסית ולא עבד וננסה לבדוק את הענין
כדאי גם שתספר עוד על השגיאה שאתה מקבל -
@segev_gr באופן כללי הכי חשוב זה מה השגיאה, אבל גם יעזור אם תצרף קוד קצר.
אבל במקרה הזה קל לנסות לבד, והרצתי את זה לבד.
ראשית כל שמתי את זה בדפדפן והסתכלתי מה קורה בכלי המפתחים ברשת (F12), והכל היה נראה טוב. הרצתי את השאילתה בC# ואכן הייתה תשובה של 301 עם מסך קאפצ'ה.
התחלתי להוסיף כותרות של דפדפן קלאסיות, ומה שראיתי שמשנה זה הכותרת Accept-Language, ברגע ששמתי את זה זה עבד. -
@dovid
היי,
הוספתי את השורה:
'Accept-Language': 'he'
בפעם הראשונה שניסיתי זה עבד לי והחזיר לי דף HTML שב- body שלו היה את המיקוד, אבל כשניסיתי להריץ שוב הוא זרק לי שוב את אותה השגיאה של מקודם.
זאת לא שגיאה במובן של פייתון, הוא פשוט החזיר לי דף HTML שבכותרת שלו כתוב ShieldSquare Captcha ובתיאור הוא אומר שהם חושבים שאני רובוט.מוסיף פה את הקוד שלי:
import requests url = "https://services.israelpost.co.il/zip_data.nsf/SearchZip?OpenAgent&Location=תל אביב&POB=&Street=העליה&House=3" payload={} headers = { 'Accept-Language': 'he', 'Cookie': '__uzma=753ba75c-fd68-40a7-bc25-2fce8a20e690; __uzmb=1669220736; __uzmc=737183761774; __uzmd=1669661347; __uzme=9917' } response = requests.request("GET", url, headers=headers, data=payload) print(response.text)
בפעם הראשונה זה עבד ואח"כ כבר לא עובד יותר..
-
פוסט זה נמחק! -
@dovid
מעדכן שפעם בכמה זמן זה עובד, אבל בהרצה הבאה ישר נותן את השגיאה של ה- Captcha.
הפתרון שמצאת עובד באופן עקבי? או שהוא גם נותן פעם בכמה זמן בלבד? -
@segev_gr
אתה יודע מה זה captcha, נכון?
הם חושבים שאתה רובוט, כי אתה רובוט! -
@segev_gr לי זה עבד עקבית, אבל בשני הבדלים כנראה ממך:
א. לא שמתי קוקיז
ב. הפעלתי כל פעם ידנית, לא ברצף גבוהכעת ניסיתי להפעיל במהירות, ואכן קיבלתי מהר מאוד (נראה לי בהפעלה שלישית רציפה) את האנטי-רובוט.