Python TCP ਸਾਕਟਾਂ ਲਈ SOCKS-ਜਾਣਕਾਰ ਕਨੈਕਟਰ
ਪ੍ਰੌਕਸੀ-ਜਾਣਕਾਰ ਸਾਕਟ ਕਨੈਕਟਰ ਚੁਣੋ ਅਤੇ ਇਸ ਦਾ ਦਾਇਰਾ Python ਦੀ ਪ੍ਰਕਿਰਿਆ-ਵਿਆਪੀ ਸਾਕਟ ਲਾਗੂ ਕਰਨ ਤੋਂ ਵੱਖ ਰੱਖੋ।
http_proxy ਹੋਣ ਕਰਕੇ ਹੀ ਇੱਕ ਸਾਧਾਰਨ Python ਸਾਕਟ ਪ੍ਰੌਕਸੀ ਨਾਲ ਗੱਲਬਾਤ ਨਹੀਂ ਕਰਦਾ। ਆਪਣਾ TCP ਪ੍ਰੋਟੋਕੋਲ ਬੋਲਣ ਵਾਲੀ ਐਪਲੀਕੇਸ਼ਨ ਲਈ, ਪ੍ਰੌਕਸੀ ਦੇ ਸਿਰੇ 'ਤੇ ਸੇਵਾ ਨੂੰ ਸਮਝਣ ਵਾਲਾ ਕਨੈਕਟਰ ਵਰਤੋ।
ਜੇ PySocks ਪਹਿਲਾਂ ਹੀ ਉਪਲਬਧ ਹੈ, ਤਾਂ ਕਨੈਕਸ਼ਨ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ ਬਣਾਓ:
import socks
with socks.socksocket() as connection:
connection.set_proxy(socks.SOCKS5, '203.0.113.10', 1080)
connection.settimeout(10)
connection.connect(('example.com', 12345))
# Exchange the destination protocol here.
ਦਸਤਾਵੇਜ਼ ਵਾਲਾ ਪਤਾ ਅਤੇ ਮੰਜ਼ਿਲ ਪੋਰਟ ਬਦਲੋ। ਮਨਜ਼ੂਰਸ਼ੁਦਾ ਜਨਤਕ ਮੰਜ਼ਿਲ ਲਈ, ਐਪਲੀਕੇਸ਼ਨ ਦੇ ਟਾਰਗੇਟ ਪੋਰਟ ਦੀ ਇਜਾਜ਼ਤ ਦੀ ਜਾਂਚ ਕਰਨ ਤੋਂ ਬਾਅਦ ਹੀ SOCKS5 ਪ੍ਰੌਕਸੀ ਸੂਚੀ ਤੋਂ ਉਮੀਦਵਾਰ ਚੁਣੋ। ਸਥਾਪਿਤ ਪੈਕੇਜ, ਸਮਰਥਿਤ ਢੰਗ ਅਤੇ ਸਿਰੇ ਦੀਆਂ ਲੋੜਾਂ PySocks ਇੰਟਰਫੇਸ ਨਾਲ ਜਾਂਚੋ।
ਐਪਲੀਕੇਸ਼ਨ ਦਾ ਬਾਕੀ ਹਿੱਸਾ ਇਸ ਸਥਾਪਿਤ ਕਨੈਕਸ਼ਨ ਉੱਤੇ ਆਪਣਾ ਪ੍ਰੋਟੋਕੋਲ ਬਦਲਦਾ ਹੈ। ਜੇ ਉਹ ਪ੍ਰੋਟੋਕੋਲ TLS ਵਰਤਦਾ ਹੈ, ਤਾਂ ਪ੍ਰੌਕਸੀ ਗੱਲਬਾਤ ਤੋਂ ਬਾਅਦ ਇਸਨੂੰ ਸ਼ੁਰੂ ਕਰੋ ਅਤੇ ਅਸਲ ਮੰਜ਼ਿਲ ਹੋਸਟਨਾਮ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ। ਪ੍ਰੌਕਸੀ ਪ੍ਰਮਾਣਿਕਤਾ ਰਸਤਾ ਸਥਾਪਿਤ ਕਰਦੀ ਹੈ; ਇਹ ਮੰਜ਼ਿਲ ਲੌਗਇਨ ਜਾਂ ਐਨਕ੍ਰਿਪਸ਼ਨ ਨਹੀਂ ਦਿੰਦੀ।
SOCKS ਲਿਸਨਰ ਨੂੰ SOCKS ਗੱਲਬਾਤ ਚਾਹੀਦੀ ਹੈ। HTTP ਸੇਵਾ ਨੂੰ ਮਨਮਾਨੀ TCP ਮੰਜ਼ਿਲ ਲਈ CONNECT-ਸਮਰਥ ਕਨੈਕਟਰ ਚਾਹੀਦਾ ਹੈ ਅਤੇ ਇਹ ਆਪਣਾ ਪੋਰਟ ਮਨ੍ਹਾ ਕਰ ਸਕਦੀ ਹੈ। ਗਲਤ ਹੈਂਡਸ਼ੇਕ ਛੱਡ ਕੇ ਪਤਾ ਬਦਲਣ ਦੀ ਬਜਾਏ, ਅਸਲ ਵਿੱਚ ਦਿੱਤੀ ਜਾਂਦੀ ਸੇਵਾ ਅਨੁਸਾਰ ਕਨੈਕਟਰ ਚੁਣੋ।
ਬਦਲੀ ਨੂੰ ਸਥਾਨਕ ਰੱਖੋ। socket.socket ਨੂੰ ਕਲਾਸ ਦੇਣਾ ਅਸੰਬੰਧਿਤ ਇੰਪੋਰਟਾਂ ਅਤੇ ਲਾਇਬ੍ਰੇਰੀਆਂ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰ ਸਕਦਾ ਹੈ। ਜੇ ਕੋਈ ਹੋਰ ਲਾਇਬ੍ਰੇਰੀ ਸਾਕਟ ਬਣਾਉਣ ਦੀ ਮਾਲਕ ਹੈ, ਤਾਂ ਇਸ ਦੀ ਦਸਤਾਵੇਜ਼ੀ ਕਨੈਕਸ਼ਨ ਫੈਕਟਰੀ ਜਾਂ ਪ੍ਰੌਕਸੀ ਵਿਕਲਪ ਵਰਤੋ; ਜੋ ਸ਼ਬਦਕੋਸ਼ ਇਹ ਕਦੇ ਨਹੀਂ ਪੜ੍ਹਦੀ, ਉਹ ਉਸ ਕਨੈਕਸ਼ਨ ਨੂੰ ਨਹੀਂ ਬਦਲ ਸਕਦਾ।