PythonでトンネルHTTPを使用する方法

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

おすすめ

転載: blog.csdn.net/weixin_73725158/article/details/130827369