>백엔드 개발 >PHP 튜토리얼 >PHP 코드를 사용하여 Baidu Wenxinyiyan API 인터페이스의 요청 프록시 및 역방향 프록시 구현

PHP 코드를 사용하여 Baidu Wenxinyiyan API 인터페이스의 요청 프록시 및 역방향 프록시 구현

WBOY
WBOY원래의
2023-08-13 08:09:291238검색

PHP 코드를 사용하여 Baidu Wenxinyiyan API 인터페이스의 요청 프록시 및 역방향 프록시 구현

PHP 코드를 사용하여 Baidu Wenxin Yiyan API 인터페이스의 요청 프록시 및 역방향 프록시를 구현합니다

개요:
Baidu Wenxin Yiyan은 웹사이트, 앱 및 앱에서 사용할 수 있는 다양한 임의 문장과 유명 인사 인용문을 제공하는 API 인터페이스입니다. 다른 응용 프로그램. 그러나 어떤 이유로 인해 일부 제한을 피하거나 요청을 더 잘 제어하기 위해 프록시 또는 역방향 프록시의 도움으로 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 -x localhost:8000 https://api.lovelive.tools/api/SweetNothings/1

역방향 프록시:
역방향 프록시는 클라이언트가 요청을 보낼 때 해당 요청을 다른 서버로 전달하고 서버의 응답을 다음 서버로 반환하도록 서버를 구성하는 것을 의미합니다. 클라이언트. 이 접근 방식을 사용하면 로드 밸런싱과 고가용성을 달성할 수 있습니다.

먼저 Baidu Wenxin Yiyan API에 대한 모든 요청을 역방향 프록시 서버로 전달하도록 웹 서버를 구성해야 합니다. 다음은 샘플 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.