רשימות פרוקסי של Bash curl: הסרת CR נגרר משורות CRLF
קראו כתובות URL של פרוקסי שורה אחר שורה ב-Bash והסירו CR נגרר אחד מקבצי CRLF לפני העברת הערך ל-curl.
שורה שהועתקה מקובץ 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 רואה אותן.
זה מנרמל סופי שורות. הוא אינו מתקן פרוטוקול האזנה שגוי, נקודת קצה חסרה או שירות שאינו נגיש.