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

by on May 9, 2008 · 38 comments· LAST UPDATED June 3, 2014

in , ,

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/

TwitterFacebookGoogle+PDF versionFound an error/typo on this page? Help us!

{ 38 comments… read them below or add one }

1 Raphael May 9, 2008 at 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/

Reply

2 Ajey February 8, 2011 at 1:03 pm

Great work. This worked for me. Thanks.

Reply

3 RAFEE October 17, 2012 at 6:07 am

thank you , It is working fine :)

Reply

4 Varun October 4, 2014 at 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.

Reply

5 Slavko May 9, 2008 at 4:52 pm

It is really correct?

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

Reply

6 Houssem Eddinn Kaabachi March 29, 2012 at 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/

Reply

7 nixCraft May 9, 2008 at 5:45 pm

Slavko,

It was a typo. The faq has been updated.

Reply

8 Pravin September 18, 2008 at 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

Reply

9 kiran khairnar December 27, 2010 at 1:26 pm

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

Reply

10 Breno April 5, 2009 at 7:23 pm

Very Good Man!
Thanks!

Reply

11 la_89 June 5, 2009 at 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

Reply

12 Kyaw Soe Htet June 2, 2011 at 9:54 am

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

Reply

13 ishtiyaq October 4, 2011 at 11:59 am

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

it works for ishtiyaq :)

Reply

14 ishtiyaq October 4, 2011 at 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/

Reply

15 El Lobo October 26, 2011 at 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,…

Reply

16 arun March 3, 2012 at 7:47 am

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

Reply

17 thisara March 6, 2012 at 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

Reply

18 printer305 March 28, 2012 at 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?

Reply

19 Sivaprakash April 5, 2012 at 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

Reply

20 srinivas April 29, 2013 at 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

Reply

21 Tim July 18, 2013 at 1:01 am

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

Reply

22 droid.manic April 17, 2012 at 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/

Reply

23 Sachin May 4, 2012 at 9:11 am

hi,
seems like for proxy
Only below setting is working

export http_proxy=

Reply

24 Fernando August 3, 2012 at 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

Reply

25 Vincent September 5, 2012 at 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

Reply

26 titus January 18, 2013 at 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.

Reply

27 Ambot Lang March 4, 2013 at 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

Reply

28 bartender March 5, 2013 at 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 :)

Reply

29 bartender March 5, 2013 at 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 :)

Reply

30 Nobody!! May 20, 2013 at 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??

Reply

31 nixCraft May 20, 2013 at 6:50 am

Noop.

HTH.

Reply

32 abii June 20, 2013 at 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?

Reply

33 srinivas July 10, 2013 at 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

Reply

34 Bilal August 6, 2013 at 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.

Reply

35 Prasoon September 16, 2013 at 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

Reply

36 Rahul R Upadhye October 14, 2013 at 9:32 am

@Tim

Thanks you so much :)

%40 works instead @ in the password….

Reply

37 mklim November 26, 2013 at 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..:-(

Reply

38 Aries June 30, 2014 at 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

Reply

Leave a Comment

Tagged as: , , , , , , , , , , , , ,

Previous Faq:

Next Faq: