ホームページ  >  記事  >  バックエンド開発  >  PHP コードを使用して、Baidu Wenxinyiyan API インターフェイスのリクエスト プロキシとリバース プロキシを実装します。

PHP コードを使用して、Baidu Wenxinyiyan API インターフェイスのリクエスト プロキシとリバース プロキシを実装します。

WBOY
WBOYオリジナル
2023-08-13 08:09:291211ブラウズ

PHP コードを使用して、Baidu Wenxinyiyan API インターフェイスのリクエスト プロキシとリバース プロキシを実装します。

PHP コードを使用して、Baidu Wenxin Yiyan API インターフェイスのリクエスト プロキシとリバース プロキシを実装します。

概要:
Baidu Wenxin Yiyan は、API インターフェイスを提供するプロバイダーです。さまざまなランダムな文や有名人の引用は、Web サイト、アプリ、その他のアプリケーションで使用できます。ただし、何らかの理由で、制限を回避したり、リクエストをより適切に制御したりするために、プロキシまたはリバース プロキシを使用して API を呼び出す必要がある場合があります。

リクエスト プロキシ:
リクエスト プロキシとは、リクエストを中間サーバー (プロキシ サーバー) に送信し、プロキシ サーバーがそのリクエストを代わって Baidu Wenxin Yiyan API インターフェイスに送信することを指します。この方法により、実際の IP アドレスを隠し、第一級の情報のリクエストを偽装し、リクエストの成功率を向上させることができます。

まず、プロキシ サーバーを作成する必要があります。PHP を使用して、8000 などの指定されたポートをリッスンする単純な HTTP サーバーを作成できます。以下は簡単なサンプル コードです:

<?php
// 创建一个代理服务器
$proxy = stream_socket_server('tcp://127.0.0.1:8000', $errno, $errstr);
if (!$proxy) {
    die("创建代理服务器失败:$errstr ($errno)");
}

while (true) {
    // 接受客户端连接请求
    $client = stream_socket_accept($proxy);
    if ($client) {
        // 从客户端读取请求
        $request = fread($client, 8192);

        // 修改请求头,伪装为百度文心一言API的请求
        $request = str_replace(
            'Host: localhost:8000',
            'Host: api.lovelive.tools', 
            $request
        );

        // 创建与API接口的连接
        $api = stream_socket_client('tcp://api.lovelive.tools:80', $errno, $errstr, 30);
        if ($api) {
            // 向API接口发送请求
            fwrite($api, $request);

            // 获取API的响应并返回给客户端
            while (!feof($api)) {
                fwrite($client, fread($api, 8192));
            }
            fclose($api);
        } else {
            fclose($client);
        }
    }
}
fclose($proxy);

上記のコードを proxy.php ファイルとして保存し、コマンド ラインから実行します:

php proxy.php

現時点では、プロキシ サーバーは127.0.0.1: ポート 8000 が起動しています。

次に、プロキシ サーバーにリクエストを送信し、応答結果を取得することで、Baidu Wenxin Yiyan API インターフェイスにリクエストを送信できます。たとえば、curl コマンド ライン ツールを使用してリクエストを送信できます。

curl -x localhost:8000 https://api.lovelive.tools/api/SweetNothings/1

リバース プロキシ:
リバース プロキシとは、クライアントがリクエストを送信したときに、そのリクエストを別のサーバーに転送するようにサーバーを構成することを指します。そしてサーバーの応答をクライアントに返します。このアプローチにより、負荷分散と高可用性を実現できます。

まず、Baidu Wenxin Yiyan API へのすべてのリクエストをリバース プロキシ サーバーに転送するように Web サーバーを構成する必要があります。以下は Nginx 設定ファイルのサンプルです:

server {
    listen 80;
    server_name api.mydomain.com;
    
    location / {
        proxy_pass http://localhost:8000;
        proxy_set_header Host api.lovelive.tools;
    }
}

上記の設定は、上で作成したプロキシ サーバー (localhost:8000 で実行) にリクエストを転送します。

リバース プロキシ サーバーにおける私たちの仕事は、クライアントのリクエストを受け入れ、それを Baidu Wenxin Yiyan API インターフェイスに転送し、その応答をクライアントに返すことです。以下は簡単なサンプル コードです:

<?php
// 创建与API接口的连接
$api = stream_socket_client('tcp://api.lovelive.tools:80', $errno, $errstr, 30);
if ($api) {
    // 从客户端读取请求
    $request = file_get_contents('php://input');

    // 向API接口发送请求
    fwrite($api, $request);

    // 获取API的响应并返回给客户端
    while (!feof($api)) {
        echo fread($api, 8192);
    }
    fclose($api);
} else {
    header('HTTP/1.1 500 Internal Server Error');
    echo "与API接口连接失败";
}

上記のコードを reverse_proxy.php ファイルとして保存し、コマンド ラインから実行します:

php -S localhost:8000 reverse_proxy.php

現時点では、リバース プロキシ サーバーは localhost を実行しています。 :8000 ポートが起動しています。

次に、クライアントはリクエストを api.mydomain.com に直接送信できます。その後、リバース プロキシ サーバーはリクエストを Baidu Wenxin Yiyan API インターフェイスに転送し、その応答をクライアントに返します。

概要:
上記は、PHP コードを使用して、Baidu Wenxin Yiyan API インターフェイスのリクエスト プロキシとリバース プロキシを実装する方法です。プロキシとリバース プロキシを使用すると、アプリケーションを保護および最適化しながら、リクエストをより適切に制御できます。リクエスト プロキシであってもリバース プロキシであっても、実際のニーズに応じて構成および変更して、さまざまなビジネス ニーズを満たすことができます。

以上がPHP コードを使用して、Baidu Wenxinyiyan API インターフェイスのリクエスト プロキシとリバース プロキシを実装します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。