首页 > 解决方案 > 通过nodejs或者php访问这个地址被阿里云屏蔽了,如何在nodejs或者php中访问这个链接的正确返回值?

问题描述

通过nodejs或者php访问这个地址被阿里云拦截了,但是在浏览器中直接访问这个地址可以返回json数据,请问如何在nodejs或者php中访问这个链接的正确返回值呢?

https://mall.xsyxsc.com/user/product/indexWindows

在浏览器上直接访问会返回如下数据:</p>

{"rspCode":"illegalArgumentError",","rspDesc":"indexWindowsareId: 区域不能不能为空, indexWindowsBrandHouse: 是否.openid为空, indexWindows.storeId: 是否为空","data" :无效的}

使用nodejs https或者php curl,会返回如下提示:</p>

您很抱歉,由于您有可能对网站造成,的潜在访问权限被访问。URL 的请求 ID 是:254642583e433

下面是我用php请求的例子:</p>

<?php
    function getRequest($url){
        $headerArray = [
            'Host'=>'mall.xsyxsc.com',
            'User-Agent'=>'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0',
            'Accept'=>'*/*',
            'Accept-Language'=>'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
            'Accept-Encoding'=>'gzip, deflate',
            'Cache-Control'=>'max-age=0'    
        ];
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch,CURLOPT_HTTPHEADER,$headerArray);
        $output = curl_exec($ch);
        curl_close($ch);
        //将返回的json对象解码成数组对象并返回
        //$output = json_decode($output,true);
        return $output;
    }

    $res = getRequest('https://mall.xsyxsc.com/user/product/indexWindows');
    // $res = getRequest('https://www.baidu.com/');
    exit($res);

标签: phpnode.jshttp

解决方案


烧功

它看起来像防火墙规则。当您使用 curl 时,这是一个不同的请求。您的阿里云防火墙阻止了该访问,因此您收到 405 错误。

您可以在 curl 请求之后立即打开 Web 应用程序防火墙日志,这样您就可以发现问题并配置一些允许该请求类型或该源 IP 地址的防火墙规则。

在此处查找有关如何检查防火墙日志的更多信息:https ://www.alibabacloud.com/help/doc-detail/100503.htm?spm=a2c63.l28256.b99.90.20a82f0dHJsHV1

在这里找到如何配置策略:https ://www.alibabacloud.com/help/doc-detail/42780.htm?spm=a2c63.p38356.879954.7.49fa1f5eoVOECk#concept-gy3-jbp-p2b


推荐阅读