≡ Menu

How To Use Proxy Server To Access Internet at Shell Prompt With http_proxy Variable

I'm behind a squid proxy server. How do I access internet via proxy server when I use wget, lynx and other utilities from a shell prompt on a Linux or Unix-like systems?

Linux and UNIX-like systems has environment variable called http_proxy. It allows you to connect text based session and/or applications via the proxy server. All you need is proxy server IP address (URL) and port values.
Tutorial details
DifficultyEasy (rss)
Root privilegesYes
RequirementsNone
Estimated completion time5m
This variable is almost used by all utilities such as elinks, lynx, wget, curl and others commands.

Set http_proxy shell variable on Linux/OS X/Unix bash shell

Type the following command to set proxy server:
$ export http_proxy=http://server-ip:port/
$ export http_proxy=http://127.0.0.1:3128/
$ export http_proxy=http://proxy-server.mycorp.com:3128/

If the proxy server requires a username and password then add these to the URL. For example, to include the username foo and the password bar:
$ export http_proxy=http://foo:bar@server-ip:port/
$ export http_proxy=http://foo:bar@127.0.0.1:3128/
$ export http_proxy=http://USERNAME:PASSWORD@proxy-server.mycorp.com:3128/

How do I setup proxy variable for all users?

To setup the proxy environment variable as a global variable, open /etc/profile file:
# vi /etc/profile
Add the following information:
export http_proxy=http://proxy-server.mycorp.com:3128/
OR
export http_proxy=http://USERNAME:PASSOWRD@proxy-server.mycorp.com:3128/
Save and close the file.

A note about enabling proxy access to a specific user

To enable proxy access for a specific user, add the lines user shell profile. For the default bash shell, the profile is the file .bash_profile. For example, enable proxy access for a specifc user called vivek, type:
$ vi $HOME/.bash_profile
OR
# vi /home/vivek/.bash_profile
Append the following line:
export http_proxy=http://USERNAME:PASSOWRD@proxy-server.mycorp.com:3128/
Save and close the file.

How do I use password protected proxy server using various command line options?

You can simply use wget command as follows:
$ wget --proxy-user=USERNAME --proxy-password=PASSWORD http://path.to.domain.com/some.html
Lynx command has the following syntax:
$ lynx -pauth=USER:PASSWORD http://domain.com/path/html.file
Curl command has following syntax:
$ curl --proxy-user user:password http://url.com/

Tweet itFacebook itGoogle+ itPDF itFound an error/typo on this page?

{ 41 comments… add one }

  • Raphael May 9, 2008, 4:07 pm

    For password protected proxies, I know it sometimes work directly included in http_proxy variable (ok it’s not so secure but it can make the work easier) :

    $ export http_proxy=http://user:password@server-ip:port/

    • Ajey February 8, 2011, 1:03 pm

      Great work. This worked for me. Thanks.

    • RAFEE October 17, 2012, 6:07 am

      thank you , It is working fine :)

    • Varun October 4, 2014, 4:03 am

      My proxy login id contains ‘@’ what should I do now?
      eg.
      export http_proxy=http://abc:xyz@123@192.168.25.10:3128/
      Is there anyway to sort this out?

      P.S – I cannot request to change my password since It is associated with many other services.

      • irfan January 8, 2015, 8:52 am

        I am travelling in same board :(

        Did you found something?

      • DaveTashner January 8, 2015, 7:58 pm

        Can you try:

        export http_proxy=http://abc:xyz%40123@192.168.25.10:3128/

        The @ sign can be replaced with the HTML identifier, which is %40.

  • Slavko May 9, 2008, 4:52 pm

    It is really correct?

    export export http_proxy=http://proxy-server.mycorp.com:3128/

    • Houssem Eddinn Kaabachi March 29, 2012, 10:50 am

      You have typed one more “export”. So you have to type only this
      export http_proxy=http://proxy-server.mycorp.com:3128/

  • nixCraft May 9, 2008, 5:45 pm

    Slavko,

    It was a typo. The faq has been updated.

  • Pravin September 18, 2008, 10:10 am

    Hi

    I tried this, but still, I cannot ping google or any other site from within the shell.. it says ‘destination host unreachable’..

    I’m using Redhat Enterprise 2.4..

    Any idea what might be going wrong?

    Thanks
    Pravin

    • kiran khairnar December 27, 2010, 1:26 pm

      Until and unless you put the DNS server it won’t ping

  • Breno April 5, 2009, 7:23 pm

    Very Good Man!
    Thanks!

  • la_89 June 5, 2009, 9:00 pm

    above is good for for text based but for a simple linux user using firefox how can b a proxy server can b used like fedora core 8

  • Kyaw Soe Htet June 2, 2011, 9:54 am

    Hey how do I use a proxy server .My service provider blocked the proxy server websites.

  • ishtiyaq October 4, 2011, 11:59 am

    proxy setting syntax:
    export http_proxy=http://:@:/
    export ftp_proxy=http://:@:/

    it works for ishtiyaq :)

    • ishtiyaq October 4, 2011, 12:00 pm

      export http_proxy=http://user:pasword@proxy-server.mycorp.com:port/
      export ftp_proxy=http://user:pasword@proxy-server.mycorp.com:port/

  • El Lobo October 26, 2011, 1:45 pm

    Is there support for excluding sites or a regex from using the proxy?

    It seems that there is options for some commands, but is there a centralized option?

    I.E. something like:

    export no_http_proxy=*.ibm.com,10.0.0.0\24,…

  • arun March 3, 2012, 7:47 am

    wanna no can i download from a server which has a block on downloads by using linux

  • thisara March 6, 2012, 4:02 pm

    Hi My case is little different because my user name is domain\username

    export http_proxy=http://domain\user:pasword@proxy-server.mycorp.com:port/
    i try above way but didn’t work it.Can any one help me about

  • printer305 March 28, 2012, 4:57 am

    use:
    export http_proxy=”http://user:password@proxy-ip:port”

    I think the previous people forgot to put the quotes.

    And another question, what if I have a proxy server enabled using the above command and want to remove it? What command do I have to use?

  • Sivaprakash April 5, 2012, 10:43 am

    Hey People,

    I got a doubt. My password is have a special character ‘@’. Due to this the character before the ‘@’ in my password are ignored. Can anyone include ‘@’ in your password and let me know if that works.

    Thanks,
    SP

    • srinivas April 29, 2013, 2:00 pm

      Hi SP,

      I am also facing same problem .If you are out of this problem .
      Can you tell me the way to work it out.

      Thanks
      srinu

    • Tim July 18, 2013, 1:01 am

      try substituting ‘%40’ for ‘@’ in your password.

      • venkatesh August 20, 2015, 5:17 pm

        For ‘%40’ is not working

  • droid.manic April 17, 2012, 6:10 am

    If you have a domain and you have a \ you have to escape it since \ it self is an escape char. You should do this:
    export http_proxy=http://domain\\user:pasword@proxy-server.mycorp.com:port/

  • Sachin May 4, 2012, 9:11 am

    hi,
    seems like for proxy
    Only below setting is working

    export http_proxy=

  • Fernando August 3, 2012, 3:03 pm

    Hello!
    I need to configure complete internet access behind a proxy.
    I can access 80 port, but i need 443 and all ports for Skype for example.
    Thanks for anyone who can help me.

    Thanks

    • Vincent September 5, 2012, 5:57 pm

      you can use ‘https_proxy’ with the same settings if you need proxy over https
      you can also use ‘ftp_proxy’ if needed, as well

  • titus January 18, 2013, 9:29 am

    Hi guys,How can i remove the proxy from elinks?i was accessing a server that needed validation and that worked fine,then when i went to a no proxy server,i couldint access interned due to earlier proxy setting,please help me with the command or file to remove the proxy settings.

  • Ambot Lang March 4, 2013, 10:33 pm

    I just curious and my password doesn’t work because it has a character ‘@’ it generates error says unable to resolve host address especially using wget. How do i overcome it?Thanks

  • bartender March 5, 2013, 10:25 am

    cd /etc
    sudo gedit bash.bashrc

    once gedit opens the file in text form,goto the end and type the following,edit if already exists:

    export http_proxy=http://:@:8080/
    export ftp_proxy=http://:@:/

    example: lets say your username is simpson , password is bartrocks, the proxy server for your connection is http://10.1.1.32 ,port address is 8080, then to set up http proxy you have to write:

    export http_proxy=http://simpson:bartrocks@10.1.1.32:8080/

    Then Save and exit as you do for text files.Close and reopen the terminal and now you can use tools like wget to download web-pages from terminal :)

  • bartender March 5, 2013, 10:26 am

    cd /etc
    sudo gedit bash.bashrc

    once gedit opens the file in text form,goto the end and type the following,edit if already exists:

    export http_proxy=http://username:password@proxyserveraddress:8080/
    export ftp_proxy=http://username:password@serveraddress:port/

    example: lets say your username is simpson , password is bartrocks, the proxy server for your connection is http://10.1.1.32 ,port address is 8080, then to set up http proxy you have to write:

    export http_proxy=http://simpson:bartrocks@10.1.1.32:8080/

    Then Save and exit as you do for text files.Close and reopen the terminal and now you can use tools like wget to download web-pages from terminal :)

  • Nobody!! May 20, 2013, 5:32 am

    I’m a Student.. I’ve Lab Exams comming up.. Programs are too Lengthy..
    I’m Slow with Keyboard..

    Do the above Export Command need SuperUser Privilege??

  • abii June 20, 2013, 5:21 am

    export http_proxy=http://username:password@14@proxyserver.fid.cb:8080/

    I have “@” in my password, how to enter the password in this scenario? in double quotes?

    • srinivas July 10, 2013, 2:33 pm

      you can use the above command ,if you want you can use double quotes.

      problem will come when you use ! or $ . then u have use \ like: password\!test

      in this case don’t use double quotes

  • Bilal August 6, 2013, 1:57 pm

    I was trying to set permanently environment variable for proxy in /etc/profile as mentioned in guide. But it wont work even on reboot.
    I explored and figured out that users ~/.bashrc file is used for permanent save environment variable.

  • Prasoon September 16, 2013, 7:08 am

    How will you access the https sites from command line, as you only configured it for http as of now…is there a way out..

    Regards,
    Prasoon

  • Rahul R Upadhye October 14, 2013, 9:32 am

    @Tim

    Thanks you so much :)

    %40 works instead @ in the password….

  • mklim November 26, 2013, 3:25 am

    Hi,

    My shell script

    #!bin/bash

    export http_proxy=”http://example123.edu.my:80″

    Not working…any idea?

    Becoz it can execute but no changes made..:-(

  • Aries June 30, 2014, 9:47 am

    Hello folks,

    I’m using WebSphere Application server 8.0 which is hosted in the linux server, How can I enable the proxy so that the Applicaition server picks up the proxy settings

Leave a Comment