Heim > Backend-Entwicklung > PHP-Tutorial > Verwenden Sie PHP-Code, um den Anforderungs-Proxy und den Reverse-Proxy der Baidu Wenxinyiyan-API-Schnittstelle zu implementieren

Verwenden Sie PHP-Code, um den Anforderungs-Proxy und den Reverse-Proxy der Baidu Wenxinyiyan-API-Schnittstelle zu implementieren

WBOY
Freigeben: 2023-08-13 08:10:02
Original
1240 Leute haben es durchsucht

Verwenden Sie PHP-Code, um den Anforderungs-Proxy und den Reverse-Proxy der Baidu Wenxinyiyan-API-Schnittstelle zu implementieren

Verwenden Sie PHP-Code, um den Anforderungs-Proxy und den Reverse-Proxy der API-Schnittstelle von Baidu Wenxin Yiyan zu implementieren andere Anwendungen. Aus bestimmten Gründen müssen wir die API jedoch möglicherweise mithilfe eines Proxys oder Reverse-Proxys aufrufen, um einige Einschränkungen zu vermeiden oder die Anforderungen besser steuern zu können.

Proxy anfordern:
Proxy anfordern bedeutet, dass wir unsere Anfrage an einen Zwischenserver (Proxyserver) senden und der Proxyserver sie dann in seinem Namen an die API-Schnittstelle von Baidu Wenxin Yiyan sendet. Diese Methode kann unsere echte IP-Adresse verbergen, die Anfrage nach erstklassigen Informationen verschleiern und die Erfolgsquote der Anfrage verbessern.

Zuerst müssen wir einen Proxyserver erstellen. Sie können PHP verwenden, um einen einfachen HTTP-Server zu erstellen, der einen bestimmten Port überwacht, z. B. 8000. Das Folgende ist ein einfacher Beispielcode:

<?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);
Nach dem Login kopieren

Speichern Sie den obigen Code als Proxy.php-Datei und führen Sie ihn über die Befehlszeile aus:

php proxy.php
Nach dem Login kopieren

Zu diesem Zeitpunkt läuft unser Proxyserver auf Port 127.0.0.1:8000.

Als nächstes können wir die Anfrage an die API-Schnittstelle von Baidu Wenxin Yiyan senden, indem wir eine Anfrage an den Proxyserver stellen und das Antwortergebnis erhalten. Zum Beispiel können wir das Curl-Befehlszeilentool verwenden, um eine Anfrage zu senden:

curl -x localhost:8000 https://api.lovelive.tools/api/SweetNothings/1
Nach dem Login kopieren

Reverse-Proxy:

Reverse-Proxy bezieht sich auf die Konfiguration des Servers, um die Anfrage an einen anderen Server weiterzuleiten, wenn der Client eine Anfrage sendet, und die Antwort des Servers an diesen zurückzugeben der Kunde. Mit diesem Ansatz können Lastausgleich und hohe Verfügbarkeit erreicht werden.

Zuerst müssen wir den Webserver so konfigurieren, dass er alle Anfragen an die Baidu Wenxin Yiyan API an unseren Reverse-Proxy-Server weiterleitet. Hier ist eine Beispiel-Nginx-Konfigurationsdatei:

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

Die obige Konfiguration leitet die Anfrage an den oben erstellten Proxyserver weiter (der auf localhost:8000 läuft).

Im Reverse-Proxy-Server besteht unsere Aufgabe darin, die Anfrage des Clients anzunehmen, sie an die API-Schnittstelle von Baidu Wenxin Yiyan weiterzuleiten und ihre Antwort an den Client zurückzugeben. Das Folgende ist ein einfacher Beispielcode:

<?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接口连接失败";
}
Nach dem Login kopieren

Speichern Sie den obigen Code als Datei „reverse_proxy.php“ und führen Sie ihn über die Befehlszeile aus:

php -S localhost:8000 reverse_proxy.php
Nach dem Login kopieren

Zu diesem Zeitpunkt läuft unser Reverse-Proxy-Server auf dem Port „localhost:8000“.

Als nächstes kann der Client eine Anfrage direkt an api.mydomain.com senden, und dann leitet der Reverse-Proxy-Server die Anfrage an die API-Schnittstelle von Baidu Wenxin Yiyan weiter und gibt seine Antwort an den Client zurück.

Zusammenfassung:

Oben erfahren Sie, wie Sie PHP-Code verwenden, um den Anforderungs-Proxy und den Reverse-Proxy der Baidu Wenxin Yiyan-API-Schnittstelle zu implementieren. Durch Proxys und Reverse-Proxys können wir Anfragen besser kontrollieren und gleichzeitig unsere Anwendungen schützen und optimieren. Unabhängig davon, ob es sich um einen Anforderungs-Proxy oder einen Reverse-Proxy handelt, kann er entsprechend den tatsächlichen Anforderungen konfiguriert und geändert werden, um unterschiedliche Geschäftsanforderungen zu erfüllen.

Das obige ist der detaillierte Inhalt vonVerwenden Sie PHP-Code, um den Anforderungs-Proxy und den Reverse-Proxy der Baidu Wenxinyiyan-API-Schnittstelle zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage