Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Gunakan kod PHP untuk melaksanakan proksi permintaan dan proksi terbalik antara muka API Baidu Wenxinyiyan

Gunakan kod PHP untuk melaksanakan proksi permintaan dan proksi terbalik antara muka API Baidu Wenxinyiyan

WBOY
WBOYasal
2023-08-13 08:09:291210semak imbas

Gunakan kod PHP untuk melaksanakan proksi permintaan dan proksi terbalik antara muka API Baidu Wenxinyiyan

Gunakan kod PHP untuk melaksanakan proksi permintaan dan proksi terbalik antara muka API Baidu Wenxin Yiyan

Ikhtisar:
Baidu Wenxin Yiyan ialah antara muka API yang menyediakan pelbagai ayat rawak dan petikan selebriti, yang boleh digunakan Laman web, Apl dan aplikasi lain. Tetapi atas sebab tertentu, kami mungkin perlu memanggil API dengan bantuan proksi atau proksi terbalik untuk mengelakkan beberapa pengehadan atau mengawal permintaan dengan lebih baik.

Minta proksi:
Minta proksi bermaksud menghantar permintaan kami ke pelayan perantaraan (pelayan proksi), dan kemudian pelayan proksi menghantarnya ke antara muka API Baidu Wenxin Yiyan bagi pihaknya. Kaedah ini boleh menyembunyikan alamat IP sebenar kami, menyamarkan permintaan untuk maklumat kelas pertama dan meningkatkan kadar kejayaan permintaan tersebut.

Pertama, kita perlu mencipta pelayan proksi Anda boleh menggunakan PHP untuk mencipta pelayan HTTP mudah yang mendengar pada port tertentu, seperti 8000. Berikut ialah contoh kod mudah:

<?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);

Simpan kod di atas sebagai fail proxy.php dan jalankannya melalui baris arahan:

php proxy.php

Pada masa ini, pelayan proksi kami berjalan pada port 127.0.0.1:8000.

Seterusnya, kami boleh menghantar permintaan ke antara muka API Baidu Wenxin Yiyan dengan membuat permintaan kepada pelayan proksi dan mendapatkan hasil respons. Sebagai contoh, kita boleh menggunakan alat baris arahan curl untuk menghantar permintaan:

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

Proksi songsang:
Proksi songsang merujuk kepada mengkonfigurasi pelayan untuk memajukan permintaan ke pelayan lain apabila pelanggan menghantar permintaan, dan mengembalikan respons pelayan kepada pelanggan. Pendekatan ini boleh mencapai pengimbangan beban dan ketersediaan tinggi.

Pertama, kami perlu mengkonfigurasi pelayan web untuk memajukan semua permintaan ke API Baidu Wenxin Yiyan ke pelayan proksi terbalik kami. Berikut ialah contoh fail konfigurasi Nginx:

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

Konfigurasi di atas memajukan permintaan kepada pelayan proksi yang kami buat di atas (berjalan pada localhost:8000).

Dalam pelayan proksi terbalik, tugas kami ialah menerima permintaan pelanggan, memajukannya ke antara muka API Baidu Wenxin Yiyan dan mengembalikan responsnya kepada pelanggan. Berikut ialah contoh kod mudah:

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

Simpan kod di atas sebagai fail reverse_proxy.php dan jalankannya melalui baris arahan:

php -S localhost:8000 reverse_proxy.php

Pada masa ini, pelayan proksi terbalik kami berjalan pada port localhost:8000.

Seterusnya, pelanggan boleh menghantar permintaan terus ke api.mydomain.com, dan kemudian pelayan proksi terbalik akan memajukan permintaan itu ke antara muka API Baidu Wenxin Yiyan dan mengembalikan responsnya kepada pelanggan.

Ringkasan:
Di atas ialah kaedah menggunakan kod PHP untuk melaksanakan proksi permintaan dan proksi terbalik antara muka API Baidu Wenxin Yiyan. Melalui proksi dan proksi terbalik, kami boleh mengawal permintaan dengan lebih baik sambil melindungi dan mengoptimumkan aplikasi kami. Sama ada proksi permintaan atau proksi terbalik, ia boleh dikonfigurasikan dan diubah suai mengikut keperluan sebenar untuk memenuhi keperluan perniagaan yang berbeza.

Atas ialah kandungan terperinci Gunakan kod PHP untuk melaksanakan proksi permintaan dan proksi terbalik antara muka API Baidu Wenxinyiyan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn