PHP - 挖掘 API

PHP - Tunneling the API

我不知道这个方法叫什么:反向代理、隧道、绕过?

想象一下,我们有 3 个网站:

http://exampleapi.com - API or Service provider
http://example1.com - I bought the API for this Website from example.com
http://example2.com - My New website

1。我为 example1.com 购买了 API 或支付网关服务,该网站没有任何内容、表格、数据。 (只是为了得到API)

2。现在,我想在 example2.com | 之间创建隧道 | example1.com | exampleapi.com。我的意思是,从 example2.com 获取所有请求,发送到 example1.com 并将数据传递给 exampleapi.com.

3。响应后,exampleapi.com.com 将数据发送到 example1.com,example2.com 将接收数据并显示给用户。

下面是一个如何编写代码的示例。你可以像我一样在一个站点上模拟这个。在我的网站上,我创建了 3 个文件夹:

  • 示例 1
  • 示例 2
  • exampleapi

在每个文件下,我创建了一个 index.php 文件。让我们看看他们。

你的网站。com/exampleapi/index.php

<?php
header("Content-Type: application/text");
echo 'Titanic vs. Iceberg';

这个输出是明文

Titanic vs. Iceberg

我们将从示例 1 中调用此 API。

你的网站。com/example1/index.php

该站点的代码将拥有自己的数据 and 将从 exampleapi/index.php 中提取数据,如下所示:

<?php

// call exampleapi
$url = 'https://yoursite.com/exampleapi/index.php';
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json'
]); 
$response = curl_exec($curl);
curl_close($curl);

// show data
header("Content-Type: application/json");
$data = [ 
    'name' => 'John',
    'age' => 25, 
    'data_from_exampleapi' => $response
];
echo json_encode($data);

此代码的输出将是

{"name":"John","age":25,"data_from_exampleapi":"Titanic vs. Iceberg"}

我们将从示例 2 中调用它。

你的网站。com/example2/index.php

这将是您的网页。我模拟了一个电话。按下按钮时,PHP 将向 example1/index.php 发送请求。并且该页面将向exampleapi/index.php发送请求,获取数据,将获取的数据与自己的数据组合并发送回example2/index.php

<?php
function fetchInformation()
{
    $url = 'https://yoursite.com/example1/index.php';
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HTTPHEADER, [
        'Content-Type: application/json'
    ]); 
    $response = curl_exec($curl);
    curl_close($curl);

    return $response;
}
?>
<!doctype html>
<body>
    <form action="./" method="get">
        <p> 
            When you press this button, PHP will try to get data from
            example1/index.php and show information
            below
        </p>
        <input type="submit" value="Get data from API" name="mybutton" id="mybutton">
    </form>

    <?php
    // only if button is pressed, fetch information
    if ($_SERVER['REQUEST_METHOD'] === 'GET')
    {   
        if ( ! is_null($_REQUEST['mybutton']) )
        {   
            echo '<h3>Information received</h3>';
            $response = fetchInformation();
            echo '<p>' . $response . '</p>';
        }   
    }   
    ?>  
</body>

当您访问您的网站时。com/example2/index。php,您会看到类似这样的内容:

当你按下按钮时,example2/index.php -> 调用 example1/index.php -> 调用 exampleapi/index.php .数据反向,你会看到这样的输出:

这向您展示了如何使用 PHP 一个页面调用另一页面上的 API。如果您控制着另一个页面,您可以调整代码以从 yet-another-page.

调用 API