HTTP トンネル接続に Python を使用するには、`http.client.HTTPSConnection` クラスまたは `http.client.HTTPConnection` クラスを使用して接続を確立できます。以下は、HTTP トンネリングを使用して指定された Web サイトに接続できる簡単なサンプル コードです。
「」パイソン
http.clientをインポートする
# プロキシサーバーのアドレスとポート番号を設定する
proxy_host = ' proxy.example.com '
プロキシポート = 8080
# ターゲットWebサイトのアドレスとポート番号を設定します
target_host = 'サンプル ドメイン'
ターゲットポート = 80
# HTTPトンネル接続を確立する
conn = http.client.HTTPSConnection(プロキシホスト, プロキシポート)
conn.set_tunnel(ターゲットホスト, ターゲットポート)
# HTTPリクエストを送信する
conn.request('GET', '/')
応答 = conn.getresponse()
# レスポンス内容を出力する
print( response.read ().decode())
「」
上記のコードでは、最初にプロキシ サーバーのアドレスとポート番号を設定し、次にターゲット Web サイトのアドレスとポート番号を設定します。次に、`http.client.HTTPSConnection` クラスを使用して HTTP トンネル接続を確立し、`set_tunnel` メソッドを呼び出してターゲット Web サイトのアドレスとポート番号を設定します。最後に、HTTP GET リクエストを送信し、レスポンスを出力します。
プロキシ サーバーが認証を必要とする場合、`http.client.HTTPConnection` または `http.client.HTTPSConnection` クラスの `set_tunnel` メソッドの `headers` パラメーターを使用してユーザー名とパスワードを設定できることに注意してください。プロキシサーバーの。例えば:
「」パイソン
http.clientをインポートする
インポートbase64
# プロキシサーバーのアドレスとポート番号を設定する
proxy_host = ' proxy.example.com '
プロキシポート = 8080
# ターゲットWebサイトのアドレスとポート番号を設定します
target_host = 'サンプル ドメイン'
ターゲットポート = 80
# プロキシサーバーのユーザー名とパスワードを設定します
proxy_user = 'ユーザー名'
proxy_pass = 'パスワード'
# HTTPトンネル接続を確立する
conn = http.client.HTTPSConnection(プロキシホスト, プロキシポート)
headers = {'Proxy-Authorization': 'Basic ' +base64.b64encode((proxy_user + ':' + proxy_pass).encode()).decode()}
conn.set_tunnel(ターゲットホスト、ターゲットポート、ヘッダー=ヘッダー)
# HTTPリクエストを送信する
conn.request('GET', '/')
応答 = conn.getresponse()
# レスポンス内容を出力する
print( response.read ().decode())
「」
上記のコードでは、`base64` モジュールを使用してプロキシ サーバーのユーザー名とパスワードをエンコードし、エンコードされた文字列を `Proxy-Authorization` リクエスト ヘッダーに追加します。このようにして、HTTP トンネル接続を確立するときに認証できます。
#! -*- encoding:utf-8 -*-
import requests
# 要访问的目标页面
targetUrl = "http://ip.hahado.cn/ip"
# 代理服务器
proxyHost = "ip.hahado.cn"
proxyPort = "39010"
# 代理隧道验证信息
proxyUser = "username"
proxyPass = "password"
proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {
"host" : proxyHost,
"port" : proxyPort,
"user" : proxyUser,
"pass" : proxyPass,
}
proxies = {
"http" : proxyMeta,
"https" : proxyMeta,
}
resp = requests.get(targetUrl, proxies=proxies)
print resp.status_code
print resp.text