【发布时间】:2020-11-26 14:40:16
【问题描述】:
我需要从 PHP 脚本下载 Azure Public ServiceTag JSON。不幸的是,下载需要手动步骤(AWS 提供通过其网络直接下载 json 文件)。
下载链接如下:https://www.microsoft.com/en-us/download/confirmation.aspx?id=57064
希望有些人知道如何点击下载链接..
提前致谢!
【问题讨论】:
我需要从 PHP 脚本下载 Azure Public ServiceTag JSON。不幸的是,下载需要手动步骤(AWS 提供通过其网络直接下载 json 文件)。
下载链接如下:https://www.microsoft.com/en-us/download/confirmation.aspx?id=57064
希望有些人知道如何点击下载链接..
提前致谢!
【问题讨论】:
您可以尝试以下Service Tags -list REST API 端点:
GET https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/serviceTags?api-version=2020-05-01
REST API 的建议,因为您想从 PHP 调用。您必须传递授权标头。
其他程序化方法
Get-AzNetworkServiceTag Powershell Commandlet
$serviceTags = Get-AzNetworkServiceTag -Location eastus2
az network list-service-tags Azure CLI 命令行开关
az network list-service-tags --location
[--subscription
]
【讨论】:
如果您可以像@Satya V 的回答那样使用适当的 api 来做到这一点,它是比网络抓取更好的解决方案,但如果您无权使用 api(似乎您需要一个 subscriptionId,无论如何是,使用api),
您可以使用 XPath //a[contains(.,'click here to download manually')] 获取下载链接
这似乎有效:
<?php
$ch = curl_init();
curl_setopt_array($ch,array(
CURLOPT_URL=>"https://www.microsoft.com/en-us/download/confirmation.aspx?id=57064",
// setting CURLOPT_COOKIEFILE to emptystring enables the cookie engine.
CURLOPT_COOKIEFILE=>"",
CURLOPT_RETURNTRANSFER=>1,
));
$html=curl_exec($ch);
$domd=new DOMDocument();
@$domd->loadHTML($html);
$xp=new DOMXPath($domd);
$download_url = $xp->query("//a[contains(.,'click here to download manually')]")->item(0)->getAttribute("href");
//var_dump($download_url);
curl_setopt_array($ch,array(
CURLOPT_RETURNTRANSFER=>0,
CURLOPT_URL=>$download_url
));
curl_exec($ch);
【讨论】: