Ich vergesse immer, wie man Proxy einrichtet, also fasse ich mein Memo zusammen. Als Randnotiz werden auch zusätzliche Punkte bezüglich der Einstellungen beschrieben.
CheatSheet
Ziel th> | |||
---|---|---|---|
Umgebungsvariablen th> | |||
http_proxy |
https_proxy |
HTTP_PROXY |
HTTPS_PROXY |
Argumente th> | |||
Einstellungsdatei th> | |||
Python requests |
|||
- | - | ● | ● |
requests.get/put(..., proxies={"http": "https://proxy.example.com:8080"}) | |||
- | |||
Python conda |
|||
- | - | - | - |
- | |||
~/.condarc (conda config --stdin) | |||
apt apt-get |
|||
● | ● | - | - |
- | |||
/etc/apt/apt.conf | |||
yum |
|||
- | - | - | - |
--setopt=proxy=https://proxy.example.com:8080 | |||
/etc/yum.conf | |||
curl |
|||
● | - | - | ● |
-x https://proxy.example.com:8080 | |||
~/.curlrc | |||
wget |
|||
● | ● | - | - |
-e http_proxy=http://proxy.example.com:8080 | |||
~/.wgetrc | |||
Splunk |
|||
- | - | - | - |
- | |||
${SPLUNK_HOME}/etc/system/local/server.conf | |||
docker dockerd |
|||
- | - | ● | ● |
--env HTTP_PROXY="http://proxy.example.com:8080" --env HTTPS_PROXY="https://proxy.example.com:8080" |
|||
~/.docker/config.json /etc/systemd/system/docker.service.d/http-proxy.conf |
Obwohl es sich zwischen Umgebungsvariablen in Großbuchstaben und Umgebungsvariablen in Kleinbuchstaben unterscheidet, können Sie einige Befehle behandeln, wenn Sie die folgenden vier angeben.
export HTTP_PROXY=http://username:[email protected]:8080
export http_proxy=${HTTP_PROXY}
export HTTPS_PROXY=https://username:[email protected]:8080
export https_proxy=${HTTPS_PROXY}
conda/Anaconda
~/.condarc
proxy_servers:
http: http://proxy.example.com:8080
https: https://proxy.example.com:8080
apt/apt-get
/etc/apt/apt.conf
Acquire::http::Proxy "http://proxy.example.com:8080/";
Acquire::https::Proxy "https://proxy.example.com:8080/";
Acquire::ftp::Proxy "https://proxy.example.com:8080/";
yum
/etc/yum.conf
[main]
...
proxy = https://proxy.example.com:8080
curl
~/.curlrc
proxy = protocol://username:[email protected]:port
wget
~/.wgetrc or /etc/wgetrc
http_proxy = http://proxy.example.com:8080/
https_proxy = https://proxy.example.com:8080/
ftp_proxy = http://proxy.example.com:8080/
Splunk
${SPLUNK_HOME}/etc/system/local/server.conf
[proxyConfig]
http_proxy = http://proxy.example.com:8080
https_proxy = https://proxy.example.com:8080
docker
json:~/.docker/config.json
{
"proxies":
{
"default":
{
"httpProxy": "http://proxy.example.com:8080",
"httpsProxy": "http://proxy.example.com:8080",
"noProxy": "*.test.example.com,.example2.com"
}
}
}
Der Docker-Daemon wird auf der systemctl-Seite festgelegt. Siehe auch: Docker mit systemd steuern | Docker-Dokumentation
ini:/etc/systemd/system/docker.service.d/http-proxy.conf (Erstelle neu)
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8080/"
Environment="HTTPS_PROXY=https://proxy.example.com:8080/"
ini:/etc/systemd/system/docker.service.d/http-proxy.conf (Erstelle neu)
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8080/" "NO_PROXY=localhost,127.0.0.1,docker-registry.example.com,.corp"
Environment="HTTPS_PROXY=https://proxy.example.com:8080/" "NO_PROXY=localhost,127.0.0.1,docker-registry.example.com,.corp"
Python
Python - requests Siehe auch: Proxies - Erweiterte Verwendung - request-docs-ja 1.0.4 Dokumentation
Proxies-Parameterspezifikation(Beispiel 1)
my_proxies = {
'http': '10.0.0.1:8080',
'https': '10.0.0.1:8080',
}
requests.get(..., proxies = my_proxies )
Proxies-Parameterspezifikation(Beispiel 2)
my_proxies = {
'http': 'https://user:[email protected]:8080',
'https': 'https://user:[email protected]:8080',
}
requests.get(..., proxies = my_proxies )
Unten finden Sie ein Beispielprogramm. Ein Fall, in dem eine ursprüngliche Zertifizierungsstelle verwendet wird, wird ebenfalls angenommen.
requests_sample.py
import requests
import os
#In Fällen, in denen alle TLS-Verbindungen vom Proxy als TLS-Forward-Proxy entschlüsselt werden
ca_verify_file = '/some/where/local_ca.crt'
ca_verify = True
#Standard-Proxy zum Festlegen
my_http_proxy = 'https://proxy.example.com:8080'
my_https_proxy = 'https://proxy.example.com:8080'
#Siehe Umgebungsvariablen
http_proxy = os.getenv( 'HTTP_PROXY', default=my_http_proxy )
https_proxy = os.getenv( 'HTTPS_PROXY', default=my_https_proxy )
#Generieren Sie Proxy-Parameter, die an Anforderungen übergeben werden sollen
proxies = {
'http': http_proxy,
'https': https_proxy,
}
#Ziel-URL
target_url = 'https://www.google.co.jp/search'
# Payload (Hier ist die Abfrage)
payload = {
'q': 'python requests proxy'
}
try:
#Proxy ist Proxies=Übergeben Sie den Wörterbuchtyp
r = requests.get(target_url, params=payload, proxies=proxies, verify=ca_verify)
except requests.ConnectionError as e:
if type(e) == requests.exceptions.SSLError:
#Geben Sie die lokale Zertifikatdatei der Stammzertifizierungsstelle an
# ca_verify_Datei nicht direkt später angeben ca._Durch Inspektion überprüfen
#Um überprüfen zu können, welchen Modus Sie aufgerufen haben
ca_verify = ca_verify_file
r = requests.get(target_url, params=payload, proxies=proxies, verify=ca_verify)
else:
raise e
#Anzeige der erfassten Inhalte
print(r.text)
Im obigen Beispielprogramm wird die Umgebungsvariable explizit referenziert und festgelegt. Wenn jedoch der Parameter "Proxys" nicht angegeben wird, wird auf die Umgebungsvariable in request.get () / post () verwiesen.
Conda / Anaconda
Es gibt zwei Möglichkeiten, conda festzulegen: Die eine besteht darin, den Proxy in der Konfigurationsdatei anzugeben, und die andere darin, ihn mit dem Befehl conda festzulegen.
Siehe auch: Conda für die Verwendung hinter einem Proxyserver konfigurieren (proxy_servers) - Verwenden der .condarc-Conda-Konfigurationsdatei - Conda-Dokumentation /use-condarc.html#config-proxy)
Die Conda-Konfigurationsdatei lautet ~ / .conda
.
.condarc
ist im Format YAML geschrieben.
~/.condarc Beispiel setzen 1
proxy_servers:
http: https://proxy.example.com:8080
https: https://proxy.example.com:8080
Schreiben Sie Folgendes, um den Proxyserver abhängig vom Verbindungsziel zu ändern.
~/.condarc Beispiel einstellen 2
proxy_servers:
'http://10.20.1.128': 'http://10.10.1.10:5323'
Referenz: conda config - Befehlsreferenz
Verwenden Sie bei der Konfiguration mit dem Befehl "conda" den Befehl "conda config". Die Option "--set" kann jedoch nur einen Booleschen Wert oder eine Zeichenfolge angeben, sodass Sie keine strukturierte YAML-Konfiguration angeben können. Muster.
Verwenden Sie in diesem Fall die Option "--stdin", um von der Standardeingabe im YAML-Format einzugeben.
Zur Bestätigung siehe proxy_servers
mit der Option --show
.
MS Unter Windows conda Beispiel mit dem Konfigurationsbefehl 1 einstellen
(base) C:\Users\localuser>conda config --stdin
proxy_servers:
http: https://proxy.example.com:8080
https: https://proxy.example.com:8080
^Z
(base) C:\Users\localuser>conda config --show proxy_servers
proxy_servers:
http: https://proxy.example.com:8080
https: https://proxy.example.com:8080
(base) C:\Users\localuser>
Eine direkte Eingabe ist jedoch nicht realistisch, da Eingabefehler auftreten. Daher ist es besser, eine Datei im Voraus vorzubereiten und an die Standardeingabe zu übergeben.
inputfile.txt
proxy_servers:
http: https://proxy.example.com:8080
https: https://proxy.example.com:8080
MS Unter Windows conda Beispiel 2 mit dem Befehl config einstellen
(base) C:\Users\localuser>type inputfile.txt
proxy_servers:
http: https://proxy.example.com:8080
https: https://proxy.example.com:8080
(base) C:\Users\localuser>type inputfile.txt | conda config --stdin
(base) C:\Users\localuser>conda config --show proxy_servers
proxy_servers:
http: https://proxy.example.com:8080
https: https://proxy.example.com:8080
(base) C:\Users\localuser>
Wenn Sie eine Datei vorbereiten möchten, ist es besser, ~ / .condarc
direkt zu bearbeiten. Wenn Sie jedoch mit Stapelverarbeitung oder Ansible arbeiten, bereiten Sie im Voraus eine Datei für den Einstellungsteil vor und verwenden Sie sie. Es kann in Betracht genommen werden.
Geben Sie die Option "--system" an, wenn Sie die Systemeinstellungen anstelle der persönlichen Einstellungen konfigurieren möchten.
Siehe: Konfigurationsoptionen --6.2. Eignungs-, apt-get- und apt-Befehle
Die Konfigurationsdatei apt / apt-get finden Sie auf der Manpage (apt.conf (5)
).
Http_proxy
und https_proxy
, wenn durch Umgebungsvariablen angegebenJede Zeile
group::tool::directive "value";
Es ist in Form von. Anführungszeichen (") und endgültiges Semikolon (;) sind erforderlich. Die folgenden drei Schreibstile haben dieselben Einstellungen.
group {
tool {
directive1 "value1";
directive2 "value2";
};
};
group::tool {
directive1 "value1";
directive2 "value2";
};
group::tool::drective1 "value1";
group::tool::drective2 "value2";
Die Proxy-Einstellungen werden in den Gruppen "http", "https" und "ftp" der Gruppe "Acquire" für Paketdownloads festgelegt. Eine Beschreibung von "http" und "https" finden Sie auf den Manpages von "apt-transport-http (1)" und "apt-transport-https (1)".
man apt.conf(5)
ftp
ftp::Proxy sets the default proxy to use for FTP URIs. It is
in the standard form of ftp://[[user][:pass]@]host[:port]/.
Per host proxies can also be specified by using the form
ftp::Proxy::<host> with the special keyword DIRECT meaning
to use no proxies. If no one of the above settings is
specified, ftp_proxy environment variable will be used. To
use an FTP proxy you will have to set the ftp::ProxyLogin
script in the configuration file. This entry specifies the
commands to send to tell the proxy server what to connect
to.Folgendes wird weggelassen
man apt-transport-http(1)
Proxy Configuration
The environment variable http_proxy is supported for system wide
configuration. Proxies specific to APT can be configured via the
option Acquire::http::Proxy. Proxies which should be used only
for certain hosts can be specified via
Acquire::http::Proxy::host. Even more finegrained control can be
achieved via proxy autodetection, detailed further below. All
these options use the URI format
scheme://[[user][:pass]@]host[:port]/. Supported URI schemes are
socks5h (SOCKS5 with remote DNS resolution), http and https.
Authentication details can be supplied via apt_auth.conf(5)
instead of including it in the URI directly.
The various APT configuration options support the special value
DIRECT meaning that no proxy should be used. The environment
variable no_proxy is also supported for the same purpose.
Folgendes wird weggelassen
man apt-transport-https(1)
OPTIONS
The HTTPS protocol is based on the HTTP protocol, so all options
supported by apt-transport-http(1) are also available via
Acquire::https and will default to the same values specified for
Acquire::http. This manpage will only document the options
unique to https.
Acquire :: http :: Proxy
einstellen.http_proxy
( https_proxy
wird auf keiner Manpage beschrieben, ist aber empirisch gültig)Beispiel für die Einstellung von Umgebungsvariablen
$ export ftp_proxy="https://proxy.example.com:8080"
$ export http_proxy="https://proxy.example.com:8080"
$ export https_proxy="https://proxy.example.com:8080"
$ export no_proxy="192.168.0.1,172.17.0.3,10.0.0.5"
Fügen Sie für systemweite permanente Einstellungen Folgendes zu / etc / apt / apt.conf
hinzu.
/etc/apt/apt.conf
Acquire::ftp::Proxy "https://proxy.example.com:8080/";
Acquire::http::Proxy "https://proxy.example.com:8080/";
Acquire::https::Proxy "https://proxy.example.com:8080/";
Siehe auch: yum --Trac
Es gibt.
--setopt
, falls als Option angegeben.--setopt=proxy=https://proxy.example.com:8080
man yum(8)
--setopt=option=value
Set any config option in yum config or repo files. For options
in the global config just use: --setopt=option=value for repo
options use: --setopt=repoid.option=value
--setopt
gibt`` proxy oder
repositoryid.proxy von
[main] `an.
Die Beschreibung auf der Manpage lautet wie folgt.man yum.conf(5)
DESCRIPTION
Yum uses a configuration file at /etc/yum.conf.
Additional configuration files are also read from the directories set
by the reposdir option (default is `/etc/yum.repos.d'). See the repos-
dir option below for further details.
<Ausgelassen>
[main] OPTIONS
The [main] section must exist for yum to do anything. It consists of
the following options:
<Ausgelassen>
proxy URL to the proxy server that yum should use. Set this to
`libproxy' to enable proxy auto configuration via libproxy.
Defaults to direct connection.
proxy_username username to use for proxy
proxy_password password for this proxy
<Ausgelassen>
[repository] OPTIONS
The repository section(s) take the following form:
Example: [repositoryid]
name=Some name for this repository
baseurl=url://path/to/repository/
repositoryid Must be a unique name for each repository, one
word.
<Ausgelassen>
proxy URL to the proxy server for this repository. Set to
'_none_' to disable the global proxy setting for this reposi-
tory. If this is unset it inherits it from the global setting
proxy_username username to use for proxy. If this is unset it
inherits it from the global setting
proxy_password password for this proxy. If this is unset it
inherits it from the global setting
(Die Ausgabe der Manpage wurde aus Gründen der Lesbarkeit leicht geändert.)
Permanente Einstellungen werden in / etc / yum.conf
beschrieben.
/etc/yum.conf
[main]
...
proxy = https://proxy.example.com:8080
curl Siehe auch: Manpage
Die Spezifikation im Argument lautet wie folgt.
curl -x https://proxy.example.com:8080 ...
Die Erklärung auf der Manpage lautet wie folgt.
man curl(1)
-x, --proxy [protocol://]host[:port]
Use the specified proxy.
The proxy string can be specified with a protocol:// pre‐
fix. No protocol specified or http:// will be treated as
HTTP proxy. Use socks4://, socks4a://, socks5:// or
socks5h:// to request a specific SOCKS version to be
used. (The protocol support was added in curl 7.21.7)
HTTPS proxy support via https:// protocol prefix was
added in 7.52.0 for OpenSSL, GnuTLS and NSS.
Unrecognized and unsupported proxy protocols cause an
error since 7.52.0. Prior versions may ignore the proto‐
col and use http:// instead.
If the port number is not specified in the proxy string,
it is assumed to be 1080.
This option overrides existing environment variables that
set the proxy to use. If there's an environment variable
setting a proxy, you can set proxy to "" to override it.
All operations that are performed over an HTTP proxy will
transparently be converted to HTTP. It means that certain
protocol specific operations might not be available. This
is not the case if you can tunnel through the proxy, as
one with the -p, --proxytunnel option.
User and password that might be provided in the proxy
string are URL decoded by curl. This allows you to pass
in special characters such as @ by using %40 or pass in a
colon with %3a.
The proxy host can be specified the exact same way as the
proxy environment variables, including the protocol pre‐
fix (http://) and the embedded user + password.
If this option is used several times, the last one will
be used.
Sie können sehen, dass Sie es mit -x
oder --proxy
angeben können.
Wenn Sie es ständig einstellen möchten, geben Sie Folgendes in .curlrc
Ihres Home-Verzeichnisses ein.
(_Curlrc
unter Windows)
~/.curlrc
proxy = protocol://username:[email protected]:port
Die Beschreibung auf der Manpage lautet wie folgt.
man curl(1)
The default config file is checked for in the following
places in this order:
1) curl tries to find the "home dir": It first checks for the
CURL_HOME and then the HOME environment variables. Failing that,
it uses getpwuid() on Unix-like systems (which returns the home
dir given the current user in your system). On Windows, it then
checks for the APPDATA variable, or as a last resort the '%USER‐
PROFILE%\Application Data'.
2) On windows, if there is no _curlrc file in the home dir, it
checks for one in the same dir the curl executable is placed. On
Unix-like systems, it will simply try to load .curlrc from the
determined home dir.
Verwenden Sie http_proxy
, HTTPS_PROXY
, url-protocol_PROXY
(z. B. FTP_PROXY
), ALL_PROXY
und NO_PROXY
, um Umgebungsvariablen festzulegen.
Bitte beachten Sie, dass nur "http_proxy" in Kleinbuchstaben geschrieben ist.
man curl(1)
ENVIRONMENT
The environment variables can be specified in lower case or
upper case. The lower case version has precedence. http_proxy is
an exception as it is only available in lower case.
Using an environment variable to set the proxy has the same
effect as using the -x, --proxy option.
http_proxy [protocol://]<host>[:port]
Sets the proxy server to use for HTTP.
HTTPS_PROXY [protocol://]<host>[:port]
Sets the proxy server to use for HTTPS.
[url-protocol]_PROXY [protocol://]<host>[:port]
Sets the proxy server to use for [url-protocol], where
the protocol is a protocol that curl supports and as
specified in a URL. FTP, FTPS, POP3, IMAP, SMTP, LDAP
etc.
ALL_PROXY [protocol://]<host>[:port]
Sets the proxy server to use if no protocol-specific
proxy is set.
NO_PROXY <comma-separated list of hosts>
list of host names that shouldn't go through any proxy.
If set to a asterisk '*' only, it matches all hosts.
Since 7.53.0, this environment variable disable the proxy
even if specify -x, --proxy option. That is
NO_PROXY=direct.example.com curl -x http://proxy.exam‐
ple.com http://direct.example.com accesses the target URL
directly, and NO_PROXY=direct.example.com curl -x
http://proxy.example.com http://somewhere.example.com
accesses the target URL through proxy.
wget Siehe auch: Manpage
Es gibt.
Geben Sie mit der Option -e
an
wget-Die Option
$ wget -e http_proxy=http://proxy.example.com:8080 ...
Connecting to proxy.example.com:8080... connected.
Proxy request sent, awaiting response... 200 OK
...
Die Beschreibung auf der Manpage lautet wie folgt.
man wget(1)
OPTIONS
<Ausgelassen>
Basic Startup Options
<Ausgelassen>
-e command
--execute command
Execute command as if it were a part of .wgetrc. A command thus
invoked will be executed after the commands in .wgetrc, thus taking
precedence over them. If you need to specify more than one wgetrc
command, use multiple instances of -e.
Wenn eine Basisauthentifizierung erforderlich ist
--proxy-user=
user
--proxy-pasword=
password
Wird als Option angegeben.
* _proxy
( http_proxy
, https_proxy
, ftp_proxy
, no_proxy
).man wget(1)
ENVIRONMENT
Wget supports proxies for both HTTP and FTP retrievals. The standard
way to specify proxy location, which Wget recognizes, is using the
following environment variables:
http_proxy
https_proxy
If set, the http_proxy and https_proxy variables should contain the
URLs of the proxies for HTTP and HTTPS connections respectively.
ftp_proxy
This variable should contain the URL of the proxy for FTP
connections. It is quite common that http_proxy and ftp_proxy are
set to the same URL.
no_proxy
This variable should contain a comma-separated list of domain
extensions proxy should not be used for. For instance, if the
value of no_proxy is .mit.edu, proxy will not be used to retrieve
documents from MIT.
Permanent aufgeführt in ~ / .wgetrc
(individuell) und / etc / wgetrc (system).
~/.wgetrc or /etc/wgetrc
https_proxy = http://proxy.example.com:8080/
http_proxy = http://proxy.example.com:8080/
ftp_proxy = http://proxy.example.com:8080/
man wget(1)
FILES
/etc/wgetrc
Default location of the global startup file.
.wgetrc
User startup file.
Die Manpage sagt nicht "~ / .wgetrc", aber Sie können sie lesen, indem Sie ".wgetrc" in Ihr Home-Verzeichnis einfügen.
Splunk Siehe: Splunkd für die Verwendung Ihrer HTTP-Proxyserver-Splunk-Dokumentation konfigurieren
Set in server.conf
${SPLUNK_HOME}/etc/system/local/server.conf
[proxyConfig]
http_proxy = <string that identifies the server proxy. When set, splunkd sends all HTTP requests through this proxy server. The default value is unset.>
https_proxy = <string that identifies the server proxy. When set, splunkd sends all HTTPS requests through the proxy server defined here. If not set, splunkd uses the proxy defined in http_proxy. The default value is unset.>
no_proxy = <string that identifies the no proxy rules. When set, splunkd uses the [no_proxy] rules to decide whether the proxy server needs to be bypassed for matching hosts and IP Addresses. Requests going to localhost/loopback address are not proxied. Default is "localhost, 127.0.0.1, ::1">
docker Siehe auch: Docker für die Verwendung eines Proxyservers konfigurieren | Docker-Dokumentation Siehe auch: Docker mit systemd steuern | Docker-Dokumentation
Die Proxy-Einstellung für den Docker-Client ist auf "~ / .docker / config.json" festgelegt.
json:~/.docker/config.json
{
"proxies":
{
"default":
{
"httpProxy": "http://127.0.0.1:3001",
"httpsProxy": "http://127.0.0.1:3001",
"ftpProxy": "http://127.0.0.1:3001",
"noProxy": "*.test.example.com,.example2.com"
}
}
}
Variable | Dockerfile example | docker run Example |
---|---|---|
HTTP_PROXY | ENV HTTP_PROXY "http://127.0.0.1:3001" | --env HTTP_PROXY="http://127.0.0.1:3001" |
HTTPS_PROXY | ENV HTTPS_PROXY "https://127.0.0.1:3001" | --env HTTPS_PROXY="https://127.0.0.1:3001" |
FTP_PROXY | ENV FTP_PROXY "ftp://127.0.0.1:3001" | --env FTP_PROXY="ftp://127.0.0.1:3001" |
NO_PROXY | ENV NO_PROXY "*.test.example.com,.example2.com" | --env NO_PROXY="*.test.example.com,.example2.com" |
(Zitiert aus Docker für die Verwendung eines Proxyservers konfigurieren | Docker-Dokumentation)
Die Proxy-Einstellung von dockerd erfolgt auf der systemctl-Seite. (Nicht in daemon.json
gesetzt)
ini:/etc/systemd/system/docker.service.d/http-proxy.conf (Erstelle neu)
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8080/" "NO_PROXY=localhost,127.0.0.1,docker-registry.example.com,.corp"
Environment="HTTPS_PROXY=https://proxy.example.com:8080/" "NO_PROXY=localhost,127.0.0.1,docker-registry.example.com,.corp"
Starten Sie dockerd nach dem Einstellen neu.
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
Überprüfen Sie die Einstellungen.
$ systemctl show --property=Environment docker
Environment=HTTP_PROXY=http://proxy.example.com:8080/
Recommended Posts