Как заставить wget использовать прокси-сервер без изменения системных файлов?


23

Я хотел бы знать эквивалент wget, позволяющий мне устанавливать прокси при вызове команды (например wget --proxy=$http_proxy).

Любые идеи ?

Ответы:


25

Без изменения ваших системных файлов /etc/wgetrcвы можете создать файл в вашем домашнем каталоге ~/.wgetrc. Это позволит вам изменять настройки wget локально на уровне пользователя. Теперь напишите следующее, ~/.wgetrcчтобы использовать wget за прокси-сервером:

use_proxy = on
http_proxy =  http://username:password@proxy.server.address:port/
https_proxy =  http://username:password@proxy.server.address:port/
ftp_proxy =  http://username:password@proxy.server.address:port/

Если у вас нет имени пользователя и пароля для прокси, просто напишите адрес прокси и порт везде, как,

http_proxy =  http://proxy.server.address:port/

Это должно работать. Я предполагаю, что у вас уже есть настройки прокси для всех других приложений.


38

-eОпция позволяет предоставлять команды , как в wgetrc в командной строке , так что вам не нужно изменять файл ...

wget -e use_proxy=yes -e http_proxy=$proxy http://askubuntu.com

Brilliant. Вы спасли много проблем, так просто ответ.
Wildcard

Как мне его выключить?
Tessaracter

3

Вам нужно отредактировать wgetrcфайл, расположенный по адресу /etc/wgetrc.

Используйте ваш любимый текстовый редактор, то есть: nano /etc/wgetrcотредактируйте его

Найдите тег http_proxy и удалите перед ним знак # , добавьте прокси-сервер после знака = , т.е.

http_proxy=http://foo.proxy:8080

Затем найдите тег use_proxy и удалите # перед ним, сохраните файл.

wget будет затем использовать указанный прокси-сервер.

Если вы не можете изменить конфигурацию системы с вашим пользователем, вы можете скопировать текущую конфигурацию в место, где вы можете ее отредактировать, то есть: cp /etc/wgetrc ~и использовать --config=~/wgetrcопцию, чтобы заставить wget использовать измененную вами конфигурацию вместо глобальной конфигурации.


Я знаю об этой возможности, но не могу изменить конфигурационные файлы.
fxm

Думаю, это единственный вариант, который у вас есть с wget.
Бруно Перейра

Вот почему я ищу эквивалент wget, как я указал в заголовке.
fxm

Я отредактировал название, чтобы отразить это, с самого начала было ясно, что вы пытаетесь сделать.
Бруно Перейра

Проверьте последний абзац ответа.
Бруно Перейра

1

Опция, которая не упомянута, но должна быть упомянута: Используйте переменные окружения (в зависимости от вашего дистрибутива):

http_proxy=http://<proxy-server-ip>:<port>
export http_proxy

или просто

export http_proxy=http://<proxy-server-ip>:<port>

То же самое для:

https_proxy=http://<proxy-server-ip>:<port>
ftp_proxy=http://<proxy-server-ip>:<port>

Вы можете указать имя пользователя и пароль, если в вашем пароле есть специальные символы, обязательно добавьте '-s'.

http_proxy='http://<username>:<password>@<proxy-server-ip>:<port>'

Примеры:

export http_proxy=http://172.16.1.100:8080
export https_proxy='http://johndoe:ABC!123@172.16.1.100:8080'

1

Только из командной строки я обнаружил успех, предшествующий wgetкоманде с http_proxyинформацией без необходимости использования переменных среды. Например:

'$ http_proxy=<proxy-server-ip>:<port> wget http://www.example.com/'
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.