域名过期时间监控
<p style="text-align: center"><span style="font-size: 15px"><strong>域名过期时间监控</strong></span></p><p style="text-align: left"><strong> </strong>自周日那次因阿里云域名过期事件发生之后【记周日一次故障意外:https://www.cnblogs.com/windysai/p/14495901.html】,写一个能用的监控域名过期时间的脚本就迫在眉睫,今天终于完工了,已放到生产。</p>
<p style="text-align: left"> 参考链接:https://blog.51cto.com/13576245/2427625</p>
<p style="text-align: left"> 本来前面知识点的总结挺好的,老实说,这小伙脚本有点问题!!!贴上去的时候,难道没有测试时间戳和具体日期,命令作转化是应该相等的么?!</p>
<p style="text-align: left"> 举个栗子,假设有一个过期时间:2023-03-06 15:08:45</p>
<p style="text-align: left"> 计算出来的时间戳: date -d "过期时间" + %s 《=====》 date -d @计算出来的时间戳</p>
<p style="text-align: left"> 如下:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">date</span> -d <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">2023-03-06 15:08:45</span><span style="color: rgba(128, 0, 0, 1)">"</span> +%<span style="color: rgba(0, 0, 0, 1)">s
——》 </span><span style="color: rgba(128, 0, 128, 1)">1678086525</span>
<span style="color: rgba(0, 0, 255, 1)">date</span> -d @<span style="color: rgba(128, 0, 128, 1)">1678086525</span><span style="color: rgba(0, 0, 0, 1)">
——》 Mon Mar</span><span style="color: rgba(128, 0, 128, 1)">6</span> <span style="color: rgba(128, 0, 128, 1)">15</span>:<span style="color: rgba(128, 0, 128, 1)">08</span>:<span style="color: rgba(128, 0, 128, 1)">45</span> CST <span style="color: rgba(128, 0, 128, 1)">2023</span></pre>
</div>
<p> 然后说下遇到的坑,首先这个监控脚本在服务器上是有的:前运维2018年写的。然后,贴上去计划任务的监控域名的脚本是错的!!!给他说这事差点搞到我背锅的时候,竟然还笑的出来,周日差点得回公司处理这破事 = = 。。。</p>
<p> 算了,继续讲坑,扯回正题:</p>
<p> 1、前运维那个脚本是把一堆域名写到文件上的,cat 一行行去读,因为有特殊符号,运行命令 “whois 域名” 获取信息是返回不了任何数据的!!!导致这个expiry_date为空值,所以这脚本形同虚设!我试过都写到文件上,也确实会发生这样的情况,用 cat -A 文件名显示所有特殊符号,无果</p>
<p><strong>解决:暂时找不出具体原因,所以只能直接读到脚本上,不放文件读</strong></p>
<p><img src="https://img2020.cnblogs.com/blog/520218/202103/520218-20210309223513712-211690188.png"></p>
<p> 2、whois域名的时候,针对 .cn 域名的域名信息获取,经常出现:fgets: Connection reset by peer 的报错,导致返回数据为空,最终报警失灵,返回一个特别吓人的信息:过期时间剩余0天</p>
<p><strong>解决:前面加个信息获取判断,对于 .cn 域名,没有数据返回就用while 死循环,一直试,直到成功为止</strong></p>
<p><strong><img src="https://img2020.cnblogs.com/blog/520218/202103/520218-20210309223945379-793855178.png"> <img src="https://img2020.cnblogs.com/blog/520218/202103/520218-20210309224022086-169034978.png"></strong></p>
<p> 3、curl 对于这种时间显示 :2023-03-06 15:08:45,发不了钉钉报警的,莫名其妙多了个 ‘ 的符号,我确定脚本没有加特殊符号!!!</p>
<p><strong>解决:原因未知,只能改用python去发,读入写入报警内容的文件</strong></p>
<p><img src="https://img2020.cnblogs.com/blog/520218/202103/520218-20210309224602825-1514886914.png"></p>
<p><strong>最终效果图</strong></p>
<p>(这个测试,针对域名在90天内过期就报警)<strong>:</strong></p>
<p><strong><img src="https://img2020.cnblogs.com/blog/520218/202103/520218-20210309224741460-775863648.png"></strong></p>
<p> </p>
<p> <img src="https://img2020.cnblogs.com/blog/520218/202103/520218-20210309224808893-1689498228.png"></p>
<p> </p>
<p> </p>
<p>对域名是 .cn 和 非.cn的情况要分开进行数据处理!!!</p>
<p><strong>相关脚本:</strong></p>
<p><strong>1、监控域名过期脚本:</strong></p>
<div class="cnblogs_code">
<pre>#!/bin/<span style="color: rgba(0, 0, 0, 1)">bash
#监控公司域名到期发送钉钉消息通知
#作者:小杨
#日期:</span><span style="color: rgba(128, 0, 128, 1)">2018</span>/<span style="color: rgba(128, 0, 128, 1)">10</span>/<span style="color: rgba(128, 0, 128, 1)">6</span><span style="color: rgba(0, 0, 0, 1)">
#版本:v0.</span><span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">
#updated by ljy on </span><span style="color: rgba(128, 0, 128, 1)">2021</span>-<span style="color: rgba(128, 0, 128, 1)">03</span>-<span style="color: rgba(128, 0, 128, 1)">08</span><span style="color: rgba(0, 0, 0, 1)">
PHONE</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">我手机电话号码</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
TOKEN</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">钉钉报警机器人webhook</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
#</span><span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">、监控工具检查
</span><span style="color: rgba(0, 0, 255, 1)">which</span> whois > /dev/<span style="color: rgba(0, 0, 255, 1)">null</span> <span style="color: rgba(128, 0, 128, 1)">2</span>> /dev/<span style="color: rgba(0, 0, 255, 1)">null</span>
<span style="color: rgba(0, 0, 255, 1)">if</span> [ $? -ne <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> ]
</span><span style="color: rgba(0, 0, 255, 1)">then</span>
<span style="color: rgba(0, 0, 255, 1)">yum</span> <span style="color: rgba(0, 0, 255, 1)">install</span> -<span style="color: rgba(0, 0, 0, 1)">y whois
</span><span style="color: rgba(0, 0, 255, 1)">fi</span>
<span style="color: rgba(0, 0, 255, 1)">which</span> bc > /dev/<span style="color: rgba(0, 0, 255, 1)">null</span> <span style="color: rgba(128, 0, 128, 1)">2</span>> /dev/<span style="color: rgba(0, 0, 255, 1)">null</span>
<span style="color: rgba(0, 0, 255, 1)">if</span> [ $? -ne <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> ]
</span><span style="color: rgba(0, 0, 255, 1)">then</span>
<span style="color: rgba(0, 0, 255, 1)">yum</span> <span style="color: rgba(0, 0, 255, 1)">install</span> -<span style="color: rgba(0, 0, 0, 1)">y bc
</span><span style="color: rgba(0, 0, 255, 1)">fi</span><span style="color: rgba(0, 0, 0, 1)">
<br>#报警内容
WarnFile</span>=/home/xxx/scripts/domain/<span style="color: rgba(0, 0, 0, 1)">warnfile
</span>><span style="color: rgba(0, 0, 0, 1)">$WarnFile
<br>#全部域名过期时间信息
</span>>/tmp/<span style="color: rgba(0, 0, 0, 1)">testdomain.log
#</span><span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">、域名过期检查</span><span style="color: rgba(128, 0, 0, 1)"><br></span><span style="color: rgba(0, 0, 255, 1)">for</span> line <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> 域名1 域名2 ...具体域名n
</span><span style="color: rgba(0, 0, 255, 1)">do</span><span style="color: rgba(0, 0, 0, 1)">
#拿到过期的日期,假设是非.cn 域名
e_d</span>=`whois $line |<span style="color: rgba(0, 0, 255, 1)">grep</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Expiry Date</span><span style="color: rgba(128, 0, 0, 1)">'</span> |<span style="color: rgba(0, 0, 255, 1)">awk</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">{print $4}</span><span style="color: rgba(128, 0, 0, 1)">'</span> |<span style="color: rgba(0, 0, 255, 1)">cut</span> -d <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">T</span><span style="color: rgba(128, 0, 0, 1)">'</span> -f <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">`
# 为空
#(</span><span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">)针对.cn 域名(无T,关键词:Expiration Time)
</span><span style="color: rgba(0, 0, 255, 1)">if</span> [ -z <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">$e_d</span><span style="color: rgba(128, 0, 0, 1)">"</span> ]; <span style="color: rgba(0, 0, 255, 1)">then</span><span style="color: rgba(0, 0, 0, 1)">
expiry_time</span>=`whois $line |<span style="color: rgba(0, 0, 255, 1)">grep</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Expiration Time</span><span style="color: rgba(128, 0, 0, 1)">'</span> |<span style="color: rgba(0, 0, 255, 1)">awk</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">{print $3" "$4}</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">`
</span><span style="color: rgba(0, 0, 255, 1)">while</span> [ -z <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">$expiry_time</span><span style="color: rgba(128, 0, 0, 1)">"</span> ]; <span style="color: rgba(0, 0, 255, 1)">do</span>
<span style="color: rgba(0, 0, 255, 1)">sleep</span> <span style="color: rgba(128, 0, 128, 1)">3</span><span style="color: rgba(0, 0, 0, 1)">
expiry_time</span>=`whois $line |<span style="color: rgba(0, 0, 255, 1)">grep</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Expiration Time</span><span style="color: rgba(128, 0, 0, 1)">'</span> |<span style="color: rgba(0, 0, 255, 1)">awk</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">{print $3" "$4}</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">`
</span><span style="color: rgba(0, 0, 255, 1)">done</span><span style="color: rgba(0, 0, 0, 1)">
#(</span><span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">) 针对非 .cn 域名(有T,关键字:Expiry Date)
## 如果不为空,对时分秒做转换(默认是UTC,少了8小时, 进行date </span>-<span style="color: rgba(0, 0, 0, 1)">d 转换)
</span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">
hms</span>=`whois $line |<span style="color: rgba(0, 0, 255, 1)">grep</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Expiry Date</span><span style="color: rgba(128, 0, 0, 1)">'</span> |<span style="color: rgba(0, 0, 255, 1)">awk</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">{print $4}</span><span style="color: rgba(128, 0, 0, 1)">'</span> |<span style="color: rgba(0, 0, 255, 1)">cut</span> -d <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">T</span><span style="color: rgba(128, 0, 0, 1)">'</span> -f <span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">`
e_d_hms</span>=`<span style="color: rgba(0, 0, 255, 1)">date</span> -d <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">$hms</span><span style="color: rgba(128, 0, 0, 1)">"</span> | <span style="color: rgba(0, 0, 255, 1)">awk</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">{print $4}</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">`
expiry_time</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">$e_d $e_d_hms</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 0, 255, 1)">fi</span><span style="color: rgba(0, 0, 0, 1)">
#计算过期时间戳
e_d_s</span>=`<span style="color: rgba(0, 0, 255, 1)">date</span> -d <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">$expiry_time</span><span style="color: rgba(128, 0, 0, 1)">"</span> +%<span style="color: rgba(0, 0, 0, 1)">s`
</span><span style="color: rgba(0, 0, 255, 1)">echo</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">域名 $line 的过期时间戳为: ${e_d_s}</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
expiry_date_s</span>=`<span style="color: rgba(0, 0, 255, 1)">date</span> -<span style="color: rgba(0, 0, 0, 1)">d @${e_d_s}`
#</span><span style="color: rgba(128, 0, 128, 1)">3</span><span style="color: rgba(0, 0, 0, 1)">、计算今天的时间戳
today_s</span>=`<span style="color: rgba(0, 0, 255, 1)">date</span> +%<span style="color: rgba(0, 0, 0, 1)">s`<br><br> #4、计算过期时间戳和今天时间戳的差值,得到剩余天数
expiry_date</span>=$(($(($e_d_s-$today_s))/(<span style="color: rgba(128, 0, 128, 1)">60</span>*<span style="color: rgba(128, 0, 128, 1)">60</span>*<span style="color: rgba(128, 0, 128, 1)">24</span><span style="color: rgba(0, 0, 0, 1)">)))
</span><span style="color: rgba(0, 0, 255, 1)">echo</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">剩余天数: $expiry_date </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
#curl 报警中,钉钉不认 $expiry_time : 时分秒这种日期,改用python发
expiry_day</span>=`<span style="color: rgba(0, 0, 255, 1)">echo</span> $expiry_time | <span style="color: rgba(0, 0, 255, 1)">awk</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">{print $1}</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">`
</span><span style="color: rgba(0, 0, 255, 1)">echo</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">域名:${line} 到期日期: ${expiry_time}, 剩余: $expiry_date 天 !!!!</span><span style="color: rgba(128, 0, 0, 1)">"</span> >> /tmp/<span style="color: rgba(0, 0, 0, 1)">testdomain.log
</span><span style="color: rgba(0, 0, 255, 1)">echo</span> <span style="color: rgba(128, 0, 0, 1)">""</span> >> /tmp/<span style="color: rgba(0, 0, 0, 1)">testdomain.log
# 测试时间为90天内过期就发告警
</span><span style="color: rgba(0, 0, 255, 1)">if</span> [ $expiry_date -lt <span style="color: rgba(128, 0, 128, 1)">90</span><span style="color: rgba(0, 0, 0, 1)"> ];
</span><span style="color: rgba(0, 0, 255, 1)">then</span><span style="color: rgba(0, 0, 0, 1)">
DATE</span>=`<span style="color: rgba(0, 0, 255, 1)">date</span> +%F_%<span style="color: rgba(0, 0, 0, 1)">T`
</span><span style="color: rgba(0, 0, 255, 1)">echo</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">${line} 域名将在 $expiry_time 到期,请及时处理!!</span><span style="color: rgba(128, 0, 0, 1)">"</span> | mail -s <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">${line} 域名 $expiry_time 到期通知</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> 我qq邮箱@qq.com
</span><span style="color: rgba(0, 0, 255, 1)">echo</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">域名:${line} 将在$expiry_time 到期,剩余天数: $expiry_date 天,请及时处理!!!</span><span style="color: rgba(128, 0, 0, 1)">"</span> >><span style="color: rgba(0, 0, 0, 1)"> $WarnFile
</span><span style="color: rgba(0, 0, 255, 1)">fi</span>
<span style="color: rgba(0, 0, 255, 1)">done<br><br>##<span style="color: rgba(0, 0, 0, 1)"> python发报警内容</span><br><span style="color: rgba(0, 0, 0, 1)">python /home/xxx/scripts/domain/warnsrc.py /home/xxx/scripts/domain/warnfile</span><br></span></pre>
</div>
<p> </p>
<p><strong>2、python发报警脚本:warnsrc.py </strong></p>
<div class="cnblogs_code">
<pre># -*- coding: utf-<span style="color: rgba(128, 0, 128, 1)">8</span> -*-<span style="color: rgba(0, 0, 0, 1)">
# @Time : </span><span style="color: rgba(128, 0, 128, 1)">2020</span>/<span style="color: rgba(128, 0, 128, 1)">9</span>/<span style="color: rgba(128, 0, 128, 1)">18</span> <span style="color: rgba(128, 0, 128, 1)">10</span>:<span style="color: rgba(128, 0, 128, 1)">26</span><span style="color: rgba(0, 0, 0, 1)">
# @Author : ljy
# @File : update warnsrc.py on </span><span style="color: rgba(128, 0, 128, 1)">2021</span>/<span style="color: rgba(128, 0, 128, 1)">3</span>/<span style="color: rgba(128, 0, 128, 1)">9</span><span style="color: rgba(0, 0, 0, 1)">
import </span><span style="color: rgba(0, 0, 255, 1)">time</span><span style="color: rgba(0, 0, 0, 1)">
import os
import urllib2
import json
import pymysql
import datetime
import sys
import requests
reload(sys)
sys.setdefaultencoding(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">utf-8</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
print(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">文件为: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
print(sys.argv[</span><span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">])
size </span>= os.path.getsize(sys.argv[<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">])
</span><span style="color: rgba(0, 0, 255, 1)">if</span> size != <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">:
content</span>=<span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">
with open(sys.argv[</span><span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">]) as f:
content </span>+=<span style="color: rgba(0, 0, 0, 1)"> f.read()
f.close()
#测试
url </span>= <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">机器人token</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
data </span>= {<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">msgtype</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">text</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">text</span><span style="color: rgba(128, 0, 0, 1)">"</span>: {<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">content</span><span style="color: rgba(128, 0, 0, 1)">"</span>: content}, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">at</span><span style="color: rgba(128, 0, 0, 1)">"</span>: {<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">atMobiles</span><span style="color: rgba(128, 0, 0, 1)">"</span>: [<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">我手机号码</span><span style="color: rgba(128, 0, 0, 1)">'</span>], <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">isAtAll</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">false</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">}}
headers </span>= {<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Content-Type</span><span style="color: rgba(128, 0, 0, 1)">'</span>: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">application/json</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">}
request </span>= urllib2.Request(url=url, headers=headers, data=<span style="color: rgba(0, 0, 0, 1)">json.dumps(data))
re </span>= urllib2.urlopen(request, timeout=<span style="color: rgba(128, 0, 128, 1)">10</span><span style="color: rgba(0, 0, 0, 1)">)
re_data </span>= re.read()</pre>
</div>
<p> </p>
<p style="text-align: left"><span style="font-size: 15px"></span></p><br><br>
来源:https://www.cnblogs.com/windysai/p/14508546.html
頁:
[1]