חיפוש קובץ במערכת
-
@צדיק-תמים לא שמתי לב לעוד משהו חריג..
-
@צדיק-תמים אמר בחיפוש קובץ במערכת:
אבל אתה לא צודק לגבי התחביר, אי אפשר לשלוח בבקשת get פרמטר שני של הפרמטרים, אלא צריך לשלוח null ואז את האובייקט פרמטרים, כנראה אתה רגיל לשלוח בקשות פוסט...
צודק, לא שמתי לב שזה GET אני עובד בד״כ עם POST (זה הרבה יותא מאובטח עם הטוקן)
-
@Liy אמר בחיפוש קובץ במערכת:
(זה הרבה יותא מאובטח עם הטוקן)
אין הבדל
אם מישהו פותח את התעבורה הוא יכול לראות גם את הbody
ואם לא אין לו דרך לראות גם את הכתובת
ובאופן עקרוני לכך נועד HTTPS
מלבד זאת הקוד הזה לא נכתב כל כך עבור דפדפן אלא עבור node, וממש אין סיבה שמישהו יוכל לפענח את התעבורה של השרת שלך
נ.ב. המוסכמה היא באופן כללי להשתמש בGET לקבלת נתונים ולא בPOST, אמנם באופן כללי ימות לא כ"כ מקפידים על כאלה דברים, אבל איפה שזה אפשרי בקוד אני משתמש בזה. ואכן להפעלת צינתוק לדוגמה, אני ישתמש בPOST. -
@צדיק-תמים אמר בחיפוש קובץ במערכת:
@Liy אמר בחיפוש קובץ במערכת:
(זה הרבה יותא מאובטח עם הטוקן)
אין הבדל
ממש לא!
אם מישהו יעבור על התעבורה שלך הוא יראה רשימת כתובות URL שבקרת בהם או ששלחת אליהם בקשות, ז״א שהוא יראה גם URL של ה API של ימות עם הטוקן של המערכת שלך.
לעומת זאת POST הוא יראה URL והוא לא יראה את ה payload. -
@צדיק-תמים אמר בחיפוש קובץ במערכת:
מלבד זאת הקוד הזה לא נכתב כל כך עבור דפדפן אלא עבור node, וממש אין סיבה שמישהו יוכל לפענח את התעבורה של השרת שלך
אני עובד עם Front-End בלבד, סורי.
-
@Liy איך מישהו יעבור על התעבורה?
-
@Liy בגדול אם הלקוח (משתמש הקצה באתר) לא מקפיד על אבטחה ואפשר לעבור לו על התעבורה, זה בעיה שלו, והוא בצרה הרבה יותר גדולה מאשר טוקנים של ימות המשיח, אלא גם סיסמאות באתרים, ובעצם כל מידע שעובר מ/אל המחשב שלו
ובגדול בדיוק בשביל זה נועד HTTPS -
@צדיק-תמים
הקוד שלך מאלף!!
אז תתקן לי את מה שטעיתי בו:<script> const axios = require('axios'); axios.defaults.baseURL = 'https://www.call2all.co.il/ym/api/'; const YEMOT_NUMBER = '077400300'; const YEMOT_PASSWORD = '123456'; /** * @return {String} - The token */ async function getToken() { const response = await axios.post('Login', { username: YEMOT_NUMBER, password: YEMOT_PASSWORD, }); return response.data.token; } /** * @param {String} token - Yemot token * @param {String} path - folder path * @return {Promise<object>} - folder data */ async function getFolder(path, token) { let response; response = await axios.get('GetIVR2Dir', { params: { token, path } }); const { data } = response; if (data.responseStatus !== 'OK') throw new Error('Yemot error: ' + data.message); return data; } /** * * @param {Array|String} begin - Folder(s) to start from * @param {Array} exclusionsWords - Words to exclude folders that contain them * @param {String} token - Yemot token * @returns */ async function getLists(begin, exclusionsWords, token = `${YEMOT_NUMBER}:${YEMOT_PASSWORD}`) { const lists = { files: [], dirs: [], ini: [] }; let nextFolders = Array.from(begin); while (nextFolders.length) { const promises = nextFolders.map((path) => { return getFolder(path, token); }); const responses = await Promise.all(promises); let localNextFolders = []; responses.forEach((folder) => { lists.files.push(...folder.files); lists.dirs.push(...folder.dirs); lists.ini.push(...folder.ini); const exclusionsRegex = new RegExp(exclusionsWords.join('|'), 'g'); const nextFoldersFiltered = folder.dirs.filter((dir) => !exclusionsRegex.test(dir.name)).map((path) => path.what); localNextFolders = [...localNextFolders, ...nextFoldersFiltered]; }); nextFolders = localNextFolders; } return lists; } </script>
תודה רבה!!
מתנצל על השאילה -
@צדיק-תמים אמר בחיפוש קובץ במערכת:
@Liy בגדול אם הלקוח (משתמש הקצה באתר) לא מקפיד על אבטחה ואפשר לעבור לו על התעבורה, זה בעיה שלו, והוא בצרה הרבה יותר גדולה מאשר טוקנים של ימות המשיח, אלא גם סיסמאות באתרים, ובעצם כל מידע שעובר מ/אל המחשב שלו
ובגדול בדיוק בשביל זה נועד HTTPSגם יכול להיות שזה כמה אנשים באותו בניין משרדים, שלאחד מהם חשקה נפשו לעבור על התעבורה של הרשת במשרד וכו׳
-
@צדיק-תמים אמר בחיפוש קובץ במערכת:
@nyh אין דרך לדעת מראש, הדרך לעשות זאת עם רקרוסיביה (פונקציה שקוראת לעצמה בתנאי מסוים), או עם while עם תנאי עצירה מתאים.
המימוש בפועל שונה בכל שפה, וכיוון שכנראה השפה ש @פיסטוק-פרווה יודע היא רק PHP, אין לי אין לעזור עם דוגמה.כאן יש לך בphp איך לעשות רקורסיה
-
@Liy שוב, במקרה שיש גישה לתעבורה, יש גישה להכל. אם לא, אין גישה גם לכתובות.
@פיסטוק-פרווה לא ייבאת את הספריה axios (כנראה), ולא קראת בכלל לפונקציה...
אגב הקוד הזה כנראה יפעל יותר טוב בNode.js בגלל מגבלת ה-6 בקשות לאותו אתר במקביל של כרום, שלא קיימת בנוד כמוב -
מישהו יכול לתת קוד של רקוסייה ב php / js למקרה הזה?
-
-
@פיסטוק-פרווה אמר בחיפוש קובץ במערכת:
מישהו יכול לתת קוד של רקוסייה ב php / js למקרה הזה?
מה רע במה שהבאתי?!
-
@צדיק-תמים
אני לא עובד עם ספריות.
אני מעדיף קוד בריא... -
@לעזור-לכולם
כן, אבל אני מעדיף קוד מוכן.
אם יש לך אשמח לקבל!!
תודה רבה!! -
@פיסטוק-פרווה אמר בחיפוש קובץ במערכת:
אני לא עובד עם ספריות.
אני מעדיף קוד בריא...יש סתירה בין השורה הראשונה לשניה
בכל מקרה אתה יכול בקלות להחליף את 2 הקריאות לaxios שבפונקציותgetFolder
וgetToken
בfetch (אני מבין שזה צד דפדפן...) -
@צדיק-תמים אמר בחיפוש קובץ במערכת:
יש סתירה בין השורה הראשונה לשניה
צודק...
בכל אופן אין לי כח וזמן להשקיע בקוד...
אם כבר הבאת חצי תביא את הכל...ואין עליך!!! -
@פיסטוק-פרווה אמר בחיפוש קובץ במערכת:
בכל אופן אין לי כח וזמן להשקיע בקוד...
אז למה אתה מתעקש לא להשתמש בaxios?
@פיסטוק-פרווה אמר בחיפוש קובץ במערכת:
אם כבר הבאת חצי תביא את הכל...
חצי ממה? זה קוד מוכן לגמרי
רק צריך להתקין את התלות, שורה אחת בHTML
https://axios-http.com/docs/intro#:~:text=yarn add axios-,Using jsDelivr CDN%3A,-<script src -
@צדיק-תמים
אני כאילו אמור ליצור קובץ,
לכתוב בפנים:<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
ולהיכנס דרך הדפדפן?
פשוט אף פעם לא התקנתי ספריות ב php, רק בפייתון....