J'oublie toujours comment configurer Proxy, donc je vais résumer ma propre note. En remarque, des éléments supplémentaires concernant les paramètres sont également décrits.
CheatSheet
Cible th> | |||
---|---|---|---|
Variables d'environnement th> | |||
http_proxy |
https_proxy |
HTTP_PROXY |
HTTPS_PROXY |
Arguments th> | |||
Fichier de paramètres 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 |
Bien que cela diffère entre les variables d'environnement majuscules et les variables d'environnement minuscules, si vous spécifiez les quatre suivantes, vous pouvez couvrir certaines commandes.
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"
}
}
}
Le démon docker est défini du côté systemctl. Voir aussi: Control Docker with systemd | Docker Documentation
ini:/etc/systemd/system/docker.service.d/http-proxy.conf (Créer un nouveau)
[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 (Créer un nouveau)
[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 Voir aussi: Proxies - Utilisation avancée - documentation requests-docs-ja 1.0.4
proxies
de requests.get () / post ().http '' ou
https '' doit être spécifié.HTTP_PROXY
et HTTPS_PROXY
lorsque vous spécifiez de l'extérieur avec des variables d'environnement.Spécification des paramètres de proxy(Exemple 1)
my_proxies = {
'http': '10.0.0.1:8080',
'https': '10.0.0.1:8080',
}
requests.get(..., proxies = my_proxies )
Spécification des paramètres de proxy(Exemple 2)
my_proxies = {
'http': 'https://user:[email protected]:8080',
'https': 'https://user:[email protected]:8080',
}
requests.get(..., proxies = my_proxies )
Voici un exemple de programme. Un cas où une autorité de certification d'origine est utilisée est également supposé.
requests_sample.py
import requests
import os
#Pour les cas où toutes les connexions TLS sont déchiffrées par le proxy en tant que proxy direct TLS
ca_verify_file = '/some/where/local_ca.crt'
ca_verify = True
#Proxy par défaut à définir
my_http_proxy = 'https://proxy.example.com:8080'
my_https_proxy = 'https://proxy.example.com:8080'
#Voir les variables d'environnement
http_proxy = os.getenv( 'HTTP_PROXY', default=my_http_proxy )
https_proxy = os.getenv( 'HTTPS_PROXY', default=my_https_proxy )
#Générer des paramètres de proxy à transmettre aux requêtes
proxies = {
'http': http_proxy,
'https': https_proxy,
}
#Cible URL
target_url = 'https://www.google.co.jp/search'
# Payload (Voici la requête)
payload = {
'q': 'python requests proxy'
}
try:
#Le proxy est un proxy=Passer le type de dictionnaire
r = requests.get(target_url, params=payload, proxies=proxies, verify=ca_verify)
except requests.ConnectionError as e:
if type(e) == requests.exceptions.SSLError:
#Spécifiez le fichier de certificat de l'autorité de certification racine locale
# ca_verify_Ne spécifiez pas de fichier directement plus tard ca_En inspectant vérifier
#Pour pouvoir vérifier le mode que vous avez appelé
ca_verify = ca_verify_file
r = requests.get(target_url, params=payload, proxies=proxies, verify=ca_verify)
else:
raise e
#Affichage des contenus acquis
print(r.text)
Dans l'exemple de programme ci-dessus, la variable d'environnement est explicitement référencée et définie, mais si le paramètre proxies
n'est pas spécifié, la variable d'environnement sera référencée dans requests.get () / post ().
Conda / Anaconda
Il existe deux façons de définir conda, l'une consiste à spécifier le proxy dans le fichier de configuration et l'autre à le définir avec la commande conda.
Voir aussi: Configurer conda pour une utilisation derrière un serveur proxy (proxy_servers) - Utilisation du fichier de configuration .condarc conda - documentation conda /use-condarc.html#config-proxy)
Le fichier de configuration conda est ~ / .conda
.
.condarc
est écrit au format YAML.
~/.condarc Exemple de réglage 1
proxy_servers:
http: https://proxy.example.com:8080
https: https://proxy.example.com:8080
Pour modifier le serveur proxy en fonction de la destination de la connexion, écrivez comme suit.
~/.condarc Exemple de réglage 2
proxy_servers:
'http://10.20.1.128': 'http://10.10.1.10:5323'
Référence: conda config --Command Reference
Lors de la configuration avec la commande conda
, utilisez la commande conda config
, mais l'option --set
ne peut spécifier qu'un booléen ou une chaîne, vous ne pouvez donc pas spécifier une configuration YAML structurée. modèle.
Dans ce cas, utilisez l'option --stdin
pour entrer à partir de l'entrée standard au format YAML.
Pour confirmation, reportez-vous à proxy_servers
avec l'option --show
.
MS Sous Windows conda Exemple de configuration par la commande de configuration 1
(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>
Cependant, la saisie directe n'est pas réaliste car des erreurs de saisie se produisent, il est donc préférable de préparer un fichier à l'avance et de le transmettre à l'entrée standard.
inputfile.txt
proxy_servers:
http: https://proxy.example.com:8080
https: https://proxy.example.com:8080
MS Sous Windows conda Exemple de configuration 2 par la commande config
(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>
Si vous souhaitez préparer un fichier, il semble préférable d'éditer directement ~ / .condarc
, mais lorsque vous gérez avec le traitement par lots ou Ansible, préparez un fichier pour la partie de configuration à l'avance et utilisez-le. Peut être considéré.
Spécifiez l'option --system
si vous souhaitez configurer les paramètres système au lieu des paramètres personnels.
Voir: Options de configuration-6.2. Commandes Aptitude, apt-get et apt
Le fichier de configuration apt / apt-get se trouve sur la page de manuel (ʻapt.conf (5) `).
/ etc / apt / apt.conf
Http_proxy
et https_proxy
lorsqu'ils sont spécifiés par des variables d'environnementChaque ligne
group::tool::directive "value";
C'est sous la forme de. Les guillemets (") et le point-virgule final (;) sont obligatoires. Les trois styles d'écriture suivants ont les mêmes paramètres.
group {
tool {
directive1 "value1";
directive2 "value2";
};
};
group::tool {
directive1 "value1";
directive2 "value2";
};
group::tool::drective1 "value1";
group::tool::drective2 "value2";
Les paramètres de proxy sont définis dans les paramètres http
, https
et ftp
du groupe ʻAcquirepour les téléchargements de paquets. Une description de
http et
https peut être trouvée sur les pages de manuel de ʻapt-transport-http (1)
et ʻ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.Ce qui suit est omis
ftp_proxy
.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.
Ce qui suit est omis
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.
http_proxy
( https_proxy
n'est décrite sur aucune page de manuel, mais elle est empiriquement valide)Exemple de configuration de variable d'environnement
$ 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"
Pour les paramètres permanents à l'échelle du système, ajoutez ce qui suit à / etc / apt / apt.conf
.
/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/";
Voir aussi: yum --Trac
Il y a.
--setopt
si spécifié comme option.--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
spécifie`` proxy ou
repositoryid.proxyde
[main]`.
La description sur la page de manuel est la suivante.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.
<Omis>
[main] OPTIONS
The [main] section must exist for yum to do anything. It consists of
the following options:
<Omis>
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
<Omis>
[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.
<Omis>
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
(La sortie de la page de manuel a été légèrement modifiée pour plus de lisibilité)
Les paramètres permanents sont décrits dans / etc / yum.conf
.
/etc/yum.conf
[main]
...
proxy = https://proxy.example.com:8080
curl Voir aussi: page de manuel
La spécification dans l'argument est la suivante.
curl -x https://proxy.example.com:8080 ...
L'explication sur la page de manuel est la suivante.
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.
Vous pouvez voir que vous pouvez le spécifier avec -x
ou --proxy
.
Si vous voulez le définir constamment, mettez ce qui suit dans .curlrc
de votre répertoire personnel.
(_Curlrc
sous Windows)
~/.curlrc
proxy = protocol://username:[email protected]:port
La description sur la page de manuel est la suivante.
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.
Utilisez http_proxy
, HTTPS_PROXY
, url-protocol_PROXY
(comme FTP_PROXY
), ʻALL_PROXY et
NO_PROXYpour définir avec les variables d'environnement. Veuillez noter que seul
http_proxy` est en minuscules.
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 Voir aussi: page de manuel
Il y a.
Spécifiez à l'aide de l'option -e
wget-option e
$ wget -e http_proxy=http://proxy.example.com:8080 ...
Connecting to proxy.example.com:8080... connected.
Proxy request sent, awaiting response... 200 OK
...
La description sur la page de manuel est la suivante.
man wget(1)
OPTIONS
<Omis>
Basic Startup Options
<Omis>
-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.
Si une authentification de base est requise
--proxy-user=
user
--proxy-pasword=
password
Est spécifié en option.
* _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.
Répertorié en permanence dans ~ / .wgetrc
(individuel) et / etc / wgetrc (système).
~/.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.
La page de manuel ne dit pas ~ / .wgetrc
, mais elle peut être lue en mettant .wgetrc
dans votre répertoire personnel.
Splunk Voir aussi: Configurer splunkd pour utiliser votre serveur proxy HTTP - Documentation Plunk](https://docs.splunk.com/Documentation/Splunk/latest/Admin/ConfigureSplunkforproxy)
Défini dans 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 Voir aussi: Configurer Docker pour utiliser un serveur proxy | Documentation Docker Voir aussi: Control Docker with systemd | Docker Documentation
Le paramètre de proxy pour le client docker est défini sur ~ / .docker / config.json
.
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" |
(Cité de Configurer Docker pour utiliser un serveur proxy | Documentation Docker)
Le paramétrage du proxy de dockerd se fait du côté systemctl. (Non défini dans daemon.json
)
ini:/etc/systemd/system/docker.service.d/http-proxy.conf (Créer un nouveau)
[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"
Après le réglage, redémarrez dockerd.
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
Vérifiez les paramètres.
$ systemctl show --property=Environment docker
Environment=HTTP_PROXY=http://proxy.example.com:8080/
Recommended Posts