如何使用curl监控困难的网页

时间:2019-03-22 21:04:39

标签: javascript php web curl monitor

我正尝试监视this page并发送一封更改后的电子邮件。我尝试使用curl,但是那没用,因为它似乎是用JavaScript动态生成的。

2 个答案:

答案 0 :(得分:1)

您似乎要检查此URL,因为这是该页面获取其数据的位置:

https://api.finra.org/data/group/otcMarket/name/otcDailyList

在查看原始页面时,打开您的Chrome开发工具,然后点击“网络”标签。您会看到加载该页面的请求列表。查找对“ otcDailyList”的请求,它具有XHR类型。然后,您可以检查标头以查看所使用的请求标头和有效负载,以查看POST有效负载是什么。使用此信息,您可以使用curl模拟请求。

从我可以看到的请求有效载荷如下:

{
    "quoteValues":false,
    "delimiter":"|",
    "limit":100000,
    "sortFields":["-dailyListDatetime","+oldSymbolCode"],
    "dateRangeFilters":[
        {
            "fieldName":"dailyListDatetime",
            "startDate":"2019-04-27 00:00:00",
            "endDate":"2019-04-27 23:59:59"
        }
    ]
}

我假设您可以对其进行调整以获取所需的数据(例如调整日期)。

因此,在您的curl请求中,使用相同的请求标头并发布有效负载,以查看是否可以提取正确的数据。

破解一下,看看发现了什么。

答案 1 :(得分:0)

经过很多时间,并在其他一些程序员的帮助下,这是装袋包装和加标签的解决方案,对于正在阵列中请求载荷数据的其他人:

$RequestPayload = array(
            "quoteValues" => false,
            "delimiter" => "|",
            "limit" => 100000,
            "sortFields" => ["-dailyListDatetime","+oldSymbolCode"],
            "dateRangeFilters" => [array("fieldName"=>"dailyListDatetime","startDate"=>"2019-05-21 00:00:00","endDate"=>"2019-05-21 23:59:59")], 
            );

        $JSONEncoded = json_encode($RequestPayload);
        echo "<P> JSONEncoded: <P><P> $JSONEncoded <P><P>";

        $ReferLink = 'https://Website.com';

        $CurlHandle = curl_init();
        curl_setopt($CurlHandle, CURLOPT_URL, "https://api.Website.com");
        curl_setopt($CurlHandle, CURLOPT_REFERER, $ReferLink);
        curl_setopt($CurlHandle, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($CurlHandle, CURLOPT_HTTPHEADER,array('Content-Type: application/json')); 
        curl_setopt($CurlHandle, CURLOPT_POST, 1);
        curl_setopt($CurlHandle, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($CurlHandle, CURLOPT_POSTFIELDS,json_encode($RequestPayload));

        $output = curl_exec($CurlHandle);
        echo "<pre>";
        echo $output;

        die();