检查 Shopify 中是否存在 url

Check whether a url exists or not in Shopify

如何验证 Shopify 商店的 URL?给定 URL 我怎么知道它是有效的 URL 还是 404 页面未找到?我正在使用 PHP。我试过使用 PHP get_headers().

<?php
$getheadersvalidurlresponse= get_headers('https://test072519.myshopify.com/products/test-product1'); // VALID URL
print_r($getheadersvalidurlresponse);

$getheadersinvalidurlresponse= get_headers('https://test072519.myshopify.com/products/test-product1451'); // INVALID URL
print_r($getheadersinvalidurlresponse); 
?>

但是对于有效和无效 URLs,我得到了相同的响应。

Array
(
    [0] => HTTP/1.1 403 Forbidden
    [1] => Date: Wed, 08 Jul 2020 13:27:52 GMT
    [2] => Content-Type: text/html
    [3] => Connection: close
   ..............
)

我期待有效 URL 的 200 OK 状态代码和无效 URL 的 404。

任何人都可以使用 PHP 帮助检查给定的 shopify URL 是否有效?

提前致谢。

发生这种情况是因为 Shopify 区分机器人请求和实际的真实请求,以避免在一定程度上拒绝服务攻击。要解决此问题,您必须指定 user-agent header 来模拟浏览器请求以获取适当的 HTTP 响应。

作为一项改进,您可以发出 HEAD 请求而不是 GET 请求(因为 get_headers() 默认使用 GET 请求,如 examples 中所述) 因为这里我们只关心响应元数据而不关心响应 body.

片段:

<?php

$opts = array(
  'http'=>array(
    'method'=> "HEAD",
    'header'=> "User-agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36" 
  )
);


$headers1 = get_headers('https://test072519.myshopify.com/products/test-product1',0,stream_context_create($opts));
$headers2 = get_headers('https://test072519.myshopify.com/products/test-product1451',0,stream_context_create($opts));
echo "<pre>";
print_r($headers1);
print_r($headers2);