【问题标题】:Is There Any Solution To Check a Webpage is Mobile Friendly (C#)是否有任何解决方案来检查网页是否适合移动设备(C#)
【发布时间】:2015-12-26 04:57:48
【问题描述】:

我想知道,由于大多数网站都使用响应式主题或移动友好,是否有任何解决方案可以检查给定的 url 是否以编程方式对移动友好。

google 中存在类似的解决方案(手动)-https://www.google.co.uk/webmasters/tools/mobile-friendly/

你们对可能的解决方案有什么想法吗?

【问题讨论】:

  • 检查此链接是否对您有帮助:blog.shaharia.com/google-mobile-friendly-test-in-php
  • @David Taiaroa 我现在正在检查它
  • 嗨,仅供参考,我让它在 PHP 中运行良好
  • @DavidTaiaroa 我试过你的链接,但它给出的结果是桌面速度,而不是移动速度或移动友好,虽然视觉一个提供移动速度但 api 没有显示它。
  • 嗨,我在下面添加了更多关于我目前所知道的细节。 “它不是(给予)移动速度之类的东西”......嗯,我看不出这是在哪里显示@@google.co.uk/webmasters/tools/mobile-friendly。也许我错过了什么

标签: c# winforms mobile responsive-design


【解决方案1】:

以下使用this code from GitHub

(1) 从Google Developers Console 获取您的 Google API 密钥

(2) 自定义以下 php 代码,或以编程方式生成。请注意,在第 19 行,您需要使用自己的 API 密钥并输入自己的 URL

 <?php
    /**
     * @param $url
     * @param $apiKey
     * @return mixed
     */
    function isMobileReady($url, $apiKey)
    {
        $curl = curl_init();
        curl_setopt_array($curl, array(
            CURLOPT_RETURNTRANSFER => 1,
            CURLOPT_URL => 'https://www.googleapis.com/pagespeedonline/v3beta1/mobileReady?key='.$apiKey.'&url='.$url.'&strategy=mobile',
        ));
        $resp = curl_exec($curl);
        curl_close($curl);
        return $resp;
    }
    //result as an array look for  ["pass"]=> bool(true) } or false
    $result = json_decode(isMobileReady('https://www.panchroma.ca/en/', 'AIzaSyDSrus1NcAIFXOWQjoAgwEOVChX_KEnhg_dummy_api_key'), true);
    var_dump($result);

(3) pagespeed 结果被转储到屏幕上,我认为移动友好测试结果最重要的信息靠近顶部。寻找

{ ["USABILITY"]=> array(2) { ["score"]=> int(98) ["pass"]=> bool(true) } }  

分数是您的 Google PageSpeed 分数 [0-100] 并且“通过”布尔值是 true 或 false,true 相当于通过了Mobile Friendly Test

满分to this author

===

更新

针对如何测试多个 URL 的问题,我有以下一个建议。
here's the live result

这会将很多东西转储到页面,搜索“分数”以查看 3 个示例 URL 的移动设备友好测试结果

<?php
    /**
     * @param $url
     * @param $apiKey
     * @return mixed
     */
    function isMobileReady($url, $apiKey)
    {
        $curl = curl_init();
        curl_setopt_array($curl, array(
            CURLOPT_RETURNTRANSFER => 1,
            CURLOPT_URL => 'https://www.googleapis.com/pagespeedonline/v3beta1/mobileReady?key='.$apiKey.'&url='.$url.'&strategy=mobile',
        ));
        $resp = curl_exec($curl);
        curl_close($curl);
        return $resp;
    }

    $websites = array( "https://www.panchroma.ca/en/", "https://www.google.ca","https://www.youtube.com" );
    foreach($websites as $website) { 

        $result = json_decode(isMobileReady($website, 'AIzaSyDSrus1NcAIFXOWQjoAgwEOVChX_KEnhg_dummy_api_key'), true);
        var_dump($result);
    }

?>

希望这会有所帮助!

【讨论】:

  • 你能确认 api url 是有效的吗?我正在使用我的 api 和 url 手动尝试,但我得到“无效值'stackoverflow.com''。值必须匹配以下正则表达式:'http(s)?://.*'
  • @AlstonAntony ,我仔细检查过,一切似乎都对我有用。澄清一下,对于你想要的 URL 'stackoverflow.com'(带有 http:// ,没有引号)。为了生成 API 密钥,我创建了一个新项目,启用了 API,选择了 pagespeed 洞察 API,然后选择了服务器密钥,不确定其中一些步骤有多重要。
  • 我已经尝试了上面的代码。它正在工作。但我需要同时检查多个网站。我尝试使用表单。它只适用于一个网站。它只给出最后一个给定网站的结果。如何更改上述代码以使用表单同时检查多个网站。
  • @Revathi,您是否尝试创建要检查的 URL 数组?然后通过遍历数组,逐个输出结果来检查每个URL?
  • $content = $_POST['content_name']; $lines = explode("\n", $content); foreach($lines as $line) { $result = json_decode(isMobileReady($line, 'AIzaSyDSrus1NcAIFXOWQjoAgwEOVChX_KEnhg_dummy_api_key'), true); var_dump($result);我已经替换了谷歌 api 密钥并尝试过这样。它只给出最后一个给定结果的结果。我从文本区域获取输入。
【解决方案2】:

https://console.developers.google.com/apis/api/pagespeedonline-json.googleapis.com/overview?project=citric-program-395&hl=pt-br&duration=P30D 中获取一个 PageSpeed Insights API KEY 并创建一个凭据,按照 google 的说明进行操作。

在您的项目中添加对 Newtonsoft.Json 的引用。

在 C# (6.0) 和 .NET 4.5.2 中,我做了一些这样的操作:

String yourURL = "https://www.google.com.br";
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("https://www.googleapis.com");
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
var response = client.GetAsync($"/pagespeedonline/v3beta1/mobileReady?url={yourURL }&key=AIzaSyArsacdp79HPFfRZRvXaiLEjCD1LtDm3ww").Result;
string json = response.Content.ReadAsStringAsync().Result;
JObject obj = JObject.Parse(json);
bool isMobileFriendly = obj.Value<JObject>("ruleGroups").Value<JObject>("USABILITY").Value<bool>("pass");

【讨论】:

    猜你喜欢
    • 2015-08-13
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-22
    相关资源
    最近更新 更多