{"componentChunkName":"component---src-templates-blog-detail-tsx","path":"/blog/2019-07-15-website-monitor","result":{"data":{"currentBlog":{"id":"344dc497-fd61-5441-9106-d593870bad6a","frontmatter":{"thumbnail":"https://img.serverlesscloud.cn/2020414/1586850670017-%E5%B0%81%E9%9D%A2%E5%9B%BE%20%283%29.png","authors":["Anycodes"],"categories":["user-stories"],"date":"2019-07-15T00:00:00.000Z","title":"网站监控脚本的实现","description":"本文将分享如何通过腾讯云云函数 SCF 开发一个简单的脚本，进行网站监控","authorslink":["https://www.zhihu.com/people/liuyu-43-97"],"translators":null,"translatorslink":null,"tags":["监控脚本","Serverless"],"keywords":"Serverless 应用服务端,Serverless 应用,Serverless Web 后端","outdated":null},"wordCount":{"words":157,"sentences":54,"paragraphs":53},"fileAbsolutePath":"/opt/build/repo/content/blog/2019-07-15-website-monitor.md","fields":{"slug":"/blog/2019-07-15-website-monitor/","keywords":["python","serverless","无服务器","无服务器云函数","云函数","电信","联通","江苏","多线","广东","final","耗时"]},"html":"<p>很多小伙伴都有自己的博客，或者做过 Web，但是自己的 Web 是否健康？当前状态是否可访问？网站挂了谁的锅？这些问题都可以用相关的<a href=\"https://link.zhihu.com/?target=https%3A//cloud.tencent.com/product/cat%3Ffrom%3D10680\">网站监控</a>脚本进行监测。</p>\n<h2 id=\"▎基本监控脚本\"><a href=\"#%E2%96%8E%E5%9F%BA%E6%9C%AC%E7%9B%91%E6%8E%A7%E8%84%9A%E6%9C%AC\" aria-label=\"▎基本监控脚本 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><strong>▎基</strong>本监控脚本</h2>\n<p>假如说，目前想要监控的网站是 <a href=\"https://link.zhihu.com/?target=https%3A//www.anycodes.cn/\">https://www.anycodes.cn</a>，想知道这个网站是否可用，那么可以通过 Python 语言编写一个脚本，来查看这个网站的状态，获取他的 http<em>status</em>code，如果该数值为 200，则说明网站可用，如果非 200，则说明网站不可用。</p>\n<p>首先，打开腾讯云，登陆并选择无服务器云函数业务，创建我们的监控脚本：</p>\n<p><img src=\"https://img.serverlesscloud.cn/tmp/v2-7eb0d6a8ec82104052643d090753eea2_1440w-20200414233841480.jpg\" alt=\"img\"></p>\n<p>编写代码：</p>\n<div\n              class=\"gatsby-code-button-container\"\n              data-toaster-id=\"90153404812145250000\"\n              data-toaster-class=\"gatsby-code-button-toaster\"\n              data-toaster-text-class=\"gatsby-code-button-toaster-text\"\n              data-toaster-text=\"代码复制成功\"\n              data-toaster-duration=\"3500\"\n              onClick=\"copyToClipboard(`# -*- coding: utf8 -*-\nimport json\nimport urllib.request\n\ndef getStatusCode(url):\n    return urllib.request.urlopen(url).getcode()\n\ndef main_handler(event, context):\n    if getStatusCode(&quot;https://www.anycodes.cn&quot;) == 200:\n        print(&quot;网站可访问&quot;)`, `90153404812145250000`)\"\n            >\n              <div\n                class=\"gatsby-code-button\"\n                data-tooltip=\"\"\n              >\n                复制代码<svg class=\"gatsby-code-button-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M16 1H2v16h2V3h12V1zm-1 4l6 6v12H6V5h9zm-1 7h5.5L14 6.5V12z\"/></svg>\n              </div>\n            </div>\n<div class=\"gatsby-highlight\" data-language=\"python3\"><pre class=\"language-python3\"><code class=\"language-python3\"># -*- coding: utf8 -*-\nimport json\nimport urllib.request\n\ndef getStatusCode(url):\n    return urllib.request.urlopen(url).getcode()\n\ndef main_handler(event, context):\n    if getStatusCode(&quot;https://www.anycodes.cn&quot;) == 200:\n        print(&quot;网站可访问&quot;)</code></pre></div>\n<p>测试结果：</p>\n<p><img src=\"https://img.serverlesscloud.cn/tmp/v2-64423fd347a898570a902e3a317fdafc_1440w-20200414233849717.jpg\" alt=\"img\"></p>\n<p>可以看到网站是通的，在控制台输出相对应的结果。</p>\n<p>但如果网站返回的不是 200，应该怎么办呢？可否通过短信或者邮件进行告警？</p>\n<p>以邮件告警方法为例，我们再写一个发送邮件的方法并整合进去：</p>\n<div\n              class=\"gatsby-code-button-container\"\n              data-toaster-id=\"79802932979678970000\"\n              data-toaster-class=\"gatsby-code-button-toaster\"\n              data-toaster-text-class=\"gatsby-code-button-toaster-text\"\n              data-toaster-text=\"代码复制成功\"\n              data-toaster-duration=\"3500\"\n              onClick=\"copyToClipboard(`# -*- coding: utf8 -*-\nimport ssl\nimport json\nimport smtplib\nimport urllib.request\nfrom email.mime.text import MIMEText\nfrom email.header import Header\n\nssl._create_default_https_context = ssl._create_unverified_context\n\ndef sendEmail(content, to_user):\n    sender = 'service@anycodes.cn'\n    receivers = [to_user]\n\n    mail_msg = content\n    message = MIMEText(mail_msg, 'html', 'utf-8')\n    message['From'] = Header(&quot;网站监控&quot;, 'utf-8')\n    message['To'] = Header(&quot;站长&quot;, 'utf-8')\n\n    subject = &quot;网站监控告警&quot;\n    message['Subject'] = Header(subject, 'utf-8')\n\n    try:\n        smtpObj = smtplib.SMTP_SSL(&quot;smtp.exmail.qq.com&quot;, 465)\n        smtpObj.login('service@anycodes.cn', '密码')\n        smtpObj.sendmail(sender, receivers, message.as_string())\n    except smtplib.SMTPException:\n        pass\n\n\ndef getStatusCode(url):\n    return urllib.request.urlopen(url).getcode()\n\n\ndef main_handler(event, context):\n    url = &quot;http://www.anycodes.cn&quot;\n    if getStatusCode(url) == 200:\n        sendEmail(&quot;您的网站%s可以访问！&quot; % (url), &quot;service@52exe.cn&quot;)`, `79802932979678970000`)\"\n            >\n              <div\n                class=\"gatsby-code-button\"\n                data-tooltip=\"\"\n              >\n                复制代码<svg class=\"gatsby-code-button-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M16 1H2v16h2V3h12V1zm-1 4l6 6v12H6V5h9zm-1 7h5.5L14 6.5V12z\"/></svg>\n              </div>\n            </div>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\"># -*- coding: utf8 -*-\nimport ssl\nimport json\nimport smtplib\nimport urllib.request\nfrom email.mime.text import MIMEText\nfrom email.header import Header\n\nssl._create_default_https_context = ssl._create_unverified_context\n\ndef sendEmail(content, to_user):\n    sender = &#39;service@anycodes.cn&#39;\n    receivers = [to_user]\n\n    mail_msg = content\n    message = MIMEText(mail_msg, &#39;html&#39;, &#39;utf-8&#39;)\n    message[&#39;From&#39;] = Header(&quot;网站监控&quot;, &#39;utf-8&#39;)\n    message[&#39;To&#39;] = Header(&quot;站长&quot;, &#39;utf-8&#39;)\n\n    subject = &quot;网站监控告警&quot;\n    message[&#39;Subject&#39;] = Header(subject, &#39;utf-8&#39;)\n\n    try:\n        smtpObj = smtplib.SMTP_SSL(&quot;smtp.exmail.qq.com&quot;, 465)\n        smtpObj.login(&#39;service@anycodes.cn&#39;, &#39;密码&#39;)\n        smtpObj.sendmail(sender, receivers, message.as_string())\n    except smtplib.SMTPException:\n        pass\n\n\ndef getStatusCode(url):\n    return urllib.request.urlopen(url).getcode()\n\n\ndef main_handler(event, context):\n    url = &quot;http://www.anycodes.cn&quot;\n    if getStatusCode(url) == 200:\n        sendEmail(&quot;您的网站%s可以访问！&quot; % (url), &quot;service@52exe.cn&quot;)</code></pre></div>\n<p>点击测试查看结果：</p>\n<p><img src=\"https://img.serverlesscloud.cn/tmp/v2-e25a3f7289ca5f069d9ee34f53a3c2a8_1440w-20200414233904396.jpg\" alt=\"img\"></p>\n<p>此时，手机上面会接收到以下提醒：</p>\n<p><img src=\"https://img.serverlesscloud.cn/tmp/v2-c47c365f143a582f5986d2463f095c75_1440w-20200414233859973.jpg\" alt=\"img\"></p>\n<p>由于要监控网站不可访问的状态，所以修改一下判断：</p>\n<p><img src=\"https://img.serverlesscloud.cn/tmp/v2-ee9489b490287c2bf4b3a9e0fe3df384_1440w-20200414233911031.png\" alt=\"img\"></p>\n<p>修改完成之后，就可以保存了。考虑到这个脚本需要每隔一段时间都要触发一次，因此可以设置一个定时触发。</p>\n<p><img src=\"https://img.serverlesscloud.cn/tmp/v2-4bd4c5de90d380e4ac6ce2733bdc479b_1440w-20200414233915578.jpg\" alt=\"img\"></p>\n<p>触发方式里面增加定时触发，并且保存即可，同时点击右上角的发布新版本：</p>\n<p><img src=\"https://img.serverlesscloud.cn/tmp/v2-eb8a96d514cfd20d18d278a91a9105b4_1440w-20200414233920416.jpg\" alt=\"img\"></p>\n<p>此时，网站状态监控就已经上线了！</p>\n<h2 id=\"▎升级监控脚本\"><a href=\"#%E2%96%8E%E5%8D%87%E7%BA%A7%E7%9B%91%E6%8E%A7%E8%84%9A%E6%9C%AC\" aria-label=\"▎升级监控脚本 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><strong>▎</strong>升级监控脚本</h2>\n<p>有人问了，这样简单的一个脚本，意义大么？</p>\n<p>其实意义很大，因为这个脚本，只是抛砖引玉，还有 Plus 版本 —— 单纯根据状态判断靠谱么？要不要再做一个访问时间统计？</p>\n<p>我们尝试融合一个爬虫进入：以网站测速网站：<a href=\"https://link.zhihu.com/?target=http%3A//tool.chinaz.com/speedtest/anycodes.cn\">http://tool.chinaz.com/speedtest/anycodes.cn</a> 为例，可以看到：</p>\n<p><img src=\"https://img.serverlesscloud.cn/tmp/v2-72201e99b6a00deee98e473bfe9b2bf8_1440w-20200414233925435.jpg\" alt=\"img\"></p>\n<p>是否可以获得每个请求看看耗时呢？</p>\n<p>通过网页分析，我们获得了每个测试点的 id 对应关系：</p>\n<div\n              class=\"gatsby-code-button-container\"\n              data-toaster-id=\"10452773200124344000\"\n              data-toaster-class=\"gatsby-code-button-toaster\"\n              data-toaster-text-class=\"gatsby-code-button-toaster-text\"\n              data-toaster-text=\"代码复制成功\"\n              data-toaster-duration=\"3500\"\n              onClick=\"copyToClipboard(`62a55a0e-387e-4d87-bf69-5e0c9dd6b983 江苏宿迁[电信]\nf403cdf2-27f8-4ccd-8f22-6f5a28a01309 广东佛山[电信]\nbcff47de-61bb-4bf7-9fe6-4e456067e540 广东惠州[电信]\n7740099a-6b60-49e0-9913-2f0b416ae63b 广东深圳[电信]\n2bfd90a0-4661-4920-9963-0241cd3fc0db 浙江湖州[电信]\nb698f5c4-0c88-4ae4-b123-ef57293ce442 辽宁大连[电信]\n7253644b-58d3-48bb-808a-3c8b9416cfd5 江苏泰州[电信]\nd8c0d1d1-9da8-4480-a9df-555731cdd7b8 安徽合肥[电信]\n299f5043-d454-4485-945f-a331d960d86e 江苏镇江[电信]\n38522b83-8893-4ca6-b45f-b6588b034462 云南昆明[电信]\n19705ba7-3816-4b35-976b-c3b8d69e78d2 湖南长沙[电信]\n8081b399-499a-4680-9a5a-723977cfea04 湖南衡阳[电信]\n5713f157-3378-495a-9c55-7172187e9f36 江苏宿迁[电信]\na80cd07e-5508-4be6-8c83-524fe59318b8 江苏泰州[电信]\n4daa81e2-f397-4cde-bf74-b2bee84a4ea5 江苏宿迁[电信]\nbdd1ecd4-5516-44f8-8022-d83e4ac102f2 广东佛山[电信]\n6b6f9b1c-6154-4696-96d6-112248f902dc 北京[电信]\n8292e59e-ffde-4988-814f-4fe7fc4ec888 贵州兴义[电信]\nbe09c5ce-3031-4565-8f6a-3e328e256e16 江苏扬州[电信]\n524906a3-2749-4469-aee3-48885f042a3a 江苏徐州[电信]\nfce17d47-07c3-4315-892b-acd76d918ada 广西南宁[电信]\n21cf6110-400c-4c6b-87c8-cada4ec3f6a7 浙江台州[电信]\n0c8ca9bf-fa7a-42a3-9148-f15ead65f45e 广东深圳[电信]\nb1499d95-7e3c-472a-9682-e58e1b362633 江西九江[电信]\n4130a733-57c7-432b-ab8d-735ccbefbc0a 山东枣庄[电信]\n066ab75f-0a74-40e8-b717-d17a71eda942 广东惠州[电信]\n1befa95d-cde1-473e-b851-38440d034f1c 江苏泰州[电信]\nc5ae6abd-901b-47c7-9018-7eda8b4441c6 陕西西安[电信]\nd1e4fc25-16e5-4651-a8d7-b8df50dda396 江苏镇江[电信]\n70a537ed-95b2-4bfd-b6b0-64c3920d9910 重庆[电信]\ne6a3a9b7-2088-41be-bf1d-6a25276ab1ed 江西吉安[电信]\n0e34cba2-fe5c-40d2-9ec7-e497f99365b8 广东广州[电信]\n547e8248-6dfb-4f4f-b52d-8a287e89b844 湖北随州[电信]\ndf8bdd7a-b928-41f8-959f-d0d56fadea64 四川绵阳[电信]\n4e5d43e6-9d6a-4e5a-b495-a78c0921d26d 四川成都[电信]\n36d59519-d4bb-4635-8476-1d6ea27f62b2 江苏镇江[电信]\nbc25c8fd-62a1-4c57-a44d-0855b6c67714 四川绵阳[电信]\n0d3fd0b2-1255-4e5d-b94e-717569d2e8bd 江苏扬州[电信]\n47a0f82f-7dbb-48f4-96e0-d7a279ebba11 浙江宁波[电信]\n61d76c8c-b681-4196-b734-7d8e60f1e3ae 浙江绍兴[电信]\nda8bc796-4e65-48ef-beaa-d2ee1a7dd4bf 广东佛山[电信]\ncd787783-c0f5-486c-ac9f-34a80e386c34 广东佛山[电信]\n0e8d2e22-74db-4b31-9edd-fdda946dcd03 江苏常州[电信]\n5daad9ff-ced5-426a-8216-bf2aad097de0 浙江温州[电信]\n91a304a7-f91b-49ac-abbe-b77442cbc48c 上海[电信]\n12b16bb6-d42d-4296-a394-b96b22bca9c3 陕西咸阳[电信]\nbf9f80ef-1ef7-4267-aece-4fb1e5fe45bf 湖北荆门[电信]\ncd442c9e-de26-470f-bba2-33a8e71e4639 福建泉州[电信]\n9fef7898-e2d3-4c02-ab2a-5dc780f5a65c 河南新乡[电信]\n65078859-3e99-48eb-b170-7463fc53a98e 辽宁大连[电信]\n0165e09b-aad3-46c2-87e8-160432229f60 贵州兴义[电信]\n817bc339-c6f6-479c-9708-01ca54f2be80 江西新余[电信]\n1edc7af0-68ac-427b-a368-c27610797971 广东佛山[电信]\n9bc90d67-d208-434d-b680-294ae4288571 新疆哈密[电信]\nb44faece-c6fe-4cc1-ab9a-ae7dcf37f146 辽宁鞍山[电信]\n7fb11d87-1029-487b-8345-27e12a6acf1e 江苏镇江[电信]\n04d82618-d562-4aa7-9db6-4600dd7f4780 湖南衡阳[电信]\n252167a8-eaeb-491b-a4f3-319d25680f48 江苏宿迁[电信]\n22456bec-ad37-49e8-ba6f-032b3faaa0a0 湖北武汉[电信]\n5802da93-4e05-4932-9bc6-20d5d75b7af5 江苏宿迁[电信]\na083795a-b69f-49fe-a905-cd8838c09553 浙江温州[电信]\n9c3b9aed-4b8a-4258-9b1f-55016211ced9 广东深圳[电信]\n2140cc66-e5ea-4f56-981a-8f044a98c92a 浙江绍兴[电信]\n9a8406ca-8a2d-44b7-a60e-4fe0ff6dd3aa 陕西西安[电信]\n8df24006-5e55-428c-9f29-9a2386480a4d 湖北仙桃[电信]\ncb2be8e0-670f-4922-8dd8-a1dd155cbf97 广东深圳[多线]\nc5964a0d-c49f-4fac-833d-2348b3b1304b 江苏常州[多线]\n19ef9d71-e0cb-4b79-a416-8fd670f6e7ca 江苏泰州[多线]\n5bea1430-f7c2-4146-88f4-17a7dc73a953 河南新乡[多线]\n1f430ff0-eae9-413a-af2a-1c2a8986cff0 河南新乡[多线]\nea551b59-2609-4ab4-89bc-14b2080f501a 河南新乡[多线]\n4d462057-4581-4ae1-974d-ca7ca019e700 河南新乡[多线]\n9c137190-5a57-4ef5-be4b-b9add998ad52 河南新乡[多线]\n120ec517-1b0f-4b6e-841d-61116f73099a 广东东莞[多线]\ncbc3caa1-9faf-438c-abde-fbd5c64c8036 辽宁大连[多线]\nba9e31d2-918a-41ad-9d0b-99175e365583 江苏扬州[多线]\n74cb6a5c-b044-49d0-abee-bf42beb6ae05 江苏宿迁[多线]\ne0cf79c5-9159-4ea6-a2a7-1bcaf9bfb292 山西运城[联通]\n2805fa9f-05ea-46bc-8ac0-1769b782bf52 黑龙江哈尔滨[联通]\n5439460c-0115-421a-b8ad-449eb2b4c28a 广东深圳[联通]\n9b7cbf0a-76b8-4308-8b66-9093dbe22541 浙江金华[联通]\na4800428-7ed4-4c8a-a049-4b90df6919f0 河南郑州[联通]\n654abac8-7b37-4a64-9a84-2d190db3d060 山东枣庄[联通]\n1b6a98df-c2f4-4a29-b5b5-1e44ce6d1309 浙江金华[联通]\n32574c06-d0fc-4709-8fc9-fce30596efd3 河南郑州[联通]\n87068aa4-3b0e-4e22-814e-8ff838036e1b 浙江金华[联通]\n457575e4-cbbd-4796-89df-ad9707f19254 河南新乡[联通]\n4d7637d7-4950-4b79-9741-c397789bcf05 山东济南[联通]\n7f46f5c9-d719-4886-b3c0-6b6427908791 福建福州[联通]\nc48a380c-bac5-4976-b56c-53e9e5ebb691 江苏徐州[联通]\nb615642c-ac86-4322-9fbe-4bd79e175a99 广东深圳[联通]\nddfeba9f-a432-4b9a-b0a9-ef76e9499558 浙江嘉兴[联通]\n102df90c-0bcc-404a-97cd-475fd408ff6f 江苏宿迁[联通]\n62909299-548b-4bbc-a92a-959e6104fc2c 江苏徐州[联通]\nde221437-2390-4404-9a00-26b0853cf943 江苏宿迁[联通]\n7a23256e-1121-4c39-ba12-1ff663ba952a 福建福州[联通]\n5074fb13-4ab9-4f0a-87d9-f8ae51cb81c5 江苏常州[移动]\n722e28ca-dd02-4ccd-a134-f9d4218505a5 广东深圳[移动]\n8e7a403c-d998-4efa-b3d1-b67c0dfabc41 广东深圳[移动]`, `10452773200124344000`)\"\n            >\n              <div\n                class=\"gatsby-code-button\"\n                data-tooltip=\"\"\n              >\n                复制代码<svg class=\"gatsby-code-button-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M16 1H2v16h2V3h12V1zm-1 4l6 6v12H6V5h9zm-1 7h5.5L14 6.5V12z\"/></svg>\n              </div>\n            </div>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">62a55a0e-387e-4d87-bf69-5e0c9dd6b983 江苏宿迁[电信]\nf403cdf2-27f8-4ccd-8f22-6f5a28a01309 广东佛山[电信]\nbcff47de-61bb-4bf7-9fe6-4e456067e540 广东惠州[电信]\n7740099a-6b60-49e0-9913-2f0b416ae63b 广东深圳[电信]\n2bfd90a0-4661-4920-9963-0241cd3fc0db 浙江湖州[电信]\nb698f5c4-0c88-4ae4-b123-ef57293ce442 辽宁大连[电信]\n7253644b-58d3-48bb-808a-3c8b9416cfd5 江苏泰州[电信]\nd8c0d1d1-9da8-4480-a9df-555731cdd7b8 安徽合肥[电信]\n299f5043-d454-4485-945f-a331d960d86e 江苏镇江[电信]\n38522b83-8893-4ca6-b45f-b6588b034462 云南昆明[电信]\n19705ba7-3816-4b35-976b-c3b8d69e78d2 湖南长沙[电信]\n8081b399-499a-4680-9a5a-723977cfea04 湖南衡阳[电信]\n5713f157-3378-495a-9c55-7172187e9f36 江苏宿迁[电信]\na80cd07e-5508-4be6-8c83-524fe59318b8 江苏泰州[电信]\n4daa81e2-f397-4cde-bf74-b2bee84a4ea5 江苏宿迁[电信]\nbdd1ecd4-5516-44f8-8022-d83e4ac102f2 广东佛山[电信]\n6b6f9b1c-6154-4696-96d6-112248f902dc 北京[电信]\n8292e59e-ffde-4988-814f-4fe7fc4ec888 贵州兴义[电信]\nbe09c5ce-3031-4565-8f6a-3e328e256e16 江苏扬州[电信]\n524906a3-2749-4469-aee3-48885f042a3a 江苏徐州[电信]\nfce17d47-07c3-4315-892b-acd76d918ada 广西南宁[电信]\n21cf6110-400c-4c6b-87c8-cada4ec3f6a7 浙江台州[电信]\n0c8ca9bf-fa7a-42a3-9148-f15ead65f45e 广东深圳[电信]\nb1499d95-7e3c-472a-9682-e58e1b362633 江西九江[电信]\n4130a733-57c7-432b-ab8d-735ccbefbc0a 山东枣庄[电信]\n066ab75f-0a74-40e8-b717-d17a71eda942 广东惠州[电信]\n1befa95d-cde1-473e-b851-38440d034f1c 江苏泰州[电信]\nc5ae6abd-901b-47c7-9018-7eda8b4441c6 陕西西安[电信]\nd1e4fc25-16e5-4651-a8d7-b8df50dda396 江苏镇江[电信]\n70a537ed-95b2-4bfd-b6b0-64c3920d9910 重庆[电信]\ne6a3a9b7-2088-41be-bf1d-6a25276ab1ed 江西吉安[电信]\n0e34cba2-fe5c-40d2-9ec7-e497f99365b8 广东广州[电信]\n547e8248-6dfb-4f4f-b52d-8a287e89b844 湖北随州[电信]\ndf8bdd7a-b928-41f8-959f-d0d56fadea64 四川绵阳[电信]\n4e5d43e6-9d6a-4e5a-b495-a78c0921d26d 四川成都[电信]\n36d59519-d4bb-4635-8476-1d6ea27f62b2 江苏镇江[电信]\nbc25c8fd-62a1-4c57-a44d-0855b6c67714 四川绵阳[电信]\n0d3fd0b2-1255-4e5d-b94e-717569d2e8bd 江苏扬州[电信]\n47a0f82f-7dbb-48f4-96e0-d7a279ebba11 浙江宁波[电信]\n61d76c8c-b681-4196-b734-7d8e60f1e3ae 浙江绍兴[电信]\nda8bc796-4e65-48ef-beaa-d2ee1a7dd4bf 广东佛山[电信]\ncd787783-c0f5-486c-ac9f-34a80e386c34 广东佛山[电信]\n0e8d2e22-74db-4b31-9edd-fdda946dcd03 江苏常州[电信]\n5daad9ff-ced5-426a-8216-bf2aad097de0 浙江温州[电信]\n91a304a7-f91b-49ac-abbe-b77442cbc48c 上海[电信]\n12b16bb6-d42d-4296-a394-b96b22bca9c3 陕西咸阳[电信]\nbf9f80ef-1ef7-4267-aece-4fb1e5fe45bf 湖北荆门[电信]\ncd442c9e-de26-470f-bba2-33a8e71e4639 福建泉州[电信]\n9fef7898-e2d3-4c02-ab2a-5dc780f5a65c 河南新乡[电信]\n65078859-3e99-48eb-b170-7463fc53a98e 辽宁大连[电信]\n0165e09b-aad3-46c2-87e8-160432229f60 贵州兴义[电信]\n817bc339-c6f6-479c-9708-01ca54f2be80 江西新余[电信]\n1edc7af0-68ac-427b-a368-c27610797971 广东佛山[电信]\n9bc90d67-d208-434d-b680-294ae4288571 新疆哈密[电信]\nb44faece-c6fe-4cc1-ab9a-ae7dcf37f146 辽宁鞍山[电信]\n7fb11d87-1029-487b-8345-27e12a6acf1e 江苏镇江[电信]\n04d82618-d562-4aa7-9db6-4600dd7f4780 湖南衡阳[电信]\n252167a8-eaeb-491b-a4f3-319d25680f48 江苏宿迁[电信]\n22456bec-ad37-49e8-ba6f-032b3faaa0a0 湖北武汉[电信]\n5802da93-4e05-4932-9bc6-20d5d75b7af5 江苏宿迁[电信]\na083795a-b69f-49fe-a905-cd8838c09553 浙江温州[电信]\n9c3b9aed-4b8a-4258-9b1f-55016211ced9 广东深圳[电信]\n2140cc66-e5ea-4f56-981a-8f044a98c92a 浙江绍兴[电信]\n9a8406ca-8a2d-44b7-a60e-4fe0ff6dd3aa 陕西西安[电信]\n8df24006-5e55-428c-9f29-9a2386480a4d 湖北仙桃[电信]\ncb2be8e0-670f-4922-8dd8-a1dd155cbf97 广东深圳[多线]\nc5964a0d-c49f-4fac-833d-2348b3b1304b 江苏常州[多线]\n19ef9d71-e0cb-4b79-a416-8fd670f6e7ca 江苏泰州[多线]\n5bea1430-f7c2-4146-88f4-17a7dc73a953 河南新乡[多线]\n1f430ff0-eae9-413a-af2a-1c2a8986cff0 河南新乡[多线]\nea551b59-2609-4ab4-89bc-14b2080f501a 河南新乡[多线]\n4d462057-4581-4ae1-974d-ca7ca019e700 河南新乡[多线]\n9c137190-5a57-4ef5-be4b-b9add998ad52 河南新乡[多线]\n120ec517-1b0f-4b6e-841d-61116f73099a 广东东莞[多线]\ncbc3caa1-9faf-438c-abde-fbd5c64c8036 辽宁大连[多线]\nba9e31d2-918a-41ad-9d0b-99175e365583 江苏扬州[多线]\n74cb6a5c-b044-49d0-abee-bf42beb6ae05 江苏宿迁[多线]\ne0cf79c5-9159-4ea6-a2a7-1bcaf9bfb292 山西运城[联通]\n2805fa9f-05ea-46bc-8ac0-1769b782bf52 黑龙江哈尔滨[联通]\n5439460c-0115-421a-b8ad-449eb2b4c28a 广东深圳[联通]\n9b7cbf0a-76b8-4308-8b66-9093dbe22541 浙江金华[联通]\na4800428-7ed4-4c8a-a049-4b90df6919f0 河南郑州[联通]\n654abac8-7b37-4a64-9a84-2d190db3d060 山东枣庄[联通]\n1b6a98df-c2f4-4a29-b5b5-1e44ce6d1309 浙江金华[联通]\n32574c06-d0fc-4709-8fc9-fce30596efd3 河南郑州[联通]\n87068aa4-3b0e-4e22-814e-8ff838036e1b 浙江金华[联通]\n457575e4-cbbd-4796-89df-ad9707f19254 河南新乡[联通]\n4d7637d7-4950-4b79-9741-c397789bcf05 山东济南[联通]\n7f46f5c9-d719-4886-b3c0-6b6427908791 福建福州[联通]\nc48a380c-bac5-4976-b56c-53e9e5ebb691 江苏徐州[联通]\nb615642c-ac86-4322-9fbe-4bd79e175a99 广东深圳[联通]\nddfeba9f-a432-4b9a-b0a9-ef76e9499558 浙江嘉兴[联通]\n102df90c-0bcc-404a-97cd-475fd408ff6f 江苏宿迁[联通]\n62909299-548b-4bbc-a92a-959e6104fc2c 江苏徐州[联通]\nde221437-2390-4404-9a00-26b0853cf943 江苏宿迁[联通]\n7a23256e-1121-4c39-ba12-1ff663ba952a 福建福州[联通]\n5074fb13-4ab9-4f0a-87d9-f8ae51cb81c5 江苏常州[移动]\n722e28ca-dd02-4ccd-a134-f9d4218505a5 广东深圳[移动]\n8e7a403c-d998-4efa-b3d1-b67c0dfabc41 广东深圳[移动]</code></pre></div>\n<p>然后，我们可以根据这些关系，在本地测试：</p>\n<p>以『62a55a0e-387e-4d87-bf69-5e0c9dd6b983 江苏宿迁[电信]』为例编写代码：</p>\n<div\n              class=\"gatsby-code-button-container\"\n              data-toaster-id=\"42462773705018876000\"\n              data-toaster-class=\"gatsby-code-button-toaster\"\n              data-toaster-text-class=\"gatsby-code-button-toaster-text\"\n              data-toaster-text=\"代码复制成功\"\n              data-toaster-duration=\"3500\"\n              onClick=\"copyToClipboard(`import urllib.request\nimport urllib.parse\n\nurl = &quot;http://tool.chinaz.com/iframe.ashx?t=ping&quot;\nform_data = {\n    'guid': '62a55a0e-387e-4d87-bf69-5e0c9dd6b983',\n    'host': 'anycodes.cn',\n    'ishost': '1',\n    'encode': 'ECvBP9vjbuXRi0CVhnXAbufDNPDryYzO',\n    'checktype': '1',\n}\nheaders = {\n    'Host': 'tool.chinaz.com',\n    'Origin': 'http://tool.chinaz.com',\n    'Referer': 'http://tool.chinaz.com/speedtest/anycodes.cn',\n    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36',\n    'X-Requested-With': 'XMLHttpRequest'\n}\n\nprint(urllib.request.urlopen(\n    urllib.request.Request(\n        url=url,\n        data=urllib.parse.urlencode(form_data).encode('utf-8'),\n        headers=headers\n    )\n).read().decode(&quot;utf-8&quot;))`, `42462773705018876000`)\"\n            >\n              <div\n                class=\"gatsby-code-button\"\n                data-tooltip=\"\"\n              >\n                复制代码<svg class=\"gatsby-code-button-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M16 1H2v16h2V3h12V1zm-1 4l6 6v12H6V5h9zm-1 7h5.5L14 6.5V12z\"/></svg>\n              </div>\n            </div>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">import urllib.request\nimport urllib.parse\n\nurl = &quot;http://tool.chinaz.com/iframe.ashx?t=ping&quot;\nform_data = {\n    &#39;guid&#39;: &#39;62a55a0e-387e-4d87-bf69-5e0c9dd6b983&#39;,\n    &#39;host&#39;: &#39;anycodes.cn&#39;,\n    &#39;ishost&#39;: &#39;1&#39;,\n    &#39;encode&#39;: &#39;ECvBP9vjbuXRi0CVhnXAbufDNPDryYzO&#39;,\n    &#39;checktype&#39;: &#39;1&#39;,\n}\nheaders = {\n    &#39;Host&#39;: &#39;tool.chinaz.com&#39;,\n    &#39;Origin&#39;: &#39;http://tool.chinaz.com&#39;,\n    &#39;Referer&#39;: &#39;http://tool.chinaz.com/speedtest/anycodes.cn&#39;,\n    &#39;User-Agent&#39;: &#39;Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36&#39;,\n    &#39;X-Requested-With&#39;: &#39;XMLHttpRequest&#39;\n}\n\nprint(urllib.request.urlopen(\n    urllib.request.Request(\n        url=url,\n        data=urllib.parse.urlencode(form_data).encode(&#39;utf-8&#39;),\n        headers=headers\n    )\n).read().decode(&quot;utf-8&quot;))</code></pre></div>\n<p>获得结果：</p>\n<div\n              class=\"gatsby-code-button-container\"\n              data-toaster-id=\"57681509936675690000\"\n              data-toaster-class=\"gatsby-code-button-toaster\"\n              data-toaster-text-class=\"gatsby-code-button-toaster-text\"\n              data-toaster-text=\"代码复制成功\"\n              data-toaster-duration=\"3500\"\n              onClick=\"copyToClipboard(`({state:1,msg:'',result:{ip:'119.28.190.46',httpstate:200,alltime:'212',dnstime:'18',conntime:'116',downtime:'78',filesize:'-',downspeed:'4.72',ipaddress:'新加坡新加坡',headers:'\\u0048\\u0054\\u0054\\u0050\\u002f\\u0031\\u002e\\u0031\\u0020\\u0032\\u0030\\u0030\\u0020\\u004f\\u004b \\u0062\\u0072\\u003e\\u0053\\u0065\\u0072\\u0076\\u0065\\u0072\\u003a\\u0020\\u006e\\u0067\\u0069\\u006e\\u0078\\u002f\\u0031\\u002e\\u0031\\u0030\\u002e\\u0033\\u0020\\u0028\\u0055\\u0062\\u0075\\u006e\\u0074\\u0075\\u0029 \\u0062\\u0072\\u003e\\u0044\\u0061\\u0074\\u0065\\u003a\\u0020\\u0053\\u0075\\u006e\\u002c\\u0020\\u0032\\u0038\\u0020\\u0041\\u0070\\u0072\\u0020\\u0032\\u0030\\u0031\\u0039\\u0020\\u0030\\u0033\\u003a\\u0032\\u0031\\u003a\\u0033\\u0030\\u0020\\u0047\\u004d\\u0054 \\u0062\\u0072\\u003e\\u0043\\u006f\\u006e\\u0074\\u0065\\u006e\\u0074\\u002d\\u0054\\u0079\\u0070\\u0065\\u003a\\u0020\\u0074\\u0065\\u0078\\u0074\\u002f\\u0068\\u0074\\u006d\\u006c \\u0062\\u0072\\u003e\\u004c\\u0061\\u0073\\u0074\\u002d\\u004d\\u006f\\u0064\\u0069\\u0066\\u0069\\u0065\\u0064\\u003a\\u0020\\u0054\\u0068\\u0075\\u002c\\u0020\\u0032\\u0035\\u0020\\u0041\\u0070\\u0072\\u0020\\u0032\\u0030\\u0031\\u0039\\u0020\\u0030\\u0037\\u003a\\u0033\\u0033\\u003a\\u0035\\u0035\\u0020\\u0047\\u004d\\u0054 \\u0062\\u0072\\u003e\\u0054\\u0072\\u0061\\u006e\\u0073\\u0066\\u0065\\u0072\\u002d\\u0045\\u006e\\u0063\\u006f\\u0064\\u0069\\u006e\\u0067\\u003a\\u0020\\u0063\\u0068\\u0075\\u006e\\u006b\\u0065\\u0064 \\u0062\\u0072\\u003e\\u0043\\u006f\\u006e\\u006e\\u0065\\u0063\\u0074\\u0069\\u006f\\u006e\\u003a\\u0020\\u0063\\u006c\\u006f\\u0073\\u0065 \\u0062\\u0072\\u003e\\u0045\\u0054\\u0061\\u0067\\u003a\\u0020\\u0057\\u002f\\u0022\\u0035\\u0063\\u0063\\u0031\\u0036\\u0032\\u0065\\u0033\\u002d\\u0038\\u0038\\u0061\\u0022 \\u0062\\u0072\\u003e\\u0043\\u006f\\u006e\\u0074\\u0065\\u006e\\u0074\\u002d\\u0045\\u006e\\u0063\\u006f\\u0064\\u0069\\u006e\\u0067\\u003a\\u0020\\u0067\\u007a\\u0069\\u0070 \\u0062\\u0072\\u003e \\u0062\\u0072\\u003e',pagehtml:''}})`, `57681509936675690000`)\"\n            >\n              <div\n                class=\"gatsby-code-button\"\n                data-tooltip=\"\"\n              >\n                复制代码<svg class=\"gatsby-code-button-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M16 1H2v16h2V3h12V1zm-1 4l6 6v12H6V5h9zm-1 7h5.5L14 6.5V12z\"/></svg>\n              </div>\n            </div>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">({state:1,msg:&#39;&#39;,result:{ip:&#39;119.28.190.46&#39;,httpstate:200,alltime:&#39;212&#39;,dnstime:&#39;18&#39;,conntime:&#39;116&#39;,downtime:&#39;78&#39;,filesize:&#39;-&#39;,downspeed:&#39;4.72&#39;,ipaddress:&#39;新加坡新加坡&#39;,headers:&#39;\\u0048\\u0054\\u0054\\u0050\\u002f\\u0031\\u002e\\u0031\\u0020\\u0032\\u0030\\u0030\\u0020\\u004f\\u004b \\u0062\\u0072\\u003e\\u0053\\u0065\\u0072\\u0076\\u0065\\u0072\\u003a\\u0020\\u006e\\u0067\\u0069\\u006e\\u0078\\u002f\\u0031\\u002e\\u0031\\u0030\\u002e\\u0033\\u0020\\u0028\\u0055\\u0062\\u0075\\u006e\\u0074\\u0075\\u0029 \\u0062\\u0072\\u003e\\u0044\\u0061\\u0074\\u0065\\u003a\\u0020\\u0053\\u0075\\u006e\\u002c\\u0020\\u0032\\u0038\\u0020\\u0041\\u0070\\u0072\\u0020\\u0032\\u0030\\u0031\\u0039\\u0020\\u0030\\u0033\\u003a\\u0032\\u0031\\u003a\\u0033\\u0030\\u0020\\u0047\\u004d\\u0054 \\u0062\\u0072\\u003e\\u0043\\u006f\\u006e\\u0074\\u0065\\u006e\\u0074\\u002d\\u0054\\u0079\\u0070\\u0065\\u003a\\u0020\\u0074\\u0065\\u0078\\u0074\\u002f\\u0068\\u0074\\u006d\\u006c \\u0062\\u0072\\u003e\\u004c\\u0061\\u0073\\u0074\\u002d\\u004d\\u006f\\u0064\\u0069\\u0066\\u0069\\u0065\\u0064\\u003a\\u0020\\u0054\\u0068\\u0075\\u002c\\u0020\\u0032\\u0035\\u0020\\u0041\\u0070\\u0072\\u0020\\u0032\\u0030\\u0031\\u0039\\u0020\\u0030\\u0037\\u003a\\u0033\\u0033\\u003a\\u0035\\u0035\\u0020\\u0047\\u004d\\u0054 \\u0062\\u0072\\u003e\\u0054\\u0072\\u0061\\u006e\\u0073\\u0066\\u0065\\u0072\\u002d\\u0045\\u006e\\u0063\\u006f\\u0064\\u0069\\u006e\\u0067\\u003a\\u0020\\u0063\\u0068\\u0075\\u006e\\u006b\\u0065\\u0064 \\u0062\\u0072\\u003e\\u0043\\u006f\\u006e\\u006e\\u0065\\u0063\\u0074\\u0069\\u006f\\u006e\\u003a\\u0020\\u0063\\u006c\\u006f\\u0073\\u0065 \\u0062\\u0072\\u003e\\u0045\\u0054\\u0061\\u0067\\u003a\\u0020\\u0057\\u002f\\u0022\\u0035\\u0063\\u0063\\u0031\\u0036\\u0032\\u0065\\u0033\\u002d\\u0038\\u0038\\u0061\\u0022 \\u0062\\u0072\\u003e\\u0043\\u006f\\u006e\\u0074\\u0065\\u006e\\u0074\\u002d\\u0045\\u006e\\u0063\\u006f\\u0064\\u0069\\u006e\\u0067\\u003a\\u0020\\u0067\\u007a\\u0069\\u0070 \\u0062\\u0072\\u003e \\u0062\\u0072\\u003e&#39;,pagehtml:&#39;&#39;}})</code></pre></div>\n<p>拿到结果后就可以知道江苏宿迁[电信]访问 anycodes 的：</p>\n<ul>\n<li>总耗时：alltime:'212'</li>\n<li>链接耗时：conntime:'116'</li>\n<li>下载耗时：downtime:'78'</li>\n</ul>\n<p>整合程序，对每个请求进行处理：</p>\n<div\n              class=\"gatsby-code-button-container\"\n              data-toaster-id=\"86206718104041280000\"\n              data-toaster-class=\"gatsby-code-button-toaster\"\n              data-toaster-text-class=\"gatsby-code-button-toaster-text\"\n              data-toaster-text=\"代码复制成功\"\n              data-toaster-duration=\"3500\"\n              onClick=\"copyToClipboard(`import urllib.request\nimport urllib.parse\nimport re\n\ntotal_list = '''62a55a0e-387e-4d87-bf69-5e0c9dd6b983 江苏宿迁[电信]\nf403cdf2-27f8-4ccd-8f22-6f5a28a01309 广东佛山[电信]\nbcff47de-61bb-4bf7-9fe6-4e456067e540 广东惠州[电信]\n7740099a-6b60-49e0-9913-2f0b416ae63b 广东深圳[电信]\n2bfd90a0-4661-4920-9963-0241cd3fc0db 浙江湖州[电信]\nb698f5c4-0c88-4ae4-b123-ef57293ce442 辽宁大连[电信]\n7253644b-58d3-48bb-808a-3c8b9416cfd5 江苏泰州[电信]\nd8c0d1d1-9da8-4480-a9df-555731cdd7b8 安徽合肥[电信]\n299f5043-d454-4485-945f-a331d960d86e 江苏镇江[电信]\n38522b83-8893-4ca6-b45f-b6588b034462 云南昆明[电信]\n19705ba7-3816-4b35-976b-c3b8d69e78d2 湖南长沙[电信]\n8081b399-499a-4680-9a5a-723977cfea04 湖南衡阳[电信]\n5713f157-3378-495a-9c55-7172187e9f36 江苏宿迁[电信]\na80cd07e-5508-4be6-8c83-524fe59318b8 江苏泰州[电信]\n4daa81e2-f397-4cde-bf74-b2bee84a4ea5 江苏宿迁[电信]\nbdd1ecd4-5516-44f8-8022-d83e4ac102f2 广东佛山[电信]\n6b6f9b1c-6154-4696-96d6-112248f902dc 北京[电信]\n8292e59e-ffde-4988-814f-4fe7fc4ec888 贵州兴义[电信]\nbe09c5ce-3031-4565-8f6a-3e328e256e16 江苏扬州[电信]\n524906a3-2749-4469-aee3-48885f042a3a 江苏徐州[电信]\nfce17d47-07c3-4315-892b-acd76d918ada 广西南宁[电信]\n21cf6110-400c-4c6b-87c8-cada4ec3f6a7 浙江台州[电信]\n0c8ca9bf-fa7a-42a3-9148-f15ead65f45e 广东深圳[电信]\nb1499d95-7e3c-472a-9682-e58e1b362633 江西九江[电信]\n4130a733-57c7-432b-ab8d-735ccbefbc0a 山东枣庄[电信]\n066ab75f-0a74-40e8-b717-d17a71eda942 广东惠州[电信]\n1befa95d-cde1-473e-b851-38440d034f1c 江苏泰州[电信]\nc5ae6abd-901b-47c7-9018-7eda8b4441c6 陕西西安[电信]\nd1e4fc25-16e5-4651-a8d7-b8df50dda396 江苏镇江[电信]\n70a537ed-95b2-4bfd-b6b0-64c3920d9910 重庆[电信]\ne6a3a9b7-2088-41be-bf1d-6a25276ab1ed 江西吉安[电信]\n0e34cba2-fe5c-40d2-9ec7-e497f99365b8 广东广州[电信]\n547e8248-6dfb-4f4f-b52d-8a287e89b844 湖北随州[电信]\ndf8bdd7a-b928-41f8-959f-d0d56fadea64 四川绵阳[电信]\n4e5d43e6-9d6a-4e5a-b495-a78c0921d26d 四川成都[电信]\n36d59519-d4bb-4635-8476-1d6ea27f62b2 江苏镇江[电信]\nbc25c8fd-62a1-4c57-a44d-0855b6c67714 四川绵阳[电信]\n0d3fd0b2-1255-4e5d-b94e-717569d2e8bd 江苏扬州[电信]\n47a0f82f-7dbb-48f4-96e0-d7a279ebba11 浙江宁波[电信]\n61d76c8c-b681-4196-b734-7d8e60f1e3ae 浙江绍兴[电信]\nda8bc796-4e65-48ef-beaa-d2ee1a7dd4bf 广东佛山[电信]\ncd787783-c0f5-486c-ac9f-34a80e386c34 广东佛山[电信]\n0e8d2e22-74db-4b31-9edd-fdda946dcd03 江苏常州[电信]\n5daad9ff-ced5-426a-8216-bf2aad097de0 浙江温州[电信]\n91a304a7-f91b-49ac-abbe-b77442cbc48c 上海[电信]\n12b16bb6-d42d-4296-a394-b96b22bca9c3 陕西咸阳[电信]\nbf9f80ef-1ef7-4267-aece-4fb1e5fe45bf 湖北荆门[电信]\ncd442c9e-de26-470f-bba2-33a8e71e4639 福建泉州[电信]\n9fef7898-e2d3-4c02-ab2a-5dc780f5a65c 河南新乡[电信]\n65078859-3e99-48eb-b170-7463fc53a98e 辽宁大连[电信]\n0165e09b-aad3-46c2-87e8-160432229f60 贵州兴义[电信]\n817bc339-c6f6-479c-9708-01ca54f2be80 江西新余[电信]\n1edc7af0-68ac-427b-a368-c27610797971 广东佛山[电信]\n9bc90d67-d208-434d-b680-294ae4288571 新疆哈密[电信]\nb44faece-c6fe-4cc1-ab9a-ae7dcf37f146 辽宁鞍山[电信]\n7fb11d87-1029-487b-8345-27e12a6acf1e 江苏镇江[电信]\n04d82618-d562-4aa7-9db6-4600dd7f4780 湖南衡阳[电信]\n252167a8-eaeb-491b-a4f3-319d25680f48 江苏宿迁[电信]\n22456bec-ad37-49e8-ba6f-032b3faaa0a0 湖北武汉[电信]\n5802da93-4e05-4932-9bc6-20d5d75b7af5 江苏宿迁[电信]\na083795a-b69f-49fe-a905-cd8838c09553 浙江温州[电信]\n9c3b9aed-4b8a-4258-9b1f-55016211ced9 广东深圳[电信]\n2140cc66-e5ea-4f56-981a-8f044a98c92a 浙江绍兴[电信]\n9a8406ca-8a2d-44b7-a60e-4fe0ff6dd3aa 陕西西安[电信]\n8df24006-5e55-428c-9f29-9a2386480a4d 湖北仙桃[电信]\ncb2be8e0-670f-4922-8dd8-a1dd155cbf97 广东深圳[多线]\nc5964a0d-c49f-4fac-833d-2348b3b1304b 江苏常州[多线]\n19ef9d71-e0cb-4b79-a416-8fd670f6e7ca 江苏泰州[多线]\n5bea1430-f7c2-4146-88f4-17a7dc73a953 河南新乡[多线]\n1f430ff0-eae9-413a-af2a-1c2a8986cff0 河南新乡[多线]\nea551b59-2609-4ab4-89bc-14b2080f501a 河南新乡[多线]\n4d462057-4581-4ae1-974d-ca7ca019e700 河南新乡[多线]\n9c137190-5a57-4ef5-be4b-b9add998ad52 河南新乡[多线]\n120ec517-1b0f-4b6e-841d-61116f73099a 广东东莞[多线]\ncbc3caa1-9faf-438c-abde-fbd5c64c8036 辽宁大连[多线]\nba9e31d2-918a-41ad-9d0b-99175e365583 江苏扬州[多线]\n74cb6a5c-b044-49d0-abee-bf42beb6ae05 江苏宿迁[多线]\ne0cf79c5-9159-4ea6-a2a7-1bcaf9bfb292 山西运城[联通]\n2805fa9f-05ea-46bc-8ac0-1769b782bf52 黑龙江哈尔滨[联通]\n5439460c-0115-421a-b8ad-449eb2b4c28a 广东深圳[联通]\n9b7cbf0a-76b8-4308-8b66-9093dbe22541 浙江金华[联通]\na4800428-7ed4-4c8a-a049-4b90df6919f0 河南郑州[联通]\n654abac8-7b37-4a64-9a84-2d190db3d060 山东枣庄[联通]\n1b6a98df-c2f4-4a29-b5b5-1e44ce6d1309 浙江金华[联通]\n32574c06-d0fc-4709-8fc9-fce30596efd3 河南郑州[联通]\n87068aa4-3b0e-4e22-814e-8ff838036e1b 浙江金华[联通]\n457575e4-cbbd-4796-89df-ad9707f19254 河南新乡[联通]\n4d7637d7-4950-4b79-9741-c397789bcf05 山东济南[联通]\n7f46f5c9-d719-4886-b3c0-6b6427908791 福建福州[联通]\nc48a380c-bac5-4976-b56c-53e9e5ebb691 江苏徐州[联通]\nb615642c-ac86-4322-9fbe-4bd79e175a99 广东深圳[联通]\nddfeba9f-a432-4b9a-b0a9-ef76e9499558 浙江嘉兴[联通]\n102df90c-0bcc-404a-97cd-475fd408ff6f 江苏宿迁[联通]\n62909299-548b-4bbc-a92a-959e6104fc2c 江苏徐州[联通]\nde221437-2390-4404-9a00-26b0853cf943 江苏宿迁[联通]\n7a23256e-1121-4c39-ba12-1ff663ba952a 福建福州[联通]\n5074fb13-4ab9-4f0a-87d9-f8ae51cb81c5 江苏常州[移动]\n722e28ca-dd02-4ccd-a134-f9d4218505a5 广东深圳[移动]\n8e7a403c-d998-4efa-b3d1-b67c0dfabc41 广东深圳[移动]'''\n\nurl = &quot;http://tool.chinaz.com/iframe.ashx?t=ping&quot;\n\nfor eve in total_list.split('\\n'):\n    id_data, node_name = eve.strip().split(&quot; &quot;)\n\n    form_data = {\n        'guid': id_data,\n        'host': 'anycodes.cn',\n        'ishost': '1',\n        'encode': 'ECvBP9vjbuXRi0CVhnXAbufDNPDryYzO',\n        'checktype': '1',\n    }\n    headers = {\n        'Host': 'tool.chinaz.com',\n        'Origin': 'http://tool.chinaz.com',\n        'Referer': 'http://tool.chinaz.com/speedtest/anycodes.cn',\n        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36',\n        'X-Requested-With': 'XMLHttpRequest'\n    }\n\n    result_data = urllib.request.urlopen(\n        urllib.request.Request(\n            url=url,\n            data=urllib.parse.urlencode(form_data).encode('utf-8'),\n            headers=headers\n        )\n    ).read().decode(&quot;utf-8&quot;)\n\n    # print(result_data)\n\n    try:\n        alltime = re.findall(&quot;alltime:'(.*?)'&quot;,result_data)[0]\n        conntime = re.findall(&quot;conntime:'(.*?)'&quot;, result_data)[0]\n        downtime = re.findall(&quot;downtime:'(.*?)'&quot;, result_data)[0]\n        final_string = &quot;%s\\t总耗时:%s\\t链接耗时:%s\\t下载耗时:%s&quot;%(node_name, alltime, conntime, downtime)\n    except:\n        final_string = &quot;%s链接异常！&quot;\n\n    print(final_string)`, `86206718104041280000`)\"\n            >\n              <div\n                class=\"gatsby-code-button\"\n                data-tooltip=\"\"\n              >\n                复制代码<svg class=\"gatsby-code-button-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M16 1H2v16h2V3h12V1zm-1 4l6 6v12H6V5h9zm-1 7h5.5L14 6.5V12z\"/></svg>\n              </div>\n            </div>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">import urllib.request\nimport urllib.parse\nimport re\n\ntotal_list = &#39;&#39;&#39;62a55a0e-387e-4d87-bf69-5e0c9dd6b983 江苏宿迁[电信]\nf403cdf2-27f8-4ccd-8f22-6f5a28a01309 广东佛山[电信]\nbcff47de-61bb-4bf7-9fe6-4e456067e540 广东惠州[电信]\n7740099a-6b60-49e0-9913-2f0b416ae63b 广东深圳[电信]\n2bfd90a0-4661-4920-9963-0241cd3fc0db 浙江湖州[电信]\nb698f5c4-0c88-4ae4-b123-ef57293ce442 辽宁大连[电信]\n7253644b-58d3-48bb-808a-3c8b9416cfd5 江苏泰州[电信]\nd8c0d1d1-9da8-4480-a9df-555731cdd7b8 安徽合肥[电信]\n299f5043-d454-4485-945f-a331d960d86e 江苏镇江[电信]\n38522b83-8893-4ca6-b45f-b6588b034462 云南昆明[电信]\n19705ba7-3816-4b35-976b-c3b8d69e78d2 湖南长沙[电信]\n8081b399-499a-4680-9a5a-723977cfea04 湖南衡阳[电信]\n5713f157-3378-495a-9c55-7172187e9f36 江苏宿迁[电信]\na80cd07e-5508-4be6-8c83-524fe59318b8 江苏泰州[电信]\n4daa81e2-f397-4cde-bf74-b2bee84a4ea5 江苏宿迁[电信]\nbdd1ecd4-5516-44f8-8022-d83e4ac102f2 广东佛山[电信]\n6b6f9b1c-6154-4696-96d6-112248f902dc 北京[电信]\n8292e59e-ffde-4988-814f-4fe7fc4ec888 贵州兴义[电信]\nbe09c5ce-3031-4565-8f6a-3e328e256e16 江苏扬州[电信]\n524906a3-2749-4469-aee3-48885f042a3a 江苏徐州[电信]\nfce17d47-07c3-4315-892b-acd76d918ada 广西南宁[电信]\n21cf6110-400c-4c6b-87c8-cada4ec3f6a7 浙江台州[电信]\n0c8ca9bf-fa7a-42a3-9148-f15ead65f45e 广东深圳[电信]\nb1499d95-7e3c-472a-9682-e58e1b362633 江西九江[电信]\n4130a733-57c7-432b-ab8d-735ccbefbc0a 山东枣庄[电信]\n066ab75f-0a74-40e8-b717-d17a71eda942 广东惠州[电信]\n1befa95d-cde1-473e-b851-38440d034f1c 江苏泰州[电信]\nc5ae6abd-901b-47c7-9018-7eda8b4441c6 陕西西安[电信]\nd1e4fc25-16e5-4651-a8d7-b8df50dda396 江苏镇江[电信]\n70a537ed-95b2-4bfd-b6b0-64c3920d9910 重庆[电信]\ne6a3a9b7-2088-41be-bf1d-6a25276ab1ed 江西吉安[电信]\n0e34cba2-fe5c-40d2-9ec7-e497f99365b8 广东广州[电信]\n547e8248-6dfb-4f4f-b52d-8a287e89b844 湖北随州[电信]\ndf8bdd7a-b928-41f8-959f-d0d56fadea64 四川绵阳[电信]\n4e5d43e6-9d6a-4e5a-b495-a78c0921d26d 四川成都[电信]\n36d59519-d4bb-4635-8476-1d6ea27f62b2 江苏镇江[电信]\nbc25c8fd-62a1-4c57-a44d-0855b6c67714 四川绵阳[电信]\n0d3fd0b2-1255-4e5d-b94e-717569d2e8bd 江苏扬州[电信]\n47a0f82f-7dbb-48f4-96e0-d7a279ebba11 浙江宁波[电信]\n61d76c8c-b681-4196-b734-7d8e60f1e3ae 浙江绍兴[电信]\nda8bc796-4e65-48ef-beaa-d2ee1a7dd4bf 广东佛山[电信]\ncd787783-c0f5-486c-ac9f-34a80e386c34 广东佛山[电信]\n0e8d2e22-74db-4b31-9edd-fdda946dcd03 江苏常州[电信]\n5daad9ff-ced5-426a-8216-bf2aad097de0 浙江温州[电信]\n91a304a7-f91b-49ac-abbe-b77442cbc48c 上海[电信]\n12b16bb6-d42d-4296-a394-b96b22bca9c3 陕西咸阳[电信]\nbf9f80ef-1ef7-4267-aece-4fb1e5fe45bf 湖北荆门[电信]\ncd442c9e-de26-470f-bba2-33a8e71e4639 福建泉州[电信]\n9fef7898-e2d3-4c02-ab2a-5dc780f5a65c 河南新乡[电信]\n65078859-3e99-48eb-b170-7463fc53a98e 辽宁大连[电信]\n0165e09b-aad3-46c2-87e8-160432229f60 贵州兴义[电信]\n817bc339-c6f6-479c-9708-01ca54f2be80 江西新余[电信]\n1edc7af0-68ac-427b-a368-c27610797971 广东佛山[电信]\n9bc90d67-d208-434d-b680-294ae4288571 新疆哈密[电信]\nb44faece-c6fe-4cc1-ab9a-ae7dcf37f146 辽宁鞍山[电信]\n7fb11d87-1029-487b-8345-27e12a6acf1e 江苏镇江[电信]\n04d82618-d562-4aa7-9db6-4600dd7f4780 湖南衡阳[电信]\n252167a8-eaeb-491b-a4f3-319d25680f48 江苏宿迁[电信]\n22456bec-ad37-49e8-ba6f-032b3faaa0a0 湖北武汉[电信]\n5802da93-4e05-4932-9bc6-20d5d75b7af5 江苏宿迁[电信]\na083795a-b69f-49fe-a905-cd8838c09553 浙江温州[电信]\n9c3b9aed-4b8a-4258-9b1f-55016211ced9 广东深圳[电信]\n2140cc66-e5ea-4f56-981a-8f044a98c92a 浙江绍兴[电信]\n9a8406ca-8a2d-44b7-a60e-4fe0ff6dd3aa 陕西西安[电信]\n8df24006-5e55-428c-9f29-9a2386480a4d 湖北仙桃[电信]\ncb2be8e0-670f-4922-8dd8-a1dd155cbf97 广东深圳[多线]\nc5964a0d-c49f-4fac-833d-2348b3b1304b 江苏常州[多线]\n19ef9d71-e0cb-4b79-a416-8fd670f6e7ca 江苏泰州[多线]\n5bea1430-f7c2-4146-88f4-17a7dc73a953 河南新乡[多线]\n1f430ff0-eae9-413a-af2a-1c2a8986cff0 河南新乡[多线]\nea551b59-2609-4ab4-89bc-14b2080f501a 河南新乡[多线]\n4d462057-4581-4ae1-974d-ca7ca019e700 河南新乡[多线]\n9c137190-5a57-4ef5-be4b-b9add998ad52 河南新乡[多线]\n120ec517-1b0f-4b6e-841d-61116f73099a 广东东莞[多线]\ncbc3caa1-9faf-438c-abde-fbd5c64c8036 辽宁大连[多线]\nba9e31d2-918a-41ad-9d0b-99175e365583 江苏扬州[多线]\n74cb6a5c-b044-49d0-abee-bf42beb6ae05 江苏宿迁[多线]\ne0cf79c5-9159-4ea6-a2a7-1bcaf9bfb292 山西运城[联通]\n2805fa9f-05ea-46bc-8ac0-1769b782bf52 黑龙江哈尔滨[联通]\n5439460c-0115-421a-b8ad-449eb2b4c28a 广东深圳[联通]\n9b7cbf0a-76b8-4308-8b66-9093dbe22541 浙江金华[联通]\na4800428-7ed4-4c8a-a049-4b90df6919f0 河南郑州[联通]\n654abac8-7b37-4a64-9a84-2d190db3d060 山东枣庄[联通]\n1b6a98df-c2f4-4a29-b5b5-1e44ce6d1309 浙江金华[联通]\n32574c06-d0fc-4709-8fc9-fce30596efd3 河南郑州[联通]\n87068aa4-3b0e-4e22-814e-8ff838036e1b 浙江金华[联通]\n457575e4-cbbd-4796-89df-ad9707f19254 河南新乡[联通]\n4d7637d7-4950-4b79-9741-c397789bcf05 山东济南[联通]\n7f46f5c9-d719-4886-b3c0-6b6427908791 福建福州[联通]\nc48a380c-bac5-4976-b56c-53e9e5ebb691 江苏徐州[联通]\nb615642c-ac86-4322-9fbe-4bd79e175a99 广东深圳[联通]\nddfeba9f-a432-4b9a-b0a9-ef76e9499558 浙江嘉兴[联通]\n102df90c-0bcc-404a-97cd-475fd408ff6f 江苏宿迁[联通]\n62909299-548b-4bbc-a92a-959e6104fc2c 江苏徐州[联通]\nde221437-2390-4404-9a00-26b0853cf943 江苏宿迁[联通]\n7a23256e-1121-4c39-ba12-1ff663ba952a 福建福州[联通]\n5074fb13-4ab9-4f0a-87d9-f8ae51cb81c5 江苏常州[移动]\n722e28ca-dd02-4ccd-a134-f9d4218505a5 广东深圳[移动]\n8e7a403c-d998-4efa-b3d1-b67c0dfabc41 广东深圳[移动]&#39;&#39;&#39;\n\nurl = &quot;http://tool.chinaz.com/iframe.ashx?t=ping&quot;\n\nfor eve in total_list.split(&#39;\\n&#39;):\n    id_data, node_name = eve.strip().split(&quot; &quot;)\n\n    form_data = {\n        &#39;guid&#39;: id_data,\n        &#39;host&#39;: &#39;anycodes.cn&#39;,\n        &#39;ishost&#39;: &#39;1&#39;,\n        &#39;encode&#39;: &#39;ECvBP9vjbuXRi0CVhnXAbufDNPDryYzO&#39;,\n        &#39;checktype&#39;: &#39;1&#39;,\n    }\n    headers = {\n        &#39;Host&#39;: &#39;tool.chinaz.com&#39;,\n        &#39;Origin&#39;: &#39;http://tool.chinaz.com&#39;,\n        &#39;Referer&#39;: &#39;http://tool.chinaz.com/speedtest/anycodes.cn&#39;,\n        &#39;User-Agent&#39;: &#39;Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36&#39;,\n        &#39;X-Requested-With&#39;: &#39;XMLHttpRequest&#39;\n    }\n\n    result_data = urllib.request.urlopen(\n        urllib.request.Request(\n            url=url,\n            data=urllib.parse.urlencode(form_data).encode(&#39;utf-8&#39;),\n            headers=headers\n        )\n    ).read().decode(&quot;utf-8&quot;)\n\n    # print(result_data)\n\n    try:\n        alltime = re.findall(&quot;alltime:&#39;(.*?)&#39;&quot;,result_data)[0]\n        conntime = re.findall(&quot;conntime:&#39;(.*?)&#39;&quot;, result_data)[0]\n        downtime = re.findall(&quot;downtime:&#39;(.*?)&#39;&quot;, result_data)[0]\n        final_string = &quot;%s\\t总耗时:%s\\t链接耗时:%s\\t下载耗时:%s&quot;%(node_name, alltime, conntime, downtime)\n    except:\n        final_string = &quot;%s链接异常！&quot;\n\n    print(final_string)</code></pre></div>\n<p>运行结果：</p>\n<div\n              class=\"gatsby-code-button-container\"\n              data-toaster-id=\"98055126446474000000\"\n              data-toaster-class=\"gatsby-code-button-toaster\"\n              data-toaster-text-class=\"gatsby-code-button-toaster-text\"\n              data-toaster-text=\"代码复制成功\"\n              data-toaster-duration=\"3500\"\n              onClick=\"copyToClipboard(`江苏宿迁[电信]\t总耗时:223\t链接耗时:121\t下载耗时:81\n广东佛山[电信]\t总耗时:44\t链接耗时:27\t下载耗时:17\n广东惠州[电信]\t总耗时:56\t链接耗时:34\t下载耗时:22\n广东深圳[电信]\t总耗时:149\t链接耗时:36\t下载耗时:25\n浙江湖州[电信]\t总耗时:3190\t链接耗时:3115\t下载耗时:75\n辽宁大连[电信]\t总耗时:468\t链接耗时:255\t下载耗时:170\n江苏泰州[电信]\t总耗时:180\t链接耗时:104\t下载耗时:69\n安徽合肥[电信]\t总耗时:196\t链接耗时:110\t下载耗时:73\n...`, `98055126446474000000`)\"\n            >\n              <div\n                class=\"gatsby-code-button\"\n                data-tooltip=\"\"\n              >\n                复制代码<svg class=\"gatsby-code-button-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M16 1H2v16h2V3h12V1zm-1 4l6 6v12H6V5h9zm-1 7h5.5L14 6.5V12z\"/></svg>\n              </div>\n            </div>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">江苏宿迁[电信]\t总耗时:223\t链接耗时:121\t下载耗时:81\n广东佛山[电信]\t总耗时:44\t链接耗时:27\t下载耗时:17\n广东惠州[电信]\t总耗时:56\t链接耗时:34\t下载耗时:22\n广东深圳[电信]\t总耗时:149\t链接耗时:36\t下载耗时:25\n浙江湖州[电信]\t总耗时:3190\t链接耗时:3115\t下载耗时:75\n辽宁大连[电信]\t总耗时:468\t链接耗时:255\t下载耗时:170\n江苏泰州[电信]\t总耗时:180\t链接耗时:104\t下载耗时:69\n安徽合肥[电信]\t总耗时:196\t链接耗时:110\t下载耗时:73\n...</code></pre></div>\n<p>将该部分内容融合之前的脚本中：</p>\n<div\n              class=\"gatsby-code-button-container\"\n              data-toaster-id=\"92950502561423030000\"\n              data-toaster-class=\"gatsby-code-button-toaster\"\n              data-toaster-text-class=\"gatsby-code-button-toaster-text\"\n              data-toaster-text=\"代码复制成功\"\n              data-toaster-duration=\"3500\"\n              onClick=\"copyToClipboard(`# -*- coding: utf8 -*-\nimport ssl\nimport json\nimport re\nimport socket\nimport smtplib\nimport urllib.request\nfrom email.mime.text import MIMEText\nfrom email.header import Header\n\nsocket.setdefaulttimeout(2.5)\nssl._create_default_https_context = ssl._create_unverified_context\n\ndef getWebTime():\n\n    final_list = []\n    final_status = True\n\n    total_list = '''62a55a0e-387e-4d87-bf69-5e0c9dd6b983 江苏宿迁[电信]\n    f403cdf2-27f8-4ccd-8f22-6f5a28a01309 广东佛山[电信]\n    bcff47de-61bb-4bf7-9fe6-4e456067e540 广东惠州[电信]\n    7740099a-6b60-49e0-9913-2f0b416ae63b 广东深圳[电信]\n    2bfd90a0-4661-4920-9963-0241cd3fc0db 浙江湖州[电信]\n    b698f5c4-0c88-4ae4-b123-ef57293ce442 辽宁大连[电信]\n    7253644b-58d3-48bb-808a-3c8b9416cfd5 江苏泰州[电信]\n    d8c0d1d1-9da8-4480-a9df-555731cdd7b8 安徽合肥[电信]\n    299f5043-d454-4485-945f-a331d960d86e 江苏镇江[电信]\n    38522b83-8893-4ca6-b45f-b6588b034462 云南昆明[电信]\n    19705ba7-3816-4b35-976b-c3b8d69e78d2 湖南长沙[电信]\n    8081b399-499a-4680-9a5a-723977cfea04 湖南衡阳[电信]\n    5713f157-3378-495a-9c55-7172187e9f36 江苏宿迁[电信]\n    a80cd07e-5508-4be6-8c83-524fe59318b8 江苏泰州[电信]\n    4daa81e2-f397-4cde-bf74-b2bee84a4ea5 江苏宿迁[电信]\n    bdd1ecd4-5516-44f8-8022-d83e4ac102f2 广东佛山[电信]\n    6b6f9b1c-6154-4696-96d6-112248f902dc 北京[电信]\n    8292e59e-ffde-4988-814f-4fe7fc4ec888 贵州兴义[电信]\n    be09c5ce-3031-4565-8f6a-3e328e256e16 江苏扬州[电信]\n    524906a3-2749-4469-aee3-48885f042a3a 江苏徐州[电信]\n    fce17d47-07c3-4315-892b-acd76d918ada 广西南宁[电信]\n    21cf6110-400c-4c6b-87c8-cada4ec3f6a7 浙江台州[电信]\n    0c8ca9bf-fa7a-42a3-9148-f15ead65f45e 广东深圳[电信]\n    b1499d95-7e3c-472a-9682-e58e1b362633 江西九江[电信]\n    4130a733-57c7-432b-ab8d-735ccbefbc0a 山东枣庄[电信]\n    066ab75f-0a74-40e8-b717-d17a71eda942 广东惠州[电信]\n    1befa95d-cde1-473e-b851-38440d034f1c 江苏泰州[电信]\n    c5ae6abd-901b-47c7-9018-7eda8b4441c6 陕西西安[电信]\n    d1e4fc25-16e5-4651-a8d7-b8df50dda396 江苏镇江[电信]\n    70a537ed-95b2-4bfd-b6b0-64c3920d9910 重庆[电信]\n    e6a3a9b7-2088-41be-bf1d-6a25276ab1ed 江西吉安[电信]\n    0e34cba2-fe5c-40d2-9ec7-e497f99365b8 广东广州[电信]\n    547e8248-6dfb-4f4f-b52d-8a287e89b844 湖北随州[电信]\n    df8bdd7a-b928-41f8-959f-d0d56fadea64 四川绵阳[电信]\n    4e5d43e6-9d6a-4e5a-b495-a78c0921d26d 四川成都[电信]\n    36d59519-d4bb-4635-8476-1d6ea27f62b2 江苏镇江[电信]\n    bc25c8fd-62a1-4c57-a44d-0855b6c67714 四川绵阳[电信]\n    0d3fd0b2-1255-4e5d-b94e-717569d2e8bd 江苏扬州[电信]\n    47a0f82f-7dbb-48f4-96e0-d7a279ebba11 浙江宁波[电信]\n    61d76c8c-b681-4196-b734-7d8e60f1e3ae 浙江绍兴[电信]\n    da8bc796-4e65-48ef-beaa-d2ee1a7dd4bf 广东佛山[电信]\n    cd787783-c0f5-486c-ac9f-34a80e386c34 广东佛山[电信]\n    0e8d2e22-74db-4b31-9edd-fdda946dcd03 江苏常州[电信]\n    5daad9ff-ced5-426a-8216-bf2aad097de0 浙江温州[电信]\n    91a304a7-f91b-49ac-abbe-b77442cbc48c 上海[电信]\n    12b16bb6-d42d-4296-a394-b96b22bca9c3 陕西咸阳[电信]\n    bf9f80ef-1ef7-4267-aece-4fb1e5fe45bf 湖北荆门[电信]\n    cd442c9e-de26-470f-bba2-33a8e71e4639 福建泉州[电信]\n    9fef7898-e2d3-4c02-ab2a-5dc780f5a65c 河南新乡[电信]\n    65078859-3e99-48eb-b170-7463fc53a98e 辽宁大连[电信]\n    0165e09b-aad3-46c2-87e8-160432229f60 贵州兴义[电信]\n    817bc339-c6f6-479c-9708-01ca54f2be80 江西新余[电信]\n    1edc7af0-68ac-427b-a368-c27610797971 广东佛山[电信]\n    9bc90d67-d208-434d-b680-294ae4288571 新疆哈密[电信]\n    b44faece-c6fe-4cc1-ab9a-ae7dcf37f146 辽宁鞍山[电信]\n    7fb11d87-1029-487b-8345-27e12a6acf1e 江苏镇江[电信]\n    04d82618-d562-4aa7-9db6-4600dd7f4780 湖南衡阳[电信]\n    252167a8-eaeb-491b-a4f3-319d25680f48 江苏宿迁[电信]\n    22456bec-ad37-49e8-ba6f-032b3faaa0a0 湖北武汉[电信]\n    5802da93-4e05-4932-9bc6-20d5d75b7af5 江苏宿迁[电信]\n    a083795a-b69f-49fe-a905-cd8838c09553 浙江温州[电信]\n    9c3b9aed-4b8a-4258-9b1f-55016211ced9 广东深圳[电信]\n    2140cc66-e5ea-4f56-981a-8f044a98c92a 浙江绍兴[电信]\n    9a8406ca-8a2d-44b7-a60e-4fe0ff6dd3aa 陕西西安[电信]\n    8df24006-5e55-428c-9f29-9a2386480a4d 湖北仙桃[电信]\n    cb2be8e0-670f-4922-8dd8-a1dd155cbf97 广东深圳[多线]\n    c5964a0d-c49f-4fac-833d-2348b3b1304b 江苏常州[多线]\n    19ef9d71-e0cb-4b79-a416-8fd670f6e7ca 江苏泰州[多线]\n    5bea1430-f7c2-4146-88f4-17a7dc73a953 河南新乡[多线]\n    1f430ff0-eae9-413a-af2a-1c2a8986cff0 河南新乡[多线]\n    ea551b59-2609-4ab4-89bc-14b2080f501a 河南新乡[多线]\n    4d462057-4581-4ae1-974d-ca7ca019e700 河南新乡[多线]\n    9c137190-5a57-4ef5-be4b-b9add998ad52 河南新乡[多线]\n    120ec517-1b0f-4b6e-841d-61116f73099a 广东东莞[多线]\n    cbc3caa1-9faf-438c-abde-fbd5c64c8036 辽宁大连[多线]\n    ba9e31d2-918a-41ad-9d0b-99175e365583 江苏扬州[多线]\n    74cb6a5c-b044-49d0-abee-bf42beb6ae05 江苏宿迁[多线]\n    e0cf79c5-9159-4ea6-a2a7-1bcaf9bfb292 山西运城[联通]\n    2805fa9f-05ea-46bc-8ac0-1769b782bf52 黑龙江哈尔滨[联通]\n    5439460c-0115-421a-b8ad-449eb2b4c28a 广东深圳[联通]\n    9b7cbf0a-76b8-4308-8b66-9093dbe22541 浙江金华[联通]\n    a4800428-7ed4-4c8a-a049-4b90df6919f0 河南郑州[联通]\n    654abac8-7b37-4a64-9a84-2d190db3d060 山东枣庄[联通]\n    1b6a98df-c2f4-4a29-b5b5-1e44ce6d1309 浙江金华[联通]\n    32574c06-d0fc-4709-8fc9-fce30596efd3 河南郑州[联通]\n    87068aa4-3b0e-4e22-814e-8ff838036e1b 浙江金华[联通]\n    457575e4-cbbd-4796-89df-ad9707f19254 河南新乡[联通]\n    4d7637d7-4950-4b79-9741-c397789bcf05 山东济南[联通]\n    7f46f5c9-d719-4886-b3c0-6b6427908791 福建福州[联通]\n    c48a380c-bac5-4976-b56c-53e9e5ebb691 江苏徐州[联通]\n    b615642c-ac86-4322-9fbe-4bd79e175a99 广东深圳[联通]\n    ddfeba9f-a432-4b9a-b0a9-ef76e9499558 浙江嘉兴[联通]\n    102df90c-0bcc-404a-97cd-475fd408ff6f 江苏宿迁[联通]\n    62909299-548b-4bbc-a92a-959e6104fc2c 江苏徐州[联通]\n    de221437-2390-4404-9a00-26b0853cf943 江苏宿迁[联通]\n    7a23256e-1121-4c39-ba12-1ff663ba952a 福建福州[联通]\n    5074fb13-4ab9-4f0a-87d9-f8ae51cb81c5 江苏常州[移动]\n    722e28ca-dd02-4ccd-a134-f9d4218505a5 广东深圳[移动]\n    8e7a403c-d998-4efa-b3d1-b67c0dfabc41 广东深圳[移动]'''\n\n    url = &quot;http://tool.chinaz.com/iframe.ashx?t=ping&quot;\n\n    for eve in total_list.split('\\n'):\n        id_data, node_name = eve.strip().split(&quot; &quot;)\n\n        form_data = {\n            'guid': id_data,\n            'host': 'anycodes.cn',\n            'ishost': '1',\n            'encode': 'ECvBP9vjbuXRi0CVhnXAbufDNPDryYzO',\n            'checktype': '1',\n        }\n        headers = {\n            'Host': 'tool.chinaz.com',\n            'Origin': 'http://tool.chinaz.com',\n            'Referer': 'http://tool.chinaz.com/speedtest/anycodes.cn',\n            'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36',\n            'X-Requested-With': 'XMLHttpRequest'\n        }\n\n        try:\n            result_data = urllib.request.urlopen(\n                urllib.request.Request(\n                    url=url,\n                    data=urllib.parse.urlencode(form_data).encode('utf-8'),\n                    headers=headers\n                )\n            ).read().decode(&quot;utf-8&quot;)\n\n            try:\n                alltime = re.findall(&quot;alltime:'(.*?)'&quot;, result_data)[0]\n                conntime = re.findall(&quot;conntime:'(.*?)'&quot;, result_data)[0]\n                downtime = re.findall(&quot;downtime:'(.*?)'&quot;, result_data)[0]\n                final_string = &quot;%s\\t总耗时:%s\\t链接耗时:%s\\t下载耗时:%s&quot; % (node_name, alltime, conntime, downtime)\n            except:\n                final_string = &quot;%s链接异常！&quot; % (node_name)\n                final_status = False\n        except:\n            final_string = &quot;%s链接超时！&quot; % (node_name)\n            final_status = False\n        final_list.append(final_string)\n        print(final_string)\n    return (final_status,final_list)\n\n\ndef sendEmail(content, to_user):\n    sender = 'service@anycodes.cn'\n    receivers = [to_user]\n\n    mail_msg = content\n    message = MIMEText(mail_msg, 'html', 'utf-8')\n    message['From'] = Header(&quot;网站监控&quot;, 'utf-8')\n    message['To'] = Header(&quot;站长&quot;, 'utf-8')\n\n    subject = &quot;网站监控告警&quot;\n    message['Subject'] = Header(subject, 'utf-8')\n\n    try:\n        smtpObj = smtplib.SMTP_SSL(&quot;smtp.exmail.qq.com&quot;, 465)\n        smtpObj.login('service@anycodes.cn', '密码')\n        smtpObj.sendmail(sender, receivers, message.as_string())\n    except smtplib.SMTPException:\n        pass\n\n\ndef getStatusCode(url):\n    return urllib.request.urlopen(url).getcode()\n\n\ndef main_handler(event, context):\n    url = &quot;http://www.anycodes.cn&quot;\n    # if getStatusCode(url) == 200:\n    #     sendEmail(&quot;您的网站%s可以访问！&quot; % (url), &quot;service@52exe.cn&quot;)\n    final_status,final_list = getWebTime()\n    if final_status:\n        sendEmail(&quot;您的网站%s的状态：<br>%s&quot; % (url, &quot;<br>&quot;.join(final_list)), &quot;service@52exe.cn&quot;)\n    else:\n        sendEmail(&quot;您的网站%s的状态：<br>%s&quot; % (url, &quot;<br>&quot;.join(final_list)), &quot;service@52exe.cn&quot;)`, `92950502561423030000`)\"\n            >\n              <div\n                class=\"gatsby-code-button\"\n                data-tooltip=\"\"\n              >\n                复制代码<svg class=\"gatsby-code-button-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M16 1H2v16h2V3h12V1zm-1 4l6 6v12H6V5h9zm-1 7h5.5L14 6.5V12z\"/></svg>\n              </div>\n            </div>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\"># -*- coding: utf8 -*-\nimport ssl\nimport json\nimport re\nimport socket\nimport smtplib\nimport urllib.request\nfrom email.mime.text import MIMEText\nfrom email.header import Header\n\nsocket.setdefaulttimeout(2.5)\nssl._create_default_https_context = ssl._create_unverified_context\n\ndef getWebTime():\n\n    final_list = []\n    final_status = True\n\n    total_list = &#39;&#39;&#39;62a55a0e-387e-4d87-bf69-5e0c9dd6b983 江苏宿迁[电信]\n    f403cdf2-27f8-4ccd-8f22-6f5a28a01309 广东佛山[电信]\n    bcff47de-61bb-4bf7-9fe6-4e456067e540 广东惠州[电信]\n    7740099a-6b60-49e0-9913-2f0b416ae63b 广东深圳[电信]\n    2bfd90a0-4661-4920-9963-0241cd3fc0db 浙江湖州[电信]\n    b698f5c4-0c88-4ae4-b123-ef57293ce442 辽宁大连[电信]\n    7253644b-58d3-48bb-808a-3c8b9416cfd5 江苏泰州[电信]\n    d8c0d1d1-9da8-4480-a9df-555731cdd7b8 安徽合肥[电信]\n    299f5043-d454-4485-945f-a331d960d86e 江苏镇江[电信]\n    38522b83-8893-4ca6-b45f-b6588b034462 云南昆明[电信]\n    19705ba7-3816-4b35-976b-c3b8d69e78d2 湖南长沙[电信]\n    8081b399-499a-4680-9a5a-723977cfea04 湖南衡阳[电信]\n    5713f157-3378-495a-9c55-7172187e9f36 江苏宿迁[电信]\n    a80cd07e-5508-4be6-8c83-524fe59318b8 江苏泰州[电信]\n    4daa81e2-f397-4cde-bf74-b2bee84a4ea5 江苏宿迁[电信]\n    bdd1ecd4-5516-44f8-8022-d83e4ac102f2 广东佛山[电信]\n    6b6f9b1c-6154-4696-96d6-112248f902dc 北京[电信]\n    8292e59e-ffde-4988-814f-4fe7fc4ec888 贵州兴义[电信]\n    be09c5ce-3031-4565-8f6a-3e328e256e16 江苏扬州[电信]\n    524906a3-2749-4469-aee3-48885f042a3a 江苏徐州[电信]\n    fce17d47-07c3-4315-892b-acd76d918ada 广西南宁[电信]\n    21cf6110-400c-4c6b-87c8-cada4ec3f6a7 浙江台州[电信]\n    0c8ca9bf-fa7a-42a3-9148-f15ead65f45e 广东深圳[电信]\n    b1499d95-7e3c-472a-9682-e58e1b362633 江西九江[电信]\n    4130a733-57c7-432b-ab8d-735ccbefbc0a 山东枣庄[电信]\n    066ab75f-0a74-40e8-b717-d17a71eda942 广东惠州[电信]\n    1befa95d-cde1-473e-b851-38440d034f1c 江苏泰州[电信]\n    c5ae6abd-901b-47c7-9018-7eda8b4441c6 陕西西安[电信]\n    d1e4fc25-16e5-4651-a8d7-b8df50dda396 江苏镇江[电信]\n    70a537ed-95b2-4bfd-b6b0-64c3920d9910 重庆[电信]\n    e6a3a9b7-2088-41be-bf1d-6a25276ab1ed 江西吉安[电信]\n    0e34cba2-fe5c-40d2-9ec7-e497f99365b8 广东广州[电信]\n    547e8248-6dfb-4f4f-b52d-8a287e89b844 湖北随州[电信]\n    df8bdd7a-b928-41f8-959f-d0d56fadea64 四川绵阳[电信]\n    4e5d43e6-9d6a-4e5a-b495-a78c0921d26d 四川成都[电信]\n    36d59519-d4bb-4635-8476-1d6ea27f62b2 江苏镇江[电信]\n    bc25c8fd-62a1-4c57-a44d-0855b6c67714 四川绵阳[电信]\n    0d3fd0b2-1255-4e5d-b94e-717569d2e8bd 江苏扬州[电信]\n    47a0f82f-7dbb-48f4-96e0-d7a279ebba11 浙江宁波[电信]\n    61d76c8c-b681-4196-b734-7d8e60f1e3ae 浙江绍兴[电信]\n    da8bc796-4e65-48ef-beaa-d2ee1a7dd4bf 广东佛山[电信]\n    cd787783-c0f5-486c-ac9f-34a80e386c34 广东佛山[电信]\n    0e8d2e22-74db-4b31-9edd-fdda946dcd03 江苏常州[电信]\n    5daad9ff-ced5-426a-8216-bf2aad097de0 浙江温州[电信]\n    91a304a7-f91b-49ac-abbe-b77442cbc48c 上海[电信]\n    12b16bb6-d42d-4296-a394-b96b22bca9c3 陕西咸阳[电信]\n    bf9f80ef-1ef7-4267-aece-4fb1e5fe45bf 湖北荆门[电信]\n    cd442c9e-de26-470f-bba2-33a8e71e4639 福建泉州[电信]\n    9fef7898-e2d3-4c02-ab2a-5dc780f5a65c 河南新乡[电信]\n    65078859-3e99-48eb-b170-7463fc53a98e 辽宁大连[电信]\n    0165e09b-aad3-46c2-87e8-160432229f60 贵州兴义[电信]\n    817bc339-c6f6-479c-9708-01ca54f2be80 江西新余[电信]\n    1edc7af0-68ac-427b-a368-c27610797971 广东佛山[电信]\n    9bc90d67-d208-434d-b680-294ae4288571 新疆哈密[电信]\n    b44faece-c6fe-4cc1-ab9a-ae7dcf37f146 辽宁鞍山[电信]\n    7fb11d87-1029-487b-8345-27e12a6acf1e 江苏镇江[电信]\n    04d82618-d562-4aa7-9db6-4600dd7f4780 湖南衡阳[电信]\n    252167a8-eaeb-491b-a4f3-319d25680f48 江苏宿迁[电信]\n    22456bec-ad37-49e8-ba6f-032b3faaa0a0 湖北武汉[电信]\n    5802da93-4e05-4932-9bc6-20d5d75b7af5 江苏宿迁[电信]\n    a083795a-b69f-49fe-a905-cd8838c09553 浙江温州[电信]\n    9c3b9aed-4b8a-4258-9b1f-55016211ced9 广东深圳[电信]\n    2140cc66-e5ea-4f56-981a-8f044a98c92a 浙江绍兴[电信]\n    9a8406ca-8a2d-44b7-a60e-4fe0ff6dd3aa 陕西西安[电信]\n    8df24006-5e55-428c-9f29-9a2386480a4d 湖北仙桃[电信]\n    cb2be8e0-670f-4922-8dd8-a1dd155cbf97 广东深圳[多线]\n    c5964a0d-c49f-4fac-833d-2348b3b1304b 江苏常州[多线]\n    19ef9d71-e0cb-4b79-a416-8fd670f6e7ca 江苏泰州[多线]\n    5bea1430-f7c2-4146-88f4-17a7dc73a953 河南新乡[多线]\n    1f430ff0-eae9-413a-af2a-1c2a8986cff0 河南新乡[多线]\n    ea551b59-2609-4ab4-89bc-14b2080f501a 河南新乡[多线]\n    4d462057-4581-4ae1-974d-ca7ca019e700 河南新乡[多线]\n    9c137190-5a57-4ef5-be4b-b9add998ad52 河南新乡[多线]\n    120ec517-1b0f-4b6e-841d-61116f73099a 广东东莞[多线]\n    cbc3caa1-9faf-438c-abde-fbd5c64c8036 辽宁大连[多线]\n    ba9e31d2-918a-41ad-9d0b-99175e365583 江苏扬州[多线]\n    74cb6a5c-b044-49d0-abee-bf42beb6ae05 江苏宿迁[多线]\n    e0cf79c5-9159-4ea6-a2a7-1bcaf9bfb292 山西运城[联通]\n    2805fa9f-05ea-46bc-8ac0-1769b782bf52 黑龙江哈尔滨[联通]\n    5439460c-0115-421a-b8ad-449eb2b4c28a 广东深圳[联通]\n    9b7cbf0a-76b8-4308-8b66-9093dbe22541 浙江金华[联通]\n    a4800428-7ed4-4c8a-a049-4b90df6919f0 河南郑州[联通]\n    654abac8-7b37-4a64-9a84-2d190db3d060 山东枣庄[联通]\n    1b6a98df-c2f4-4a29-b5b5-1e44ce6d1309 浙江金华[联通]\n    32574c06-d0fc-4709-8fc9-fce30596efd3 河南郑州[联通]\n    87068aa4-3b0e-4e22-814e-8ff838036e1b 浙江金华[联通]\n    457575e4-cbbd-4796-89df-ad9707f19254 河南新乡[联通]\n    4d7637d7-4950-4b79-9741-c397789bcf05 山东济南[联通]\n    7f46f5c9-d719-4886-b3c0-6b6427908791 福建福州[联通]\n    c48a380c-bac5-4976-b56c-53e9e5ebb691 江苏徐州[联通]\n    b615642c-ac86-4322-9fbe-4bd79e175a99 广东深圳[联通]\n    ddfeba9f-a432-4b9a-b0a9-ef76e9499558 浙江嘉兴[联通]\n    102df90c-0bcc-404a-97cd-475fd408ff6f 江苏宿迁[联通]\n    62909299-548b-4bbc-a92a-959e6104fc2c 江苏徐州[联通]\n    de221437-2390-4404-9a00-26b0853cf943 江苏宿迁[联通]\n    7a23256e-1121-4c39-ba12-1ff663ba952a 福建福州[联通]\n    5074fb13-4ab9-4f0a-87d9-f8ae51cb81c5 江苏常州[移动]\n    722e28ca-dd02-4ccd-a134-f9d4218505a5 广东深圳[移动]\n    8e7a403c-d998-4efa-b3d1-b67c0dfabc41 广东深圳[移动]&#39;&#39;&#39;\n\n    url = &quot;http://tool.chinaz.com/iframe.ashx?t=ping&quot;\n\n    for eve in total_list.split(&#39;\\n&#39;):\n        id_data, node_name = eve.strip().split(&quot; &quot;)\n\n        form_data = {\n            &#39;guid&#39;: id_data,\n            &#39;host&#39;: &#39;anycodes.cn&#39;,\n            &#39;ishost&#39;: &#39;1&#39;,\n            &#39;encode&#39;: &#39;ECvBP9vjbuXRi0CVhnXAbufDNPDryYzO&#39;,\n            &#39;checktype&#39;: &#39;1&#39;,\n        }\n        headers = {\n            &#39;Host&#39;: &#39;tool.chinaz.com&#39;,\n            &#39;Origin&#39;: &#39;http://tool.chinaz.com&#39;,\n            &#39;Referer&#39;: &#39;http://tool.chinaz.com/speedtest/anycodes.cn&#39;,\n            &#39;User-Agent&#39;: &#39;Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36&#39;,\n            &#39;X-Requested-With&#39;: &#39;XMLHttpRequest&#39;\n        }\n\n        try:\n            result_data = urllib.request.urlopen(\n                urllib.request.Request(\n                    url=url,\n                    data=urllib.parse.urlencode(form_data).encode(&#39;utf-8&#39;),\n                    headers=headers\n                )\n            ).read().decode(&quot;utf-8&quot;)\n\n            try:\n                alltime = re.findall(&quot;alltime:&#39;(.*?)&#39;&quot;, result_data)[0]\n                conntime = re.findall(&quot;conntime:&#39;(.*?)&#39;&quot;, result_data)[0]\n                downtime = re.findall(&quot;downtime:&#39;(.*?)&#39;&quot;, result_data)[0]\n                final_string = &quot;%s\\t总耗时:%s\\t链接耗时:%s\\t下载耗时:%s&quot; % (node_name, alltime, conntime, downtime)\n            except:\n                final_string = &quot;%s链接异常！&quot; % (node_name)\n                final_status = False\n        except:\n            final_string = &quot;%s链接超时！&quot; % (node_name)\n            final_status = False\n        final_list.append(final_string)\n        print(final_string)\n    return (final_status,final_list)\n\n\ndef sendEmail(content, to_user):\n    sender = &#39;service@anycodes.cn&#39;\n    receivers = [to_user]\n\n    mail_msg = content\n    message = MIMEText(mail_msg, &#39;html&#39;, &#39;utf-8&#39;)\n    message[&#39;From&#39;] = Header(&quot;网站监控&quot;, &#39;utf-8&#39;)\n    message[&#39;To&#39;] = Header(&quot;站长&quot;, &#39;utf-8&#39;)\n\n    subject = &quot;网站监控告警&quot;\n    message[&#39;Subject&#39;] = Header(subject, &#39;utf-8&#39;)\n\n    try:\n        smtpObj = smtplib.SMTP_SSL(&quot;smtp.exmail.qq.com&quot;, 465)\n        smtpObj.login(&#39;service@anycodes.cn&#39;, &#39;密码&#39;)\n        smtpObj.sendmail(sender, receivers, message.as_string())\n    except smtplib.SMTPException:\n        pass\n\n\ndef getStatusCode(url):\n    return urllib.request.urlopen(url).getcode()\n\n\ndef main_handler(event, context):\n    url = &quot;http://www.anycodes.cn&quot;\n    # if getStatusCode(url) == 200:\n    #     sendEmail(&quot;您的网站%s可以访问！&quot; % (url), &quot;service@52exe.cn&quot;)\n    final_status,final_list = getWebTime()\n    if final_status:\n        sendEmail(&quot;您的网站%s的状态：&lt;br&gt;%s&quot; % (url, &quot;&lt;br&gt;&quot;.join(final_list)), &quot;service@52exe.cn&quot;)\n    else:\n        sendEmail(&quot;您的网站%s的状态：&lt;br&gt;%s&quot; % (url, &quot;&lt;br&gt;&quot;.join(final_list)), &quot;service@52exe.cn&quot;)</code></pre></div>\n<p>这个程序运行的时间可能会有点长，所以需要对云函数的 timeout 进行修改：</p>\n<p><img src=\"https://img.serverlesscloud.cn/tmp/v2-efd3ba124d7a3e0788d30c418be63eed_1440w-20200414234032458.jpg\" alt=\"img\"></p>\n<p>修改之后，进行测试和部署：</p>\n<p><img src=\"https://img.serverlesscloud.cn/tmp/v2-ca02b9edb487827e9bbac1c65c439edc_1440w-20200414234037150.jpg\" alt=\"img\"></p>\n<p>之后便可以部署到线上：</p>\n<p><img src=\"https://img.serverlesscloud.cn/tmp/v2-621d034d191f2d1b2d3f93432b785405_1440w-20200414234040596.jpg\" alt=\"img\"></p>\n<p>当然，这里可能还有一些小问题。那就是，某些测试节点容易出问题，导致我们网站无法访问，所以这个告警机制可以重新编排一下：</p>\n<p>当 n 个节点出现问题，再进行告警：</p>\n<div\n              class=\"gatsby-code-button-container\"\n              data-toaster-id=\"23015395383836123000\"\n              data-toaster-class=\"gatsby-code-button-toaster\"\n              data-toaster-text-class=\"gatsby-code-button-toaster-text\"\n              data-toaster-text=\"代码复制成功\"\n              data-toaster-duration=\"3500\"\n              onClick=\"copyToClipboard(`# -*- coding: utf8 -*-\nimport ssl\nimport json\nimport re\nimport socket\nimport smtplib\nimport urllib.request\nfrom email.mime.text import MIMEText\nfrom email.header import Header\n\nsocket.setdefaulttimeout(2.5)\nssl._create_default_https_context = ssl._create_unverified_context\n\ndef getWebTime():\n\n    final_list = []\n    final_status_time = 6\n    start_time = 0\n\n    total_list = '''62a55a0e-387e-4d87-bf69-5e0c9dd6b983 江苏宿迁[电信]\n    f403cdf2-27f8-4ccd-8f22-6f5a28a01309 广东佛山[电信]\n    bcff47de-61bb-4bf7-9fe6-4e456067e540 广东惠州[电信]\n    7740099a-6b60-49e0-9913-2f0b416ae63b 广东深圳[电信]\n    2bfd90a0-4661-4920-9963-0241cd3fc0db 浙江湖州[电信]\n    b698f5c4-0c88-4ae4-b123-ef57293ce442 辽宁大连[电信]\n    7253644b-58d3-48bb-808a-3c8b9416cfd5 江苏泰州[电信]\n    d8c0d1d1-9da8-4480-a9df-555731cdd7b8 安徽合肥[电信]\n    299f5043-d454-4485-945f-a331d960d86e 江苏镇江[电信]\n    38522b83-8893-4ca6-b45f-b6588b034462 云南昆明[电信]\n    19705ba7-3816-4b35-976b-c3b8d69e78d2 湖南长沙[电信]\n    8081b399-499a-4680-9a5a-723977cfea04 湖南衡阳[电信]\n    5713f157-3378-495a-9c55-7172187e9f36 江苏宿迁[电信]\n    a80cd07e-5508-4be6-8c83-524fe59318b8 江苏泰州[电信]\n    4daa81e2-f397-4cde-bf74-b2bee84a4ea5 江苏宿迁[电信]\n    bdd1ecd4-5516-44f8-8022-d83e4ac102f2 广东佛山[电信]\n    6b6f9b1c-6154-4696-96d6-112248f902dc 北京[电信]\n    8292e59e-ffde-4988-814f-4fe7fc4ec888 贵州兴义[电信]\n    be09c5ce-3031-4565-8f6a-3e328e256e16 江苏扬州[电信]\n    524906a3-2749-4469-aee3-48885f042a3a 江苏徐州[电信]\n    fce17d47-07c3-4315-892b-acd76d918ada 广西南宁[电信]\n    21cf6110-400c-4c6b-87c8-cada4ec3f6a7 浙江台州[电信]\n    0c8ca9bf-fa7a-42a3-9148-f15ead65f45e 广东深圳[电信]\n    b1499d95-7e3c-472a-9682-e58e1b362633 江西九江[电信]\n    4130a733-57c7-432b-ab8d-735ccbefbc0a 山东枣庄[电信]\n    066ab75f-0a74-40e8-b717-d17a71eda942 广东惠州[电信]\n    1befa95d-cde1-473e-b851-38440d034f1c 江苏泰州[电信]\n    c5ae6abd-901b-47c7-9018-7eda8b4441c6 陕西西安[电信]\n    d1e4fc25-16e5-4651-a8d7-b8df50dda396 江苏镇江[电信]\n    70a537ed-95b2-4bfd-b6b0-64c3920d9910 重庆[电信]\n    e6a3a9b7-2088-41be-bf1d-6a25276ab1ed 江西吉安[电信]\n    0e34cba2-fe5c-40d2-9ec7-e497f99365b8 广东广州[电信]\n    547e8248-6dfb-4f4f-b52d-8a287e89b844 湖北随州[电信]\n    df8bdd7a-b928-41f8-959f-d0d56fadea64 四川绵阳[电信]\n    4e5d43e6-9d6a-4e5a-b495-a78c0921d26d 四川成都[电信]\n    36d59519-d4bb-4635-8476-1d6ea27f62b2 江苏镇江[电信]\n    bc25c8fd-62a1-4c57-a44d-0855b6c67714 四川绵阳[电信]\n    0d3fd0b2-1255-4e5d-b94e-717569d2e8bd 江苏扬州[电信]\n    47a0f82f-7dbb-48f4-96e0-d7a279ebba11 浙江宁波[电信]\n    61d76c8c-b681-4196-b734-7d8e60f1e3ae 浙江绍兴[电信]\n    da8bc796-4e65-48ef-beaa-d2ee1a7dd4bf 广东佛山[电信]\n    cd787783-c0f5-486c-ac9f-34a80e386c34 广东佛山[电信]\n    0e8d2e22-74db-4b31-9edd-fdda946dcd03 江苏常州[电信]\n    5daad9ff-ced5-426a-8216-bf2aad097de0 浙江温州[电信]\n    91a304a7-f91b-49ac-abbe-b77442cbc48c 上海[电信]\n    12b16bb6-d42d-4296-a394-b96b22bca9c3 陕西咸阳[电信]\n    bf9f80ef-1ef7-4267-aece-4fb1e5fe45bf 湖北荆门[电信]\n    cd442c9e-de26-470f-bba2-33a8e71e4639 福建泉州[电信]\n    9fef7898-e2d3-4c02-ab2a-5dc780f5a65c 河南新乡[电信]\n    65078859-3e99-48eb-b170-7463fc53a98e 辽宁大连[电信]\n    0165e09b-aad3-46c2-87e8-160432229f60 贵州兴义[电信]\n    817bc339-c6f6-479c-9708-01ca54f2be80 江西新余[电信]\n    1edc7af0-68ac-427b-a368-c27610797971 广东佛山[电信]\n    9bc90d67-d208-434d-b680-294ae4288571 新疆哈密[电信]\n    b44faece-c6fe-4cc1-ab9a-ae7dcf37f146 辽宁鞍山[电信]\n    7fb11d87-1029-487b-8345-27e12a6acf1e 江苏镇江[电信]\n    04d82618-d562-4aa7-9db6-4600dd7f4780 湖南衡阳[电信]\n    252167a8-eaeb-491b-a4f3-319d25680f48 江苏宿迁[电信]\n    22456bec-ad37-49e8-ba6f-032b3faaa0a0 湖北武汉[电信]\n    5802da93-4e05-4932-9bc6-20d5d75b7af5 江苏宿迁[电信]\n    a083795a-b69f-49fe-a905-cd8838c09553 浙江温州[电信]\n    9c3b9aed-4b8a-4258-9b1f-55016211ced9 广东深圳[电信]\n    2140cc66-e5ea-4f56-981a-8f044a98c92a 浙江绍兴[电信]\n    9a8406ca-8a2d-44b7-a60e-4fe0ff6dd3aa 陕西西安[电信]\n    8df24006-5e55-428c-9f29-9a2386480a4d 湖北仙桃[电信]\n    cb2be8e0-670f-4922-8dd8-a1dd155cbf97 广东深圳[多线]\n    c5964a0d-c49f-4fac-833d-2348b3b1304b 江苏常州[多线]\n    19ef9d71-e0cb-4b79-a416-8fd670f6e7ca 江苏泰州[多线]\n    5bea1430-f7c2-4146-88f4-17a7dc73a953 河南新乡[多线]\n    1f430ff0-eae9-413a-af2a-1c2a8986cff0 河南新乡[多线]\n    ea551b59-2609-4ab4-89bc-14b2080f501a 河南新乡[多线]\n    4d462057-4581-4ae1-974d-ca7ca019e700 河南新乡[多线]\n    9c137190-5a57-4ef5-be4b-b9add998ad52 河南新乡[多线]\n    120ec517-1b0f-4b6e-841d-61116f73099a 广东东莞[多线]\n    cbc3caa1-9faf-438c-abde-fbd5c64c8036 辽宁大连[多线]\n    ba9e31d2-918a-41ad-9d0b-99175e365583 江苏扬州[多线]\n    74cb6a5c-b044-49d0-abee-bf42beb6ae05 江苏宿迁[多线]\n    e0cf79c5-9159-4ea6-a2a7-1bcaf9bfb292 山西运城[联通]\n    2805fa9f-05ea-46bc-8ac0-1769b782bf52 黑龙江哈尔滨[联通]\n    5439460c-0115-421a-b8ad-449eb2b4c28a 广东深圳[联通]\n    9b7cbf0a-76b8-4308-8b66-9093dbe22541 浙江金华[联通]\n    a4800428-7ed4-4c8a-a049-4b90df6919f0 河南郑州[联通]\n    654abac8-7b37-4a64-9a84-2d190db3d060 山东枣庄[联通]\n    1b6a98df-c2f4-4a29-b5b5-1e44ce6d1309 浙江金华[联通]\n    32574c06-d0fc-4709-8fc9-fce30596efd3 河南郑州[联通]\n    87068aa4-3b0e-4e22-814e-8ff838036e1b 浙江金华[联通]\n    457575e4-cbbd-4796-89df-ad9707f19254 河南新乡[联通]\n    4d7637d7-4950-4b79-9741-c397789bcf05 山东济南[联通]\n    7f46f5c9-d719-4886-b3c0-6b6427908791 福建福州[联通]\n    c48a380c-bac5-4976-b56c-53e9e5ebb691 江苏徐州[联通]\n    b615642c-ac86-4322-9fbe-4bd79e175a99 广东深圳[联通]\n    ddfeba9f-a432-4b9a-b0a9-ef76e9499558 浙江嘉兴[联通]\n    102df90c-0bcc-404a-97cd-475fd408ff6f 江苏宿迁[联通]\n    62909299-548b-4bbc-a92a-959e6104fc2c 江苏徐州[联通]\n    de221437-2390-4404-9a00-26b0853cf943 江苏宿迁[联通]\n    7a23256e-1121-4c39-ba12-1ff663ba952a 福建福州[联通]\n    5074fb13-4ab9-4f0a-87d9-f8ae51cb81c5 江苏常州[移动]\n    722e28ca-dd02-4ccd-a134-f9d4218505a5 广东深圳[移动]\n    8e7a403c-d998-4efa-b3d1-b67c0dfabc41 广东深圳[移动]'''\n\n    url = &quot;http://tool.chinaz.com/iframe.ashx?t=ping&quot;\n\n    for eve in total_list.split('\\n'):\n        id_data, node_name = eve.strip().split(&quot; &quot;)\n\n        form_data = {\n            'guid': id_data,\n            'host': 'anycodes.cn',\n            'ishost': '1',\n            'encode': 'ECvBP9vjbuXRi0CVhnXAbufDNPDryYzO',\n            'checktype': '1',\n        }\n        headers = {\n            'Host': 'tool.chinaz.com',\n            'Origin': 'http://tool.chinaz.com',\n            'Referer': 'http://tool.chinaz.com/speedtest/anycodes.cn',\n            'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36',\n            'X-Requested-With': 'XMLHttpRequest'\n        }\n\n        try:\n            result_data = urllib.request.urlopen(\n                urllib.request.Request(\n                    url=url,\n                    data=urllib.parse.urlencode(form_data).encode('utf-8'),\n                    headers=headers\n                )\n            ).read().decode(&quot;utf-8&quot;)\n\n            try:\n                alltime = re.findall(&quot;alltime:'(.*?)'&quot;, result_data)[0]\n                conntime = re.findall(&quot;conntime:'(.*?)'&quot;, result_data)[0]\n                downtime = re.findall(&quot;downtime:'(.*?)'&quot;, result_data)[0]\n                final_string = &quot;%s\\t总耗时:%s\\t链接耗时:%s\\t下载耗时:%s&quot; % (node_name, alltime, conntime, downtime)\n            except:\n                final_string = &quot;%s链接异常！&quot; % (node_name)\n                start_time = start_time + 1\n        except:\n            final_string = &quot;%s链接超时！&quot; % (node_name)\n            start_time = start_time + 1\n        final_list.append(final_string)\n        print(final_string)\n    if start_time > final_status_time:\n        return (False,final_list)\n    else:\n        return (True, final_list)\n\ndef sendEmail(content, to_user):\n    sender = 'service@anycodes.cn'\n    receivers = [to_user]\n\n    mail_msg = content\n    message = MIMEText(mail_msg, 'html', 'utf-8')\n    message['From'] = Header(&quot;网站监控&quot;, 'utf-8')\n    message['To'] = Header(&quot;站长&quot;, 'utf-8')\n\n    subject = &quot;网站监控告警&quot;\n    message['Subject'] = Header(subject, 'utf-8')\n\n    try:\n        smtpObj = smtplib.SMTP_SSL(&quot;smtp.exmail.qq.com&quot;, 465)\n        smtpObj.login('service@anycodes.cn', '密码')\n        smtpObj.sendmail(sender, receivers, message.as_string())\n    except smtplib.SMTPException:\n        pass\n\n\ndef getStatusCode(url):\n    return urllib.request.urlopen(url).getcode()\n\n\ndef main_handler(event, context):\n    url = &quot;http://www.anycodes.cn&quot;\n    # if getStatusCode(url) == 200:\n    #     sendEmail(&quot;您的网站%s可以访问！&quot; % (url), &quot;service@52exe.cn&quot;)\n    final_status,final_list = getWebTime()\n    if final_status:\n        sendEmail(&quot;您的网站%s的状态：<br>%s&quot; % (url, &quot;<br>&quot;.join(final_list)), &quot;service@52exe.cn&quot;)\n    else:\n        sendEmail(&quot;您的网站%s的状态：<br>%s&quot; % (url, &quot;<br>&quot;.join(final_list)), &quot;service@52exe.cn&quot;)\n\n\n\nmain_handler(None,None)`, `23015395383836123000`)\"\n            >\n              <div\n                class=\"gatsby-code-button\"\n                data-tooltip=\"\"\n              >\n                复制代码<svg class=\"gatsby-code-button-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M16 1H2v16h2V3h12V1zm-1 4l6 6v12H6V5h9zm-1 7h5.5L14 6.5V12z\"/></svg>\n              </div>\n            </div>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\"># -*- coding: utf8 -*-\nimport ssl\nimport json\nimport re\nimport socket\nimport smtplib\nimport urllib.request\nfrom email.mime.text import MIMEText\nfrom email.header import Header\n\nsocket.setdefaulttimeout(2.5)\nssl._create_default_https_context = ssl._create_unverified_context\n\ndef getWebTime():\n\n    final_list = []\n    final_status_time = 6\n    start_time = 0\n\n    total_list = &#39;&#39;&#39;62a55a0e-387e-4d87-bf69-5e0c9dd6b983 江苏宿迁[电信]\n    f403cdf2-27f8-4ccd-8f22-6f5a28a01309 广东佛山[电信]\n    bcff47de-61bb-4bf7-9fe6-4e456067e540 广东惠州[电信]\n    7740099a-6b60-49e0-9913-2f0b416ae63b 广东深圳[电信]\n    2bfd90a0-4661-4920-9963-0241cd3fc0db 浙江湖州[电信]\n    b698f5c4-0c88-4ae4-b123-ef57293ce442 辽宁大连[电信]\n    7253644b-58d3-48bb-808a-3c8b9416cfd5 江苏泰州[电信]\n    d8c0d1d1-9da8-4480-a9df-555731cdd7b8 安徽合肥[电信]\n    299f5043-d454-4485-945f-a331d960d86e 江苏镇江[电信]\n    38522b83-8893-4ca6-b45f-b6588b034462 云南昆明[电信]\n    19705ba7-3816-4b35-976b-c3b8d69e78d2 湖南长沙[电信]\n    8081b399-499a-4680-9a5a-723977cfea04 湖南衡阳[电信]\n    5713f157-3378-495a-9c55-7172187e9f36 江苏宿迁[电信]\n    a80cd07e-5508-4be6-8c83-524fe59318b8 江苏泰州[电信]\n    4daa81e2-f397-4cde-bf74-b2bee84a4ea5 江苏宿迁[电信]\n    bdd1ecd4-5516-44f8-8022-d83e4ac102f2 广东佛山[电信]\n    6b6f9b1c-6154-4696-96d6-112248f902dc 北京[电信]\n    8292e59e-ffde-4988-814f-4fe7fc4ec888 贵州兴义[电信]\n    be09c5ce-3031-4565-8f6a-3e328e256e16 江苏扬州[电信]\n    524906a3-2749-4469-aee3-48885f042a3a 江苏徐州[电信]\n    fce17d47-07c3-4315-892b-acd76d918ada 广西南宁[电信]\n    21cf6110-400c-4c6b-87c8-cada4ec3f6a7 浙江台州[电信]\n    0c8ca9bf-fa7a-42a3-9148-f15ead65f45e 广东深圳[电信]\n    b1499d95-7e3c-472a-9682-e58e1b362633 江西九江[电信]\n    4130a733-57c7-432b-ab8d-735ccbefbc0a 山东枣庄[电信]\n    066ab75f-0a74-40e8-b717-d17a71eda942 广东惠州[电信]\n    1befa95d-cde1-473e-b851-38440d034f1c 江苏泰州[电信]\n    c5ae6abd-901b-47c7-9018-7eda8b4441c6 陕西西安[电信]\n    d1e4fc25-16e5-4651-a8d7-b8df50dda396 江苏镇江[电信]\n    70a537ed-95b2-4bfd-b6b0-64c3920d9910 重庆[电信]\n    e6a3a9b7-2088-41be-bf1d-6a25276ab1ed 江西吉安[电信]\n    0e34cba2-fe5c-40d2-9ec7-e497f99365b8 广东广州[电信]\n    547e8248-6dfb-4f4f-b52d-8a287e89b844 湖北随州[电信]\n    df8bdd7a-b928-41f8-959f-d0d56fadea64 四川绵阳[电信]\n    4e5d43e6-9d6a-4e5a-b495-a78c0921d26d 四川成都[电信]\n    36d59519-d4bb-4635-8476-1d6ea27f62b2 江苏镇江[电信]\n    bc25c8fd-62a1-4c57-a44d-0855b6c67714 四川绵阳[电信]\n    0d3fd0b2-1255-4e5d-b94e-717569d2e8bd 江苏扬州[电信]\n    47a0f82f-7dbb-48f4-96e0-d7a279ebba11 浙江宁波[电信]\n    61d76c8c-b681-4196-b734-7d8e60f1e3ae 浙江绍兴[电信]\n    da8bc796-4e65-48ef-beaa-d2ee1a7dd4bf 广东佛山[电信]\n    cd787783-c0f5-486c-ac9f-34a80e386c34 广东佛山[电信]\n    0e8d2e22-74db-4b31-9edd-fdda946dcd03 江苏常州[电信]\n    5daad9ff-ced5-426a-8216-bf2aad097de0 浙江温州[电信]\n    91a304a7-f91b-49ac-abbe-b77442cbc48c 上海[电信]\n    12b16bb6-d42d-4296-a394-b96b22bca9c3 陕西咸阳[电信]\n    bf9f80ef-1ef7-4267-aece-4fb1e5fe45bf 湖北荆门[电信]\n    cd442c9e-de26-470f-bba2-33a8e71e4639 福建泉州[电信]\n    9fef7898-e2d3-4c02-ab2a-5dc780f5a65c 河南新乡[电信]\n    65078859-3e99-48eb-b170-7463fc53a98e 辽宁大连[电信]\n    0165e09b-aad3-46c2-87e8-160432229f60 贵州兴义[电信]\n    817bc339-c6f6-479c-9708-01ca54f2be80 江西新余[电信]\n    1edc7af0-68ac-427b-a368-c27610797971 广东佛山[电信]\n    9bc90d67-d208-434d-b680-294ae4288571 新疆哈密[电信]\n    b44faece-c6fe-4cc1-ab9a-ae7dcf37f146 辽宁鞍山[电信]\n    7fb11d87-1029-487b-8345-27e12a6acf1e 江苏镇江[电信]\n    04d82618-d562-4aa7-9db6-4600dd7f4780 湖南衡阳[电信]\n    252167a8-eaeb-491b-a4f3-319d25680f48 江苏宿迁[电信]\n    22456bec-ad37-49e8-ba6f-032b3faaa0a0 湖北武汉[电信]\n    5802da93-4e05-4932-9bc6-20d5d75b7af5 江苏宿迁[电信]\n    a083795a-b69f-49fe-a905-cd8838c09553 浙江温州[电信]\n    9c3b9aed-4b8a-4258-9b1f-55016211ced9 广东深圳[电信]\n    2140cc66-e5ea-4f56-981a-8f044a98c92a 浙江绍兴[电信]\n    9a8406ca-8a2d-44b7-a60e-4fe0ff6dd3aa 陕西西安[电信]\n    8df24006-5e55-428c-9f29-9a2386480a4d 湖北仙桃[电信]\n    cb2be8e0-670f-4922-8dd8-a1dd155cbf97 广东深圳[多线]\n    c5964a0d-c49f-4fac-833d-2348b3b1304b 江苏常州[多线]\n    19ef9d71-e0cb-4b79-a416-8fd670f6e7ca 江苏泰州[多线]\n    5bea1430-f7c2-4146-88f4-17a7dc73a953 河南新乡[多线]\n    1f430ff0-eae9-413a-af2a-1c2a8986cff0 河南新乡[多线]\n    ea551b59-2609-4ab4-89bc-14b2080f501a 河南新乡[多线]\n    4d462057-4581-4ae1-974d-ca7ca019e700 河南新乡[多线]\n    9c137190-5a57-4ef5-be4b-b9add998ad52 河南新乡[多线]\n    120ec517-1b0f-4b6e-841d-61116f73099a 广东东莞[多线]\n    cbc3caa1-9faf-438c-abde-fbd5c64c8036 辽宁大连[多线]\n    ba9e31d2-918a-41ad-9d0b-99175e365583 江苏扬州[多线]\n    74cb6a5c-b044-49d0-abee-bf42beb6ae05 江苏宿迁[多线]\n    e0cf79c5-9159-4ea6-a2a7-1bcaf9bfb292 山西运城[联通]\n    2805fa9f-05ea-46bc-8ac0-1769b782bf52 黑龙江哈尔滨[联通]\n    5439460c-0115-421a-b8ad-449eb2b4c28a 广东深圳[联通]\n    9b7cbf0a-76b8-4308-8b66-9093dbe22541 浙江金华[联通]\n    a4800428-7ed4-4c8a-a049-4b90df6919f0 河南郑州[联通]\n    654abac8-7b37-4a64-9a84-2d190db3d060 山东枣庄[联通]\n    1b6a98df-c2f4-4a29-b5b5-1e44ce6d1309 浙江金华[联通]\n    32574c06-d0fc-4709-8fc9-fce30596efd3 河南郑州[联通]\n    87068aa4-3b0e-4e22-814e-8ff838036e1b 浙江金华[联通]\n    457575e4-cbbd-4796-89df-ad9707f19254 河南新乡[联通]\n    4d7637d7-4950-4b79-9741-c397789bcf05 山东济南[联通]\n    7f46f5c9-d719-4886-b3c0-6b6427908791 福建福州[联通]\n    c48a380c-bac5-4976-b56c-53e9e5ebb691 江苏徐州[联通]\n    b615642c-ac86-4322-9fbe-4bd79e175a99 广东深圳[联通]\n    ddfeba9f-a432-4b9a-b0a9-ef76e9499558 浙江嘉兴[联通]\n    102df90c-0bcc-404a-97cd-475fd408ff6f 江苏宿迁[联通]\n    62909299-548b-4bbc-a92a-959e6104fc2c 江苏徐州[联通]\n    de221437-2390-4404-9a00-26b0853cf943 江苏宿迁[联通]\n    7a23256e-1121-4c39-ba12-1ff663ba952a 福建福州[联通]\n    5074fb13-4ab9-4f0a-87d9-f8ae51cb81c5 江苏常州[移动]\n    722e28ca-dd02-4ccd-a134-f9d4218505a5 广东深圳[移动]\n    8e7a403c-d998-4efa-b3d1-b67c0dfabc41 广东深圳[移动]&#39;&#39;&#39;\n\n    url = &quot;http://tool.chinaz.com/iframe.ashx?t=ping&quot;\n\n    for eve in total_list.split(&#39;\\n&#39;):\n        id_data, node_name = eve.strip().split(&quot; &quot;)\n\n        form_data = {\n            &#39;guid&#39;: id_data,\n            &#39;host&#39;: &#39;anycodes.cn&#39;,\n            &#39;ishost&#39;: &#39;1&#39;,\n            &#39;encode&#39;: &#39;ECvBP9vjbuXRi0CVhnXAbufDNPDryYzO&#39;,\n            &#39;checktype&#39;: &#39;1&#39;,\n        }\n        headers = {\n            &#39;Host&#39;: &#39;tool.chinaz.com&#39;,\n            &#39;Origin&#39;: &#39;http://tool.chinaz.com&#39;,\n            &#39;Referer&#39;: &#39;http://tool.chinaz.com/speedtest/anycodes.cn&#39;,\n            &#39;User-Agent&#39;: &#39;Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36&#39;,\n            &#39;X-Requested-With&#39;: &#39;XMLHttpRequest&#39;\n        }\n\n        try:\n            result_data = urllib.request.urlopen(\n                urllib.request.Request(\n                    url=url,\n                    data=urllib.parse.urlencode(form_data).encode(&#39;utf-8&#39;),\n                    headers=headers\n                )\n            ).read().decode(&quot;utf-8&quot;)\n\n            try:\n                alltime = re.findall(&quot;alltime:&#39;(.*?)&#39;&quot;, result_data)[0]\n                conntime = re.findall(&quot;conntime:&#39;(.*?)&#39;&quot;, result_data)[0]\n                downtime = re.findall(&quot;downtime:&#39;(.*?)&#39;&quot;, result_data)[0]\n                final_string = &quot;%s\\t总耗时:%s\\t链接耗时:%s\\t下载耗时:%s&quot; % (node_name, alltime, conntime, downtime)\n            except:\n                final_string = &quot;%s链接异常！&quot; % (node_name)\n                start_time = start_time + 1\n        except:\n            final_string = &quot;%s链接超时！&quot; % (node_name)\n            start_time = start_time + 1\n        final_list.append(final_string)\n        print(final_string)\n    if start_time &gt; final_status_time:\n        return (False,final_list)\n    else:\n        return (True, final_list)\n\ndef sendEmail(content, to_user):\n    sender = &#39;service@anycodes.cn&#39;\n    receivers = [to_user]\n\n    mail_msg = content\n    message = MIMEText(mail_msg, &#39;html&#39;, &#39;utf-8&#39;)\n    message[&#39;From&#39;] = Header(&quot;网站监控&quot;, &#39;utf-8&#39;)\n    message[&#39;To&#39;] = Header(&quot;站长&quot;, &#39;utf-8&#39;)\n\n    subject = &quot;网站监控告警&quot;\n    message[&#39;Subject&#39;] = Header(subject, &#39;utf-8&#39;)\n\n    try:\n        smtpObj = smtplib.SMTP_SSL(&quot;smtp.exmail.qq.com&quot;, 465)\n        smtpObj.login(&#39;service@anycodes.cn&#39;, &#39;密码&#39;)\n        smtpObj.sendmail(sender, receivers, message.as_string())\n    except smtplib.SMTPException:\n        pass\n\n\ndef getStatusCode(url):\n    return urllib.request.urlopen(url).getcode()\n\n\ndef main_handler(event, context):\n    url = &quot;http://www.anycodes.cn&quot;\n    # if getStatusCode(url) == 200:\n    #     sendEmail(&quot;您的网站%s可以访问！&quot; % (url), &quot;service@52exe.cn&quot;)\n    final_status,final_list = getWebTime()\n    if final_status:\n        sendEmail(&quot;您的网站%s的状态：&lt;br&gt;%s&quot; % (url, &quot;&lt;br&gt;&quot;.join(final_list)), &quot;service@52exe.cn&quot;)\n    else:\n        sendEmail(&quot;您的网站%s的状态：&lt;br&gt;%s&quot; % (url, &quot;&lt;br&gt;&quot;.join(final_list)), &quot;service@52exe.cn&quot;)\n\n\n\nmain_handler(None,None)</code></pre></div>\n<h2 id=\"▎灵感启发-ppplus-版本\"><a href=\"#%E2%96%8E%E7%81%B5%E6%84%9F%E5%90%AF%E5%8F%91-ppplus-%E7%89%88%E6%9C%AC\" aria-label=\"▎灵感启发 ppplus 版本 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><strong>▎</strong>灵感启发 PPPlus 版本</h2>\n<p>有很多同学，可能有时候不是监控自己的网站，而是要监控其他网站的某些行为。例如某个小说是否更新了，某个视频是否更新了，某个产品是否发布了，某个成绩是否出来了……其实这些情景都可以用腾讯云 Serverless 来开发，感兴趣的同学可以尝试一下！！</p>\n<hr>\n<blockquote>\n<p><strong>传送门：</strong></p>\n<ul>\n<li>GitHub: <a href=\"https://github.com/serverless/serverless/blob/master/README_CN.md\">github.com/serverless</a> </li>\n<li>官网：<a href=\"https://serverless.com/\">serverless.com</a></li>\n</ul>\n</blockquote>\n<p>欢迎访问：<a href=\"https://serverlesscloud.cn/\">Serverless 中文网</a>，您可以在 <a href=\"https://serverlesscloud.cn/best-practice\">最佳实践</a> 里体验更多关于 Serverless 应用的开发！</p>","tableOfContents":"<ul>\n<li><a href=\"/blog/2019-07-15-website-monitor/#%E2%96%8E%E5%9F%BA%E6%9C%AC%E7%9B%91%E6%8E%A7%E8%84%9A%E6%9C%AC\">▎基本监控脚本</a></li>\n<li><a href=\"/blog/2019-07-15-website-monitor/#%E2%96%8E%E5%8D%87%E7%BA%A7%E7%9B%91%E6%8E%A7%E8%84%9A%E6%9C%AC\">▎升级监控脚本</a></li>\n<li><a href=\"/blog/2019-07-15-website-monitor/#%E2%96%8E%E7%81%B5%E6%84%9F%E5%90%AF%E5%8F%91-ppplus-%E7%89%88%E6%9C%AC\">▎灵感启发 PPPlus 版本</a></li>\n</ul>"},"previousBlog":{"id":"5e1c5104-bbcb-5059-8f38-36b6503f66f8","frontmatter":{"thumbnail":"https://img.serverlesscloud.cn/2020414/1586878208210-search.jpg","authors":["Anycodes"],"categories":["user-stories"],"date":"2019-07-23T00:00:00.000Z","title":"如何优雅地给搜索引擎去广告！","description":"这真的不是针对友商……","authorslink":["https://www.zhihu.com/people/liuyu-43-97"],"translators":null,"translatorslink":null,"tags":["SEO","Serverless"],"keywords":"Serverless 应用服务端,Serverless 应用,Serverless Web 后端","outdated":null},"wordCount":{"words":238,"sentences":54,"paragraphs":54},"fileAbsolutePath":"/opt/build/repo/content/blog/2019-07-23-search-engine.md","fields":{"slug":"/blog/2019-07-23-search-engine/","keywords":["go","python","serverless","云函数","title","http","在线","serverlesscloud"]}},"nextBlog":{"id":"9f2e5366-1acf-5010-a024-eeb4b7875881","frontmatter":{"thumbnail":"https://s3-us-west-2.amazonaws.com/assets.blog.serverless.com/serverless-guru-case-study/serverless-guru-case-study-thumb.png","authors":["NickGottlieb"],"categories":["user-stories"],"date":"2019-07-09T00:00:00.000Z","title":"BuildCenter 和 Serverless Guru 如何简化无服务器开发周期","description":"BuildCenter 为构建者提供数字工具。了解 Serverless Guru 如何使用无服务器框架帮助构建者简化操作。","authorslink":null,"translators":null,"translatorslink":null,"tags":null,"keywords":null,"outdated":null},"wordCount":{"words":381,"sentences":48,"paragraphs":48},"fileAbsolutePath":"/opt/build/repo/content/blog/2019-07-09-buildcenter-serverless-development-cycle.md","fields":{"slug":"/blog/2019-07-09-buildcenter-serverless-development-cycle/","keywords":["serverless","单页应用","无服务器","Serverless","Guru","服务器","BuildCenter","serverless","堆栈","框架"]}},"recommendBlogs":{"edges":[{"node":{"id":"4300b21c-7209-5256-86ff-0d38e3daec9b","frontmatter":{"thumbnail":"https://main.qcloudimg.com/raw/14f1c8eed372e76c1b139703b2f6d0fa.jpg","authors":["KieranMcCarthy"],"categories":["user-stories","engineering-culture"],"date":"2018-01-09T00:00:00.000Z","title":"我是如何在四年时间里，从厨师转行为 Serverless 应用开发者","description":"我是厨师出身，现在成为了一名 Serverless 应用开发者。","authorslink":["https://serverless.com/author/kieranmccarthy/"],"translators":["Aceyclee"],"translatorslink":["https://www.zhihu.com/people/Aceyclee"],"tags":["应用开发","Serverless"],"keywords":"Serverless 应用开发,Serverless 管理,厨师转行为 Serverless 应用开发者","outdated":null},"wordCount":{"words":285,"sentences":38,"paragraphs":36},"fileAbsolutePath":"/opt/build/repo/content/blog/2018-01-09-from-chef-to-serverless-developer-in-4-years.md","fields":{"slug":"/blog/2018-01-09-from-chef-to-serverless-developer-in-4-years/","keywords":["无服务器","无服务器开发","云函数","学习","Serverless","构建","Framework","开发者","服务器","应用","学位","简历"]}}},{"node":{"id":"713a0563-4bf9-5721-bacb-3b4ef609fe4a","frontmatter":{"thumbnail":"https://s3-us-west-2.amazonaws.com/assets.blog.serverless.com/camp-fire/camp-fire-housing-thumb.jpg","authors":["EricWyne"],"categories":["guides-and-tutorials","user-stories"],"date":"2018-12-05T00:00:00.000Z","title":"Serverless Twitter 机器人帮助为坎普山火受灾者安置住房","description":"加利福尼亚州的坎普山火致使数千人流离失所，为此，我构建了一个简单的 Serverless Twitter 机器人来帮助将受灾者安置在临时住房！","authorslink":["https://serverless.com/author/ericwyne/"],"translators":["Aceyclee"],"translatorslink":["zhihu.com/people/Aceyclee"],"tags":null,"keywords":null,"outdated":null},"wordCount":{"words":157,"sentences":26,"paragraphs":26},"fileAbsolutePath":"/opt/build/repo/content/blog/2018-12-05-serverless-twitter-camp-fire.md","fields":{"slug":"/blog/2018-12-05-serverless-twitter-camp-fire/","keywords":["serverless","无服务器","云函数","Serverless","org","住房","Twitter","函数","受灾","机器人","山火"]}}},{"node":{"id":"98602143-b837-5f50-a24f-3b1ec76044d7","frontmatter":{"thumbnail":"https://s3-us-west-2.amazonaws.com/assets.blog.serverless.com/sqquid/sqquid-serverless-thumb.jpg","authors":["RonPeled"],"categories":["user-stories"],"date":"2018-12-17T00:00:00.000Z","title":"SQQUID：100% 无服务器初创公司","description":"SQQUID 将 AWS Lambda 和无服务器框架用于其核心产品和营销网站。我们来看看一个完全无服务器的初创公司是怎样的。","authorslink":null,"translators":null,"translatorslink":null,"tags":null,"keywords":null,"outdated":null},"wordCount":{"words":266,"sentences":42,"paragraphs":42},"fileAbsolutePath":"/opt/build/repo/content/blog/2018-12-17-sqquid-one-hundred-percent-serverless.md","fields":{"slug":"/blog/2018-12-17-sqquid-one-hundred-percent-serverless/","keywords":["go","serverless","无服务器","无服务器架构","服务器","架构","Lambda","集成","FaaS","串行","系统"]}}},{"node":{"id":"29dc2e58-d2ba-56f9-aee1-d21b0bc62e0e","frontmatter":{"thumbnail":"https://s3-us-west-2.amazonaws.com/assets.blog.serverless.com/ao-com-story/ao-serverless-thumbnail.png","authors":["NickGottlieb"],"categories":["user-stories"],"date":"2019-04-24T00:00:00.000Z","title":"AO.com：逐渐转向无服务器优先","description":"AO.com 的 SCV 团队率先尝试无服务器服务。折服于无服务器框架的快速周转时间和低维护成本，整个团队逐渐转向无服务器优先。","authorslink":null,"translators":null,"translatorslink":null,"tags":null,"keywords":null,"outdated":null},"wordCount":{"words":236,"sentences":42,"paragraphs":35},"fileAbsolutePath":"/opt/build/repo/content/blog/2019-04-24-ao-serverless-first.md","fields":{"slug":"/blog/2019-04-24-ao-serverless-first/","keywords":["serverless","无服务器","服务器","团队","Lambda","功能","构建"]}}},{"node":{"id":"752d08d1-387a-5bde-acf3-98141baab294","frontmatter":{"thumbnail":"https://img.serverlesscloud.cn/2020414/1586871710979-%E5%85%AC%E5%85%B1%E7%94%A8.png","authors":["Anycodes"],"categories":["user-stories"],"date":"2019-06-20T00:00:00.000Z","title":"如何用 Serverless 为 Python 云函数打包依赖","description":"在使用无服务器云函数SCF时通常会遇到导入第三方库的问题，很多小伙伴比较头疼是：应该如何打包进去？这里，推荐几个不错的方法。","authorslink":["https://zhuanlan.zhihu.com/ServerlessGo"],"translators":null,"translatorslink":null,"tags":["云函数","Serverless"],"keywords":"Serverless,Serverless应用,无服务器云函数","outdated":null},"wordCount":{"words":81,"sentences":43,"paragraphs":43},"fileAbsolutePath":"/opt/build/repo/content/blog/2019-06-20-for-python-cloud-functions.md","fields":{"slug":"/blog/2019-06-20-for-python-cloud-functions/","keywords":["java","serverless","无服务器","无服务器云函数","云函数","serverlesscloud","安装","serverless","pillowtest"]}}},{"node":{"id":"2dc78814-9d77-555b-a1bb-ad202c8ec2d1","frontmatter":{"thumbnail":"https://s3-us-west-2.amazonaws.com/assets.blog.serverless.com/cloudforecast/thumbnail.png","authors":["FrancoisLagier"],"categories":["user-stories"],"date":"2019-08-07T00:00:00.000Z","title":"Serverless：初创企业的理想选择？（CloudForecast 案例分析）","description":"CloudForecast 是 2018 年成立的一家独立初创企业，本文将介绍他们决定选择 Serverless 的原因。","authorslink":["https://serverless.com/author/francoislagier/"],"translators":["Aceyclee"],"translatorslink":["zhihu.com/people/Aceyclee"],"tags":null,"keywords":null,"outdated":null},"wordCount":{"words":211,"sentences":29,"paragraphs":29},"fileAbsolutePath":"/opt/build/repo/content/blog/2019-08-07-serverless-for-startups.md","fields":{"slug":"/blog/2019-08-07-serverless-for-startups/","keywords":["serverless","云函数","serverless","函数","Serverless","utm","Framework","blog","CloudForecast","cloudforecast"]}}},{"node":{"id":"97450b07-658b-5207-8216-1c7b9b51b115","frontmatter":{"thumbnail":"https://img.serverlesscloud.cn/2020114/1578988490344-v2-8b2cd2c5275aa2c5a3c5083a148a7a9f_1200x500.jpg","authors":["Anycodes"],"categories":["user-stories"],"date":"2019-09-01T00:00:00.000Z","title":"如何通过 Serverless 与自然语言处理，让搜索引擎「看」到你的博客","description":"Serverless 与自然语言处理结合的一个小应用","authorslink":["https://www.zhihu.com/people/liuyu-43-97"],"translators":null,"translatorslink":null,"tags":["个人博客","serverless"],"keywords":"Serverless 自然语言处理","outdated":null},"wordCount":{"words":106,"sentences":34,"paragraphs":34},"fileAbsolutePath":"/opt/build/repo/content/blog/2019-09-01-search-engine-blog.md","fields":{"slug":"/blog/2019-09-01-search-engine-blog/","keywords":["serverless","云函数","keywords","serverlesscloud","summary"]}}},{"node":{"id":"ae4fd2f8-515c-5aec-b584-38427ef33f7e","frontmatter":{"thumbnail":"https://img.serverlesscloud.cn/2020114/1578989800047-part-00492-780.jpg","authors":["Anycodes"],"categories":["guides-and-tutorials","user-stories"],"date":"2019-09-16T00:00:00.000Z","title":"突破传统 OJ 瓶颈，「判题姬」接入云函数","description":"通过 Serverless 实现在线编程","authorslink":["https://www.zhihu.com/people/liuyu-43-97"],"translators":null,"translatorslink":null,"tags":["在线编程","云函数"],"keywords":"Serverless 在线编程,Serverless OJ","outdated":null},"wordCount":{"words":169,"sentences":30,"paragraphs":30},"fileAbsolutePath":"/opt/build/repo/content/blog/2019-09-16-online-Judge.md","fields":{"slug":"/blog/2019-09-16-online-Judge/","keywords":["python","serverless","云函数","代码","函数","serverless"]}}}],"totalCount":64}},"pageContext":{"isCreatedByStatefulCreatePages":false,"blogId":"344dc497-fd61-5441-9106-d593870bad6a","previousBlogId":"5e1c5104-bbcb-5059-8f38-36b6503f66f8","nextBlogId":"9f2e5366-1acf-5010-a024-eeb4b7875881","categories":["user-stories"]}}}