שורה שהועתקה מקובץ CRLF עשויה להיראות כמו proxy.example:8080 בעוד המשתנה למעשה מסתיים בתו החזרת כרכרה. הצבת המשתנה במירכאות משמרת את התו הזה; היא אינה מסירה אותו.

עבור קובץ Bash המכיל כתובת URL מלאה של פרוקסי בכל שורה:

target='https://api.example/'
while IFS= read -r proxy || [ -n "$proxy" ]; do
    proxy=${proxy%$'\r'}
    if [ -z "$proxy" ]; then
        continue
    fi
    curl --proxy "$proxy" --max-time 10 --url "$target"
done < ProxyList.txt

השתמשו בערכים כמו http://proxy.example:8080; רשימת פרוקסי HTTP מספקת כתובות ציבוריות מועמדות לעיצוב בדרך זו. read מסיר את מפריד השורה החדשה; הרחבת הסיומת מסירה CR נגרר אחד אם קיים. התנאי מעבד גם שורה אחרונה שאינה ריקה ללא שורה חדשה.

IFS= מונע פיצול שדות במהלך read, והדגל -r משמר קווים נטויים לאחור מילוליים. לאחר מכן מירכאות כפולות מעבירות את כתובת ה-URL שהתקבלה כארגומנט curl אחד. הימנעו מחזרה על פלט החלפת פקודות: פיצול מילים של ה-shell עלול לשנות את גבולות הרשומות בקובץ לפני ש-curl רואה אותן.

זה מנרמל סופי שורות. הוא אינו מתקן פרוטוקול האזנה שגוי, נקודת קצה חסרה או שירות שאינו נגיש.

מאמרים קשורים