Спампоўка па FTP праз SOCKS з PycURL
Дазвольце libcurl кіраваць кантрольным і пасіўным злучэннямі даных пры спампоўцы па FTP праз SOCKS5-проксі.
PycURL прадстаўляе падтрымку FTP і SOCKS у libcurl праз адзін дэскрыптар перадачы. Пры пасіўнай спампоўцы па FTP праграма можа пакінуць і кантрольнае злучэнне, і асобнае злучэнне даных гэтай рэалізацыі.
import pycurl
transfer = pycurl.Curl()
try:
transfer.setopt(pycurl.URL, ftp_url)
transfer.setopt(pycurl.PROXY, "socks5h://proxy.example.net:1080")
transfer.setopt(pycurl.NOPROXY, "")
transfer.setopt(pycurl.WRITEDATA, output)
transfer.setopt(pycurl.CONNECTTIMEOUT, 10)
transfer.setopt(pycurl.TIMEOUT, 60)
transfer.perform()
finally:
transfer.close()
ftp_url — гэта URL FTP-рэсурсу праграмы, а output — ужо адкрыты бінарны паток вываду. Тайм-аўты — гэта прыкладныя межы, якія выбіраюць зыходзячы з чаканага памеру файла і злучэння. Для публічнага FTP-рэсурсу, дзе публічныя пасярэднікі дазволеныя, спіс SOCKS5-проксі прапануе кандыдатаў для URL проксі; праверце, што абраны вузел дазваляе і кантрольны, і пасіўны адрасы прызначэння.
socks5h даручае развязанне імені хоста прызначэння SOCKS-проксі. NOPROXY наўмысна пусты, каб успадкаваная зменная асяроддзя no_proxy не абышла маршрут для гэтай перадачы.
Пакіньце актыўны FTP адключаным: ён чакае ўваходнага злучэння ад сервера і недаступны ў гэтым рэжыме проксі. Палітыка знешніх злучэнняў проксі павінна дазваляць кантрольны порт FTP і пасіўны порт даных, абраны для перадачы. Таму адзін толькі паспяховы ўваход не даказвае, што файл можна спампаваць.
Калі патрэбна аўтэнтыфікацыя, выкарыстоўвайце PROXYUSERNAME і PROXYPASSWORD PycURL для пасярэдніка; уліковыя даныя FTP-сервера належаць FTP-злучэнню.