使用chatgpt来生成一个接口试试

前几天开通了一个gpt账号,网上已经介绍非常多的信息了,自己也来试试gpt的强大功能。最近几天刚好在开发SSL证书相关的,来看看获取证书的开始时间和结束时间,就是证书的有效期。

开始

  • 输入如何通过java或者php代码来查询域名SSL证书的开始日期和结束日期,生成如图

    (生成代码)

  • 没有java环境,没法测试,所以下面我直接使用php来测试,我官网安装的服务器就是php环境,非常方便测试,过去基本没有怎么接触过,能看懂一点吧,就是要的这个效果,O(∩_∩)O,生成的php代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
    $domain = "www.example.com";
    $port = 443;

    $g = stream_context_create(array("ssl" => array("capture_peer_cert" => true)));
    $r = stream_socket_client("ssl://$domain:$port", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $g);
    $cont = stream_context_get_params($r);
    $cert = openssl_x509_parse($cont["options"]["ssl"]["peer_certificate"]);

    $startDate = date(DATE_RFC2822, $cert['validFrom_time_t']);
    $endDate = date(DATE_RFC2822, $cert['validTo_time_t']);

    echo "Start Date: " . $startDate . "\n";
    echo "End Date: " . $endDate . "\n";
    ?>
  • 域名换成我自己的,直接执行,ok。

    (执行结果)

  • 日期格式修改下,改成长日期格式

    (显示日期格式)

  • 根据提示,date里面的格式修改下,执行

    (修改日期格式)

  • 为了以后调用方便,我们把它做成接口,使用json把域名传入,再用json来得到证书的日期信息,输入如下:

    (转接口)

  • 生成的代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <?php
    header('Content-Type: application/json');

    function getSSLCertificateDates($domain) {
    $port = 443;
    $timeout = 30;

    $context = stream_context_create(["ssl" => ["capture_peer_cert" => true]]);
    $client = stream_socket_client("ssl://$domain:$port", $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, $context);

    if ($client) {
    $params = stream_context_get_params($client);
    $cert = openssl_x509_parse($params["options"]["ssl"]["peer_certificate"]);

    $startDate = date('Y-m-d', $cert['validFrom_time_t']);
    $endDate = date('Y-m-d', $cert['validTo_time_t']);

    return [
    "domain" => $domain,
    "start_date" => $startDate,
    "end_date" => $endDate
    ];
    } else {
    return [
    "domain" => $domain,
    "error" => "Unable to retrieve certificate"
    ];
    }
    }

    // 获取输入的JSON数据
    $input = file_get_contents('php://input');
    $data = json_decode($input, true);

    if (isset($data['domain'])) {
    $domain = $data['domain'];
    $result = getSSLCertificateDates($domain);
    echo json_encode($result);
    } else {
    echo json_encode(["error" => "Invalid input"]);
    }
    ?>
  • 只是复制,使用,通过在线post来测试如下:

    (接口测试完成)

  • 到这里完美完成,一点都不用知道php都可以,一个实用的例子就这样完成,前后2,3分钟。

为了后面实际调用,我后面还让gpt加上了异常处理,返回错误信息,加了error和errormsg两项。

实际运行效果

  • 加了异常保护,把域名少输入一个w之后,执行效果:

    (执行效果)

赶紧吧,上面使用的是免费版,还没有使用最新带o的版本。

🖊编辑文章