socks.set_default_proxy() захоўвае прадвызначаныя значэнні для будучых аб'ектаў PySocks socksocket. Ён не замяняе ўласны клас socket у Python. Такім чынам, ён не перанакіроўвае ftplib толькі таму, што выклік адбываецца перад FTP-злучэннем.

Сачыце за канструктарамі, а не за зменнай, якая захоўвае URL проксі. ftplib стварае кіравальнае злучэнне і дадатковыя злучэнні перадачы. Пры пасіўным FTP паспяховы ўваход даказвае толькі тое, што кіравальнае злучэнне працавала; socket даных, які выкарыстоўваецца для лістынга або перадачы файла, таксама патрабуе патрэбнага маршруту.

Рэцэпт, які замяняе socket.socket або абгортвае модуль, выконвае іншае дзеянне, чым усталяванне прадвызначаных значэнняў PySocks. Ён можа паўплываць на іншыя бібліятэкі, якія выкарыстоўваюць гэты модуль. Часовае вяртанне арыгінала потым не робіць паралельныя злучэнні ізаляванымі ад змены.

Уласны падклас ftplib можа пакрыць шляхі злучэнняў, але скапіяваныя ўнутраныя часткі нясуць дапушчэнні той версіі Python, з якой яны ўзятыя, уключаючы маркеры тайм-аўту і апрацоўку пратаколу. Абнаўленні стандартнай бібліятэкі не абнаўляюць копію.

Выберыце кліент, які падтрымліваецца, або падтрыманую інтэграцыю для патрэбнага проксі і рэжыму FTP. Прыклад спампоўкі праз пасіўны FTP у PycURL паказвае асобны шлях кліента. Для ўласнай налады ў межах праграмы вызначце, які канструктар адкрывае кожны socket кіравання і даных, і захавайце паводзіны верхняга ўзроўню, якія ён замяняе. Карэктнае значэнне проксі карыснае толькі тады, калі гэтыя канструктары сапраўды яго выкарыстоўваюць.

Падобныя артыкулы