I'm using ssh -D to create a socket proxy and want to know how to use pip(or easy_install) with it? I find this question but that's an http proxy.

Also, please give me a solution works under OS X. (I tried proxifier, it works with pip install, but not sudo pip install)

8 Answers

Easiest method, also works on many OS's:

pip install pysocks pip install <yourpacakge> --proxy socks5://127.0.0.1:8123 

Substitute socks4, and your own ip/port as needed.

7

Use socks proxifier, for example proxychains.

Command pip will be like proxychains pip install package_name.

Or use another proxifier.

2

For CentOS, you can use privoxy to convert socks5 proxy to http proxy.

yum install privoxy 

Then edit /etc/privoxy/config, at the end of the file, add:

forward-socks5 / 127.0.0.1:1080 . 

It will convert socks5 proxy from 1080 to http proxy 8118. Then you can specify the proxy in your pip config file:

[global] proxy = 127.0.0.1:8118 

DO NOT use polipo, as it is already deprecated.

As other users have posted the following works well for using pip via a remote host:

# SOCKS4 proxy creation ssh -D9999 <remote host URI> # use pip with the previously created proxy connection (requires pysocks) python3 -m pip install <package name> --proxy socks5:localhost:9999 

Bootstrapping

"But I need pysocks to run pip through a proxy and you can't connect to the pypi to download packages as I don't have functioning pip"

One way to get around this is to download the pysocks wheel package on another machine:

python3 -m pip download pysocks 

This will download the pysocks package to your machine. Transfer the PySocks-x-x-x-py3-none-any.whl file to the machine that requires proxy functionality and install:

python3 -m pip install PySocks*.whl 

Run these two commands:

pip install pysocks5 pip install --proxy socks5://[user:passwd@]proxy.server:port something 
1

Nevermind, --proxy seems to work with http(s) proxy only.

From "pip --help"

--proxy <proxy> Specify a proxy in the form [user:passwd@]proxy.server:port. 

Edit: I finally gave up sock proxy and run a java http proxy () on my remote machine and use ssh -L port:localhost:port to forward the port to the remote machine and use that http proxy.

first of all you can try install proxychains-ng using

brew install proxychains-ng

the can try make a socks5 proxy using ssh -D like

ssh -D 12345 -fqN root@[your-vps-ip]

and use public-key or password to access your vps

then you have both proxychain and socks5.

Now edit /etc/proxychains.conf , simply add this line at the end of it

socks5 127.0.0.1 12345 

and comment this

socks4 127.0.0.1 9050 

Finally

proxychains4 pip install [whateveryouwant]

On Windows (mine was Win2012R2) I managed connecting through SOCKS5-proxy by doing those steps:

All-user-level-pip:

  1. Adding this lines to pip.ini under "C:\ProgramData\pip":

    [global] proxy = socks5:{proxy-ip}:{proxy-port} 
  2. Opening cmd.exe (maybe but not necessarily as administrator ... depends on your file-system configuration...) Setting proxy variables to "no-proxy" explicitly!!! ... like that:

    set http_proxy=no-proxy set https_proxy=no-proxy 
  3. running for example pip install your_module and finally it works through the socks5-proxy specified in the pip.ini

For user-level-pip you need to place the pip.ini somewhere else according pip-documentation.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.