Як змусити 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

Блискуча. Ви врятували багато клопоту, простий, як і ця відповідь.
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>

Ви можете включити ім'я користувача та пароль, якщо у вашому паролі є спеціальні символи, обов'язково введіть '-і.

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.