init
This commit is contained in:
commit
534b13b42b
19
ReadMe.md
Normal file
19
ReadMe.md
Normal file
@ -0,0 +1,19 @@
|
||||
# api
|
||||
|
||||
## 错误代码一览
|
||||
* 200:成功
|
||||
* access_token相关:
|
||||
* 100:access_token不存在
|
||||
* 101:access_token获取失败
|
||||
* 102:access_token覆写失败
|
||||
* 103:access_token插入失败
|
||||
* /keyword/insert
|
||||
* 300:校验失败
|
||||
* 301:keyword插入失败
|
||||
* /keyword/del
|
||||
* 400:校验失败
|
||||
* 401:数据库操作失败
|
||||
* /keyword/get
|
||||
* 401:keyword表获取失败
|
||||
* /wxpy/acceptmsg
|
||||
* 500:校验失败
|
53
api.js
Normal file
53
api.js
Normal file
@ -0,0 +1,53 @@
|
||||
// fetch.js
|
||||
import axios from 'axios'
|
||||
|
||||
export const api = axios.create({
|
||||
baseURL: 'https://api.powerrain.cn/',
|
||||
headers: {
|
||||
'Content-Type': 'application/x-www-form-urlencoded',
|
||||
'Accept': 'application/json'
|
||||
},
|
||||
timeout: 10 * 1000
|
||||
})
|
||||
|
||||
//设置拦截器
|
||||
api.interceptors.response.use(
|
||||
(response) => {
|
||||
// console.log('拦截器:请求成功', response)
|
||||
return response
|
||||
}, (error) => {
|
||||
// console.log('拦截器:发生错误', error.response)
|
||||
return Promise.reject(error)
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
|
||||
// api.js
|
||||
// 签名算法
|
||||
// cnpm install crypto-js -s
|
||||
var CryptoJS = require("crypto-js");
|
||||
|
||||
export function getKeywordLists() {
|
||||
return api.get('/keyword/get')
|
||||
}
|
||||
|
||||
// item 就是去掉row的关键词json
|
||||
export function addKeywords(item) {
|
||||
let data = { item }
|
||||
let sign = CryptoJS.MD5(JSON.stringify(data).replace(/\"/g,"'")).toString().toUpperCase();
|
||||
data.sign = sign
|
||||
let params = new URLSearchParams();
|
||||
params.append('data', JSON.stringify(data));
|
||||
return api.post('/keyword/insert',params)
|
||||
}
|
||||
|
||||
// index 就是关键词的index
|
||||
export function delKeywords(index) {
|
||||
let data = { index }
|
||||
let sign = CryptoJS.MD5(JSON.stringify(data).replace(/\"/g,"'")).toString().toUpperCase();
|
||||
data.sign = sign
|
||||
let params = new URLSearchParams();
|
||||
params.append('data', JSON.stringify(data));
|
||||
return api.post('/keyword/del',params)
|
||||
}
|
87
api.py
Normal file
87
api.py
Normal file
@ -0,0 +1,87 @@
|
||||
# 将lib里边的文件加到路由中
|
||||
import sys
|
||||
sys.path.append('./lib')
|
||||
from flask import Flask, escape, url_for, request, render_template, redirect, abort, send_from_directory, Response
|
||||
from allFunction import manageGet, managePost, manageInsertKeyword, manageDelKeyword, manageGetKeyword, manageMaterial
|
||||
from flask_apscheduler import APScheduler
|
||||
from wxRequest import requestsAccessToken
|
||||
scheduler = APScheduler()
|
||||
|
||||
# Response XML自动格式设置
|
||||
class MyResponse(Response):
|
||||
def __init__(self, response, **kwargs):
|
||||
if 'mimetype' not in kwargs and 'contenttype' not in kwargs:
|
||||
if response.startswith('<?xml'):
|
||||
kwargs['mimetype'] = 'application/xml'
|
||||
return super(MyResponse, self).__init__(response, **kwargs)
|
||||
|
||||
# 创建子类覆写Response
|
||||
class MyFlask(Flask):
|
||||
response_class = MyResponse
|
||||
|
||||
# 创建app,创建定时函数
|
||||
def create_app():
|
||||
app = MyFlask(__name__)
|
||||
app.config.update(
|
||||
{"SCHEDULER_API_ENABLED": True,
|
||||
"JOBS": [{"id": "requestsAccessToken", # 任务ID
|
||||
"func": "wxRequest:requestsAccessToken", # 任务位置
|
||||
"trigger": "interval", # 触发器
|
||||
"hours": 1 # 时间间隔
|
||||
}
|
||||
]}
|
||||
)
|
||||
scheduler.init_app(app)
|
||||
scheduler.start()
|
||||
requestsAccessToken()
|
||||
return app
|
||||
|
||||
app = create_app()
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run()
|
||||
|
||||
# 测试用根路由
|
||||
@app.route('/')
|
||||
def sayHello():
|
||||
return 'Hello world'
|
||||
|
||||
# 用于接受微信发来的消息
|
||||
@app.route('/wxpy/acceptmsg', methods=["POST", "GET"])
|
||||
def acceptMsg():
|
||||
if request.method == 'GET':
|
||||
# 请求方法为get进行sign验证
|
||||
return manageGet(request)
|
||||
elif request.method == "POST":
|
||||
# 请求方法为post,为用户发的信息
|
||||
return managePost(request)
|
||||
print(request.form.to_dict())
|
||||
print(request.data)
|
||||
return 'success'
|
||||
else:
|
||||
print('sss')
|
||||
return 'success'
|
||||
|
||||
# 获取图文信息
|
||||
@app.route('/wxpy/material', methods=["POST"])
|
||||
def material():
|
||||
res = manageMaterial(request)
|
||||
return res
|
||||
|
||||
# 新增关键词
|
||||
@app.route('/keyword/insert', methods=["POST"])
|
||||
def insertKeyword():
|
||||
res = manageInsertKeyword(request)
|
||||
return res
|
||||
|
||||
# 删除关键词
|
||||
@app.route('/keyword/del', methods=["POST"])
|
||||
def delKeyword():
|
||||
res = manageDelKeyword(request)
|
||||
return res
|
||||
|
||||
# 获取关键词
|
||||
@app.route('/keyword/get', methods=["GET"])
|
||||
def getKeyword():
|
||||
res = manageGetKeyword(request)
|
||||
return res
|
20
error.log
Normal file
20
error.log
Normal file
@ -0,0 +1,20 @@
|
||||
[2020-02-12 12:06:10 +0800] [5081] [INFO] Starting gunicorn 20.0.4
|
||||
[2020-02-12 12:06:10 +0800] [5081] [INFO] Listening at: http://127.0.0.1:5004 (5081)
|
||||
[2020-02-12 12:06:10 +0800] [5081] [INFO] Using worker: sync
|
||||
[2020-02-12 12:06:10 +0800] [5083] [INFO] Booting worker with pid: 5083
|
||||
[2020-02-12 12:06:10 +0800] [5084] [INFO] Booting worker with pid: 5084
|
||||
[2020-02-12 12:06:10 +0800] [5085] [INFO] Booting worker with pid: 5085
|
||||
[2020-02-12 12:06:11 +0800] [5086] [INFO] Booting worker with pid: 5086
|
||||
[2020-02-12 14:06:18 +0800] [5081] [INFO] Handling signal: term
|
||||
[2020-02-12 14:06:18 +0800] [5083] [INFO] Worker exiting (pid: 5083)
|
||||
[2020-02-12 14:06:18 +0800] [5084] [INFO] Worker exiting (pid: 5084)
|
||||
[2020-02-12 14:06:18 +0800] [5085] [INFO] Worker exiting (pid: 5085)
|
||||
[2020-02-12 14:06:18 +0800] [5086] [INFO] Worker exiting (pid: 5086)
|
||||
[2020-02-12 14:06:18 +0800] [5081] [INFO] Shutting down: Master
|
||||
[2020-02-12 14:18:41 +0800] [5993] [INFO] Starting gunicorn 20.0.4
|
||||
[2020-02-12 14:18:41 +0800] [5993] [INFO] Listening at: http://127.0.0.1:5004 (5993)
|
||||
[2020-02-12 14:18:41 +0800] [5993] [INFO] Using worker: sync
|
||||
[2020-02-12 14:18:41 +0800] [5995] [INFO] Booting worker with pid: 5995
|
||||
[2020-02-12 14:18:41 +0800] [5996] [INFO] Booting worker with pid: 5996
|
||||
[2020-02-12 14:18:41 +0800] [5997] [INFO] Booting worker with pid: 5997
|
||||
[2020-02-12 14:18:41 +0800] [5998] [INFO] Booting worker with pid: 5998
|
13
gunicorn.conf
Normal file
13
gunicorn.conf
Normal file
@ -0,0 +1,13 @@
|
||||
# 并行工作线程数
|
||||
workers = 1
|
||||
# 监听内网端口5000【按需要更改】
|
||||
bind = '127.0.0.1:5004'
|
||||
# 设置守护进程【关闭连接时,程序仍在运行】
|
||||
daemon = True
|
||||
# 设置超时时间120s,默认为30s。按自己的需求进行设置
|
||||
timeout = 120
|
||||
# 设置访问日志和错误信息日志路径
|
||||
accesslog = './logs/acess.log'
|
||||
errorlog = './logs/error.log'
|
||||
#自动重启
|
||||
autostart = True
|
154
lib/allFunction.py
Normal file
154
lib/allFunction.py
Normal file
@ -0,0 +1,154 @@
|
||||
# 引入哈希加密的库
|
||||
import hashlib
|
||||
# 引入XML信息处理
|
||||
import receive
|
||||
# 引入回复XML信息创建
|
||||
import reply
|
||||
# 引入md5校验
|
||||
from hashlib import md5
|
||||
# 引入数据库操作函数
|
||||
from db import insertKeyword, delKeyword, getAllKeyword
|
||||
# 引入json
|
||||
import json
|
||||
# 引入获取微信图文信息
|
||||
from wxRequest import batchget_material
|
||||
|
||||
# 主处理逻辑函数-----------------------------------------------------------
|
||||
|
||||
# 处理acceptMsg方法为get的情况
|
||||
def manageGet(request):
|
||||
try:
|
||||
# 获取参数字典
|
||||
data = request.args.to_dict()
|
||||
# 无参数拦截器
|
||||
if len(data) == 0:
|
||||
return ""
|
||||
# 定义所有参数
|
||||
signature = data['signature']
|
||||
timestamp = data['timestamp']
|
||||
nonce = data['nonce']
|
||||
echostr = data['echostr']
|
||||
token = "160594753" # 请按照公众平台官网\基本配置中信息填写
|
||||
# 拼装成列表
|
||||
list = [token, timestamp, nonce]
|
||||
list.sort()
|
||||
# 初始化sha1
|
||||
sha1 = hashlib.sha1()
|
||||
# 遍历列表更sha1
|
||||
for item in list:
|
||||
manageSha1(item, sha1)
|
||||
hashcode = sha1.hexdigest()
|
||||
# 打印自己签名和微信给的签名
|
||||
print("handle/GET func: hashcode, signature: ", hashcode, signature)
|
||||
# 一样的话说明签名成功,返回echostr
|
||||
if hashcode == signature:
|
||||
return echostr
|
||||
else:
|
||||
return ""
|
||||
except Exception as Argument:
|
||||
# 错误处理
|
||||
return "error"
|
||||
|
||||
# 处理acceptMsg方法为post的情况
|
||||
def managePost(request):
|
||||
try:
|
||||
# 获取XML文本
|
||||
webData = request.data
|
||||
# 控制台打印XML文本
|
||||
# print("Handle Post webdata is ", webData)
|
||||
# 处理XML文本
|
||||
recMsg = receive.getXMLData(webData)
|
||||
# 判断信息类型
|
||||
if isinstance(recMsg, receive.Msg):
|
||||
toUser = recMsg.FromUserName
|
||||
fromUser = recMsg.ToUserName
|
||||
if recMsg.MsgType == 'text':
|
||||
# 文本类型
|
||||
content = "自动回复功能开发测试中,敬请期待"
|
||||
# 获取返回信息
|
||||
replyMsg = reply.TextMsg(toUser, fromUser, content)
|
||||
return replyMsg.send()
|
||||
if recMsg.MsgType == 'image':
|
||||
# 图片类型
|
||||
mediaId = recMsg.MediaId
|
||||
# 获取返回信息
|
||||
replyMsg = reply.ImageMsg(toUser, fromUser, mediaId)
|
||||
return replyMsg.send()
|
||||
else:
|
||||
return reply.Msg().send()
|
||||
else:
|
||||
print("暂且不处理")
|
||||
return reply.Msg().send()
|
||||
except Exception as Argment:
|
||||
print(Argment)
|
||||
return 'error'
|
||||
|
||||
# 处理图文信息获取
|
||||
def manageMaterial(request):
|
||||
# json化,应该能当dict用
|
||||
try:
|
||||
data_cache = json.loads(request.form['data'])
|
||||
except Exception as e:
|
||||
return {'errcode': 500, 'errmsg': '校验失败'}
|
||||
# MD5校验
|
||||
checked = checkData(data_cache)
|
||||
data_cache.pop('sign')
|
||||
if checked:
|
||||
return batchget_material(data_cache)
|
||||
else:
|
||||
return {'errcode': 500, 'errmsg': '校验失败'}
|
||||
|
||||
# 处理新增关键词
|
||||
def manageInsertKeyword(request):
|
||||
# json化,应该能当dict用
|
||||
try:
|
||||
data_cache = json.loads(request.form['data'])
|
||||
except Exception as e:
|
||||
return {'errcode': 300, 'errmsg': '校验失败'}
|
||||
# MD5校验
|
||||
checked = checkData(data_cache)
|
||||
data_cache.pop('sign')
|
||||
if checked:
|
||||
return insertKeyword(data_cache['item'])
|
||||
else:
|
||||
return {'errcode': 300, 'errmsg': '校验失败'}
|
||||
|
||||
# 处理删除关键词
|
||||
def manageDelKeyword(request):
|
||||
# json化,应该能当dict用
|
||||
try:
|
||||
data_cache = json.loads(request.form['data'])
|
||||
except Exception as e:
|
||||
return {'errcode': 300, 'errmsg': '校验失败'}
|
||||
# MD5校验
|
||||
checked = checkData(data_cache)
|
||||
data_cache.pop('sign')
|
||||
if checked:
|
||||
return delKeyword(data_cache['id'])
|
||||
else:
|
||||
return {'errcode': 300, 'errmsg': '校验失败'}
|
||||
|
||||
# 处理获取全部关键词
|
||||
def manageGetKeyword(request):
|
||||
return getAllKeyword()
|
||||
|
||||
# 工具函数---------------------------------------------------------------
|
||||
|
||||
# 更新sha1
|
||||
def manageSha1(arg, sha1):
|
||||
print(arg)
|
||||
sha1.update(arg.encode('utf-8'))
|
||||
|
||||
# MD5 校验
|
||||
def checkData(data):
|
||||
d = data.copy()
|
||||
try:
|
||||
d.pop('sign')
|
||||
except KeyError:
|
||||
pass
|
||||
d = str(d)
|
||||
d = d.replace(' ', '')
|
||||
md = md5()
|
||||
md.update(d.encode('utf-8'))
|
||||
r = md.hexdigest().upper()
|
||||
return r == data['sign']
|
83
lib/db.py
Normal file
83
lib/db.py
Normal file
@ -0,0 +1,83 @@
|
||||
from pymongo import MongoClient
|
||||
from bson import ObjectId, json_util
|
||||
|
||||
# 主环境 (生产环境为production,开发环境为development)
|
||||
setting = 'development'
|
||||
|
||||
# 获取数据集
|
||||
def col(arg):
|
||||
conn = MongoClient('mongodb://apiwx:srVgEGwTf4@localhost:12236/apiwx')
|
||||
if setting == 'development':
|
||||
arg += '_test'
|
||||
if arg == 'keyword':
|
||||
return conn.apiwx.keyword
|
||||
elif arg == 'access_token':
|
||||
return conn.apiwx.access_token
|
||||
elif arg == 'keyword_test':
|
||||
return conn.apiwx.keyword_test
|
||||
elif arg == 'access_token_test':
|
||||
return conn.apiwx.access_token_test
|
||||
else:
|
||||
return False
|
||||
|
||||
# 获取access_token
|
||||
def getAccessToken():
|
||||
try:
|
||||
access_token = col('access_token').find_one({"name": 'access_token'},{'content': 1})
|
||||
if access_token:
|
||||
access_token = access_token['content']
|
||||
return {'errcode': 200, 'access_token': access_token, 'errmsg': 'ok'}
|
||||
else:
|
||||
return {'errcode': 100, 'errmsg': 'access_token不存在'}
|
||||
except Exception as e:
|
||||
# id不合法
|
||||
return {'errcode': 101, 'errmsg': 'access_token获取失败', 'errdetail': e}
|
||||
|
||||
# 设置access_token
|
||||
def setAccessToken(access_token):
|
||||
try:
|
||||
res = col('access_token').update({"name": 'access_token'},
|
||||
{'$set': {'content': access_token}})
|
||||
# 判断有没有access_token
|
||||
if(res['updatedExisting']):
|
||||
return {'errcode': 200, 'errmsg': 'access_token覆写成功'}
|
||||
else:
|
||||
return insertAccessToken(access_token)
|
||||
except Exception as e:
|
||||
return {'errcode': 102, 'errmsg': 'access_token覆写失败','errdetail': e}
|
||||
|
||||
# 插入access_token
|
||||
def insertAccessToken(access_token):
|
||||
try:
|
||||
col('access_token').insert_one({'name': 'access_token', 'content': access_token})
|
||||
except Exception as e:
|
||||
# 插入失败
|
||||
return {'errcode': 103, 'errmsg': 'access_token插入失败','errdetail': e}
|
||||
return {'errcode': 200, 'errmsg': 'access_token插入成功'}
|
||||
|
||||
# 插入新关键词
|
||||
def insertKeyword(keyword):
|
||||
try:
|
||||
col('keyword').insert_one(keyword)
|
||||
except Exception as e:
|
||||
# 插入失败
|
||||
return {'errcode': 301, 'errmsg': 'keyword插入失败'}
|
||||
return {'errcode': 200, 'errmsg': 'keyword插入成功'}
|
||||
|
||||
# 删除特定关键词
|
||||
def delKeyword(id):
|
||||
try:
|
||||
col('keyword').remove({"_id" : ObjectId(id)})
|
||||
except Exception as e:
|
||||
return {'errcode': 401, 'errmsg': '数据库操作失败,id不合法'}
|
||||
return {'errcode': 200, 'errmsg': 'ok'}
|
||||
|
||||
# 获取整个表
|
||||
def getAllKeyword():
|
||||
arr = []
|
||||
try:
|
||||
for i in col('keyword').find():
|
||||
arr.append(i)
|
||||
except Exception as e:
|
||||
return {'errcode': 401, 'errmsg': 'keyword表获取失败'}
|
||||
return {'errcode': 200, 'arr': json_util.dumps(arr), 'errmsg': 'ok'}
|
32
lib/mail.py
Normal file
32
lib/mail.py
Normal file
@ -0,0 +1,32 @@
|
||||
# coding=utf-8
|
||||
import smtplib
|
||||
from email.mime.text import MIMEText
|
||||
# 发送纯文本格式的邮件
|
||||
|
||||
def sendMail(title, content, mailto_list):
|
||||
msg = MIMEText(content, 'plain', 'utf-8')
|
||||
#发送邮箱地址
|
||||
sender = '1144131090@qq.com'
|
||||
#邮箱授权码,非登陆密码
|
||||
password = 'gmzfcesmbgqhgfjb'
|
||||
#收件箱地址
|
||||
#receiver = '19xxxxxxx9@qq.com'
|
||||
# mailto_list = ['1144131090@qq.com','nayiyewosile@qq.com'] #群发邮箱地址
|
||||
|
||||
#smtp服务器
|
||||
smtp_server = 'smtp.qq.com'
|
||||
#发送邮箱地址
|
||||
msg['From'] = sender
|
||||
#收件箱地址
|
||||
#msg['To'] = receiver
|
||||
msg['To'] =';'.join(mailto_list) #发送多人邮件写法
|
||||
#主题
|
||||
msg['Subject'] = title
|
||||
|
||||
server = smtplib.SMTP(smtp_server,25) # SMTP协议默认端口是25
|
||||
server.login(sender,password) #ogin()方法用来登录SMTP服务器
|
||||
server.set_debuglevel(1) #打印出和SMTP服务器交互的所有信息。
|
||||
server.sendmail(sender,mailto_list,msg.as_string()) #msg.as_string()把MIMEText对象变成str server.quit()
|
||||
|
||||
# 第一个参数为发送者,第二个参数为接收者,可以添加多个例如:['hello@163.com','xxx@qq.com',]# 第三个参数为发送的内容
|
||||
server.quit()
|
38
lib/receive.py
Normal file
38
lib/receive.py
Normal file
@ -0,0 +1,38 @@
|
||||
# 引入XML字符串处理函数
|
||||
try:
|
||||
import xml.etree.cElementTree as ET
|
||||
except ImportError:
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
# 获取XML内容
|
||||
def getXMLData(data):
|
||||
if len(data) == 0:
|
||||
return None
|
||||
xmlData = ET.fromstring(data)
|
||||
msg_type = xmlData.find('MsgType').text
|
||||
if msg_type == 'text':
|
||||
return TextMsg(xmlData)
|
||||
elif msg_type == 'image':
|
||||
return ImageMsg(xmlData)
|
||||
|
||||
# XML信息主类
|
||||
class Msg(object):
|
||||
def __init__(self, xmlData):
|
||||
self.ToUserName = xmlData.find('ToUserName').text
|
||||
self.FromUserName = xmlData.find('FromUserName').text
|
||||
self.CreateTime = xmlData.find('CreateTime').text
|
||||
self.MsgType = xmlData.find('MsgType').text
|
||||
self.MsgId = xmlData.find('MsgId').text
|
||||
|
||||
# XML信息文本类
|
||||
class TextMsg(Msg):
|
||||
def __init__(self, xmlData):
|
||||
Msg.__init__(self, xmlData)
|
||||
self.Content = xmlData.find('Content').text.encode("utf-8")
|
||||
|
||||
# XML信息图片类
|
||||
class ImageMsg(Msg):
|
||||
def __init__(self, xmlData):
|
||||
Msg.__init__(self, xmlData)
|
||||
self.PicUrl = xmlData.find('PicUrl').text
|
||||
self.MediaId = xmlData.find('MediaId').text
|
51
lib/reply.py
Normal file
51
lib/reply.py
Normal file
@ -0,0 +1,51 @@
|
||||
# 引入时间
|
||||
import time
|
||||
|
||||
# 定义消息主类
|
||||
class Msg(object):
|
||||
def __init__(self):
|
||||
pass
|
||||
def send(self):
|
||||
return "success"
|
||||
|
||||
# 定义文本信息回复类
|
||||
class TextMsg(Msg):
|
||||
def __init__(self, toUserName, fromUserName, content):
|
||||
self.__dict = dict()
|
||||
self.__dict['ToUserName'] = toUserName
|
||||
self.__dict['FromUserName'] = fromUserName
|
||||
self.__dict['CreateTime'] = int(time.time())
|
||||
self.__dict['Content'] = content
|
||||
def send(self):
|
||||
XmlForm = """
|
||||
<xml>
|
||||
<ToUserName><![CDATA[{ToUserName}]]></ToUserName>
|
||||
<FromUserName><![CDATA[{FromUserName}]]></FromUserName>
|
||||
<CreateTime>{CreateTime}</CreateTime>
|
||||
<MsgType><![CDATA[text]]></MsgType>
|
||||
<Content><![CDATA[{Content}]]></Content>
|
||||
</xml>
|
||||
"""
|
||||
return XmlForm.format(**self.__dict)
|
||||
|
||||
# 定义图片消息回复类
|
||||
class ImageMsg(Msg):
|
||||
def __init__(self, toUserName, fromUserName, mediaId):
|
||||
self.__dict = dict()
|
||||
self.__dict['ToUserName'] = toUserName
|
||||
self.__dict['FromUserName'] = fromUserName
|
||||
self.__dict['CreateTime'] = int(time.time())
|
||||
self.__dict['MediaId'] = mediaId
|
||||
def send(self):
|
||||
XmlForm = """
|
||||
<xml>
|
||||
<ToUserName><![CDATA[{ToUserName}]]></ToUserName>
|
||||
<FromUserName><![CDATA[{FromUserName}]]></FromUserName>
|
||||
<CreateTime>{CreateTime}</CreateTime>
|
||||
<MsgType><![CDATA[image]]></MsgType>
|
||||
<Image>
|
||||
<MediaId><![CDATA[{MediaId}]]></MediaId>
|
||||
</Image>
|
||||
</xml>
|
||||
"""
|
||||
return XmlForm.format(**self.__dict)
|
32
lib/wxRequest.py
Normal file
32
lib/wxRequest.py
Normal file
@ -0,0 +1,32 @@
|
||||
import requests
|
||||
import json
|
||||
from db import setAccessToken, getAccessToken
|
||||
from mail import sendMail
|
||||
import json
|
||||
|
||||
def requestsAccessToken():
|
||||
url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx2186b63dad75fd21&secret=26a895a874615a7c112d056cc1094a80'
|
||||
res = requests.get(url=url)
|
||||
json_response = res.content.decode()
|
||||
dict_json = json.loads(json_response)
|
||||
set_res = setAccessToken(dict_json['access_token'])
|
||||
if set_res['errcode'] != 200:
|
||||
sendMail('警告!', str(set_res), ['1144131090@qq.com','160594753@qq.com'])
|
||||
|
||||
def batchget_material(data):
|
||||
# 从数据库取出
|
||||
access_token = getAccessToken()
|
||||
# 错误拦截
|
||||
if access_token['errcode'] != 200:
|
||||
return access_token
|
||||
# 取出access_token
|
||||
access_token = access_token['access_token']
|
||||
# 拼接访问地址
|
||||
url = 'https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=' + access_token
|
||||
# 发送请求
|
||||
res = requests.post(url, data=json.dumps(data))
|
||||
# 返回内容解码
|
||||
json_response = res.content.decode()
|
||||
# json化
|
||||
dict_json = json.loads(json_response)
|
||||
return {'errcode': 200, 'errmsg': 'ok', 'material': dict_json}
|
14
logs/api.log
Normal file
14
logs/api.log
Normal file
@ -0,0 +1,14 @@
|
||||
176.34.159.49 - - [13/Feb/2020:20:59:55 +0800] "GET //.git/objects/64/7895f0149ba6b34925a4194a84e577a781fe0d HTTP/1.1" 301 169 "-" "curl/7.47.0"
|
||||
182.254.52.17 - - [13/Feb/2020:21:04:06 +0800] "GET http://www.powerrain.cn/undefined HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:57.0) Gecko/20100101 Firefox/57.0"
|
||||
222.162.198.61 - - [13/Feb/2020:21:04:58 +0800] "GET /undefined HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0"
|
||||
106.118.250.72 - - [13/Feb/2020:21:37:47 +0800] "GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
|
||||
58.251.121.184 - - [13/Feb/2020:21:42:23 +0800] "GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_4 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13G35 QQ/6.5.3.410 V1_IPH_SQ_6.5.3_1_APP_A Pixel/750 Core/UIWebView NetType/2G Mem/117"
|
||||
58.247.204.63 - - [13/Feb/2020:21:43:23 +0800] "GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) \x09\x09\x09Chrome/55.0.2883.95 Safari/537.36"
|
||||
222.162.198.61 - - [13/Feb/2020:21:44:15 +0800] "GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0"
|
||||
223.166.151.197 - - [13/Feb/2020:21:46:13 +0800] "GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36"
|
||||
106.118.250.72 - - [13/Feb/2020:21:48:37 +0800] "GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
|
||||
106.118.250.72 - - [13/Feb/2020:21:50:25 +0800] "GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
|
||||
106.118.250.72 - - [13/Feb/2020:21:50:43 +0800] "GET / HTTP/1.1" 301 169 "-" "curl/7.55.1"
|
||||
106.118.250.72 - - [13/Feb/2020:21:50:47 +0800] "GET / HTTP/1.1" 301 169 "-" "curl/7.55.1"
|
||||
47.244.8.30 - - [13/Feb/2020:21:52:22 +0800] "GET /phpmyadmin/index.php HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0"
|
||||
182.254.52.17 - - [13/Feb/2020:21:54:12 +0800] "GET http://152.136.99.231/ HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:57.0) Gecko/20100101 Firefox/57.0"
|
20
logs/api443.log
Normal file
20
logs/api443.log
Normal file
@ -0,0 +1,20 @@
|
||||
176.34.159.49 - - [13/Feb/2020:20:59:58 +0800] "GET //.git/objects/64/7895f0149ba6b34925a4194a84e577a781fe0d HTTP/1.1" 404 232 "-" "curl/7.47.0"
|
||||
182.254.52.17 - - [13/Feb/2020:21:04:06 +0800] "GET /undefined HTTP/1.1" 404 232 "http://www.powerrain.cn/undefined" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:57.0) Gecko/20100101 Firefox/57.0"
|
||||
222.162.198.61 - - [13/Feb/2020:21:04:58 +0800] "GET /undefined HTTP/2.0" 404 232 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0"
|
||||
222.162.198.61 - - [13/Feb/2020:21:04:58 +0800] "GET /favicon.ico HTTP/2.0" 499 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0"
|
||||
106.118.250.72 - - [13/Feb/2020:21:37:47 +0800] "GET / HTTP/2.0" 200 11 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
|
||||
106.118.250.72 - - [13/Feb/2020:21:37:48 +0800] "GET /favicon.ico HTTP/2.0" 404 232 "https://api.powerrain.cn/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
|
||||
182.92.67.61 - - [13/Feb/2020:21:38:24 +0800] "GET /keyword/ HTTP/1.0" 404 232 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
|
||||
182.92.67.61 - - [13/Feb/2020:21:38:25 +0800] "GET /keyword/ HTTP/1.0" 404 232 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
|
||||
106.118.250.72 - - [13/Feb/2020:21:38:27 +0800] "GET / HTTP/2.0" 200 11 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
|
||||
182.92.67.61 - - [13/Feb/2020:21:38:28 +0800] "GET /keyword/ HTTP/1.0" 404 232 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
|
||||
106.118.250.72 - - [13/Feb/2020:21:38:46 +0800] "GET /keyword HTTP/2.0" 404 232 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
|
||||
58.251.121.184 - - [13/Feb/2020:21:42:23 +0800] "GET / HTTP/1.1" 200 11 "http://api.powerrain.cn/" "Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_4 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13G35 QQ/6.5.3.410 V1_IPH_SQ_6.5.3_1_APP_A Pixel/750 Core/UIWebView NetType/2G Mem/117"
|
||||
222.162.198.61 - - [13/Feb/2020:21:44:15 +0800] "GET / HTTP/2.0" 200 11 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0"
|
||||
222.162.198.61 - - [13/Feb/2020:21:44:15 +0800] "GET /favicon.ico HTTP/2.0" 404 232 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0"
|
||||
182.92.67.61 - - [13/Feb/2020:21:47:34 +0800] "GET // HTTP/1.0" 200 11 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
|
||||
182.92.67.61 - - [13/Feb/2020:21:47:35 +0800] "GET // HTTP/1.0" 200 11 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
|
||||
182.92.67.61 - - [13/Feb/2020:21:48:15 +0800] "GET / HTTP/1.0" 200 11 "-" "Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.14"
|
||||
106.118.250.72 - - [13/Feb/2020:21:48:37 +0800] "GET / HTTP/2.0" 200 11 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
|
||||
106.118.250.72 - - [13/Feb/2020:21:50:26 +0800] "GET / HTTP/2.0" 200 11 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
|
||||
182.254.52.17 - - [13/Feb/2020:21:54:12 +0800] "GET / HTTP/1.1" 200 11 "http://152.136.99.231/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:57.0) Gecko/20100101 Firefox/57.0"
|
0
logs/blog.log
Normal file
0
logs/blog.log
Normal file
2
logs/blog443.log
Normal file
2
logs/blog443.log
Normal file
@ -0,0 +1,2 @@
|
||||
150.138.138.249 - - [13/Feb/2020:21:38:16 +0800] "GET //.git/objects/5f/1c2cddd2fa158692cc909d15e608d96ad4a7bc HTTP/1.1" 200 5444 "-" "curl/7.47.0"
|
||||
150.138.138.171 - - [13/Feb/2020:21:59:48 +0800] "GET //.git/objects/de/1f5cc4bb0a593185064162e0ba9d2103e6e39d HTTP/1.1" 200 3263 "-" "curl/7.47.0"
|
0
logs/coc.log
Normal file
0
logs/coc.log
Normal file
37
logs/coc443.log
Normal file
37
logs/coc443.log
Normal file
@ -0,0 +1,37 @@
|
||||
150.138.138.91 - - [13/Feb/2020:20:55:33 +0800] "GET /service-worker.js HTTP/1.1" 304 0 "https://coc.powerrain.cn/service-worker.js" "Mozilla/5.0 (Linux; Android 10; MI 9 Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.141 Mobile Safari/537.36"
|
||||
58.216.2.91 - - [13/Feb/2020:20:59:08 +0800] "GET /service-worker.js HTTP/1.1" 304 0 "https://coc.powerrain.cn/service-worker.js" "Mozilla/5.0 (Linux; Android 9; V1824A Build/PKQ1.181216.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/68.0.3440.91 Mobile Safari/537.36"
|
||||
58.216.2.54 - - [13/Feb/2020:20:59:11 +0800] "GET /precache-manifest.7923aedeecca1b49729f6a58605fd7c7.js HTTP/1.1" 304 0 "https://coc.powerrain.cn/service-worker.js" "Mozilla/5.0 (Linux; Android 9; V1824A Build/PKQ1.181216.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/68.0.3440.91 Mobile Safari/537.36"
|
||||
150.138.138.180 - - [13/Feb/2020:21:03:01 +0800] "GET /precache-manifest.7923aedeecca1b49729f6a58605fd7c7.js HTTP/1.1" 304 0 "https://coc.powerrain.cn/service-worker.js" "Mozilla/5.0 (Linux; Android 9; JSN-AL00 Build/HONORJSN-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.136 Mobile Safari/537.36"
|
||||
150.138.138.73 - - [13/Feb/2020:21:03:01 +0800] "GET /js/app.489fa278.js?__WB_REVISION__=61373aca1246bdc65435 HTTP/1.1" 304 0 "https://coc.powerrain.cn/service-worker.js" "Mozilla/5.0 (Linux; Android 9; JSN-AL00 Build/HONORJSN-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.136 Mobile Safari/537.36"
|
||||
150.138.138.73 - - [13/Feb/2020:21:03:02 +0800] "GET /js/chunk-vendors.671a83a1.js?__WB_REVISION__=852b7df2dab69602115e HTTP/1.1" 304 0 "https://coc.powerrain.cn/service-worker.js" "Mozilla/5.0 (Linux; Android 9; JSN-AL00 Build/HONORJSN-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.136 Mobile Safari/537.36"
|
||||
150.138.138.104 - - [13/Feb/2020:21:09:06 +0800] "POST /api/laf/get HTTP/1.1" 200 1783 "https://coc.powerrain.cn/laf" "Mozilla/5.0 (Android 9; Mobile; rv:68.0) Gecko/68.0 Firefox/68.0"
|
||||
150.138.138.124 - - [13/Feb/2020:21:09:11 +0800] "POST /api/laf/get HTTP/1.1" 200 1783 "https://coc.powerrain.cn/laf" "Mozilla/5.0 (Android 9; Mobile; rv:68.0) Gecko/68.0 Firefox/68.0"
|
||||
150.138.138.146 - - [13/Feb/2020:21:09:20 +0800] "POST /api/laf/detail HTTP/1.1" 200 454 "https://coc.powerrain.cn/lafdetail" "Mozilla/5.0 (Android 9; Mobile; rv:68.0) Gecko/68.0 Firefox/68.0"
|
||||
150.138.138.249 - - [13/Feb/2020:21:09:27 +0800] "POST /api/laf/detail HTTP/1.1" 200 1083 "https://coc.powerrain.cn/lafdetail" "Mozilla/5.0 (Android 9; Mobile; rv:68.0) Gecko/68.0 Firefox/68.0"
|
||||
150.138.138.204 - - [13/Feb/2020:21:09:31 +0800] "POST /api/laf/detail HTTP/1.1" 200 1642 "https://coc.powerrain.cn/lafdetail" "Mozilla/5.0 (Android 9; Mobile; rv:68.0) Gecko/68.0 Firefox/68.0"
|
||||
150.138.138.196 - - [13/Feb/2020:21:09:35 +0800] "POST /api/laf/detail HTTP/1.1" 200 632 "https://coc.powerrain.cn/lafdetail" "Mozilla/5.0 (Android 9; Mobile; rv:68.0) Gecko/68.0 Firefox/68.0"
|
||||
150.138.138.196 - - [13/Feb/2020:21:09:37 +0800] "POST /api/laf/detail HTTP/1.1" 200 1083 "https://coc.powerrain.cn/lafdetail" "Mozilla/5.0 (Android 9; Mobile; rv:68.0) Gecko/68.0 Firefox/68.0"
|
||||
150.138.138.204 - - [13/Feb/2020:21:10:17 +0800] "POST /api/laf/detail HTTP/1.1" 200 1642 "https://coc.powerrain.cn/lafdetail" "Mozilla/5.0 (Android 9; Mobile; rv:68.0) Gecko/68.0 Firefox/68.0"
|
||||
150.138.138.91 - - [13/Feb/2020:21:15:57 +0800] "GET /api/laf/get HTTP/1.1" 405 178 "https://coc.powerrain.cn/laf" "Mozilla/5.0 (Linux; Android 9; EML-AL00 Build/HUAWEIEML-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.136 Mobile Safari/537.36"
|
||||
150.138.138.126 - - [13/Feb/2020:21:16:00 +0800] "POST /api/laf/get HTTP/1.1" 200 1783 "https://coc.powerrain.cn/laf" "Mozilla/5.0 (Linux; Android 9; EML-AL00 Build/HUAWEIEML-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.136 Mobile Safari/537.36"
|
||||
150.138.138.126 - - [13/Feb/2020:21:16:05 +0800] "POST /api/laf/detail HTTP/1.1" 200 1470 "https://coc.powerrain.cn/lafdetail" "Mozilla/5.0 (Linux; Android 9; EML-AL00 Build/HUAWEIEML-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.136 Mobile Safari/537.36"
|
||||
150.138.138.171 - - [13/Feb/2020:21:16:32 +0800] "POST /api/login HTTP/1.1" 200 86 "https://coc.powerrain.cn/login" "Mozilla/5.0 (Linux; Android 9; BLA-AL00 Build/HUAWEIBLA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.136 Mobile Safari/537.36"
|
||||
150.138.138.208 - - [13/Feb/2020:21:16:47 +0800] "POST /api/login HTTP/1.1" 200 86 "https://coc.powerrain.cn/login" "Mozilla/5.0 (Linux; Android 9; BLA-AL00 Build/HUAWEIBLA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.136 Mobile Safari/537.36"
|
||||
150.138.138.169 - - [13/Feb/2020:21:16:54 +0800] "POST /api/login HTTP/1.1" 200 25588 "https://coc.powerrain.cn/login" "Mozilla/5.0 (Linux; Android 9; BLA-AL00 Build/HUAWEIBLA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.136 Mobile Safari/537.36"
|
||||
150.138.138.180 - - [13/Feb/2020:21:17:33 +0800] "POST /api/laf/get HTTP/1.1" 200 1783 "https://coc.powerrain.cn/laf" "Mozilla/5.0 (Linux; Android 9; BLA-AL00 Build/HUAWEIBLA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.136 Mobile Safari/537.36"
|
||||
150.138.138.163 - - [13/Feb/2020:21:18:08 +0800] "POST /api/laf/detail HTTP/1.1" 200 1642 "https://coc.powerrain.cn/lafdetail" "Mozilla/5.0 (Linux; Android 9; BLA-AL00 Build/HUAWEIBLA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.136 Mobile Safari/537.36"
|
||||
150.138.138.136 - - [13/Feb/2020:21:18:20 +0800] "POST /api/laf/detail HTTP/1.1" 200 632 "https://coc.powerrain.cn/lafdetail" "Mozilla/5.0 (Linux; Android 9; BLA-AL00 Build/HUAWEIBLA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.136 Mobile Safari/537.36"
|
||||
150.138.138.70 - - [13/Feb/2020:21:18:24 +0800] "POST /api/laf/detail HTTP/1.1" 200 1470 "https://coc.powerrain.cn/lafdetail" "Mozilla/5.0 (Linux; Android 9; BLA-AL00 Build/HUAWEIBLA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.136 Mobile Safari/537.36"
|
||||
150.138.138.131 - - [13/Feb/2020:21:19:04 +0800] "POST /api/login HTTP/1.1" 200 28521 "https://coc.powerrain.cn/login" "Mozilla/5.0 (Linux; Android 9; EML-AL00 Build/HUAWEIEML-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.136 Mobile Safari/537.36"
|
||||
150.138.138.226 - - [13/Feb/2020:21:19:06 +0800] "POST /api/laf/get HTTP/1.1" 200 1783 "https://coc.powerrain.cn/laf" "Mozilla/5.0 (Linux; Android 9; EML-AL00 Build/HUAWEIEML-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.136 Mobile Safari/537.36"
|
||||
150.138.138.91 - - [13/Feb/2020:21:35:28 +0800] "GET /service-worker.js HTTP/1.1" 304 0 "https://coc.powerrain.cn/service-worker.js" "Mozilla/5.0 (Linux; Android 9; MI 8 Build/PKQ1.180729.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.141 Mobile Safari/537.36"
|
||||
150.138.138.180 - - [13/Feb/2020:21:35:29 +0800] "GET /precache-manifest.7923aedeecca1b49729f6a58605fd7c7.js HTTP/1.1" 304 0 "https://coc.powerrain.cn/service-worker.js" "Mozilla/5.0 (Linux; Android 9; MI 8 Build/PKQ1.180729.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.141 Mobile Safari/537.36"
|
||||
150.138.138.73 - - [13/Feb/2020:21:35:31 +0800] "GET /js/app.489fa278.js?__WB_REVISION__=61373aca1246bdc65435 HTTP/1.1" 304 0 "https://coc.powerrain.cn/service-worker.js" "Mozilla/5.0 (Linux; Android 9; MI 8 Build/PKQ1.180729.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.141 Mobile Safari/537.36"
|
||||
150.138.138.73 - - [13/Feb/2020:21:35:32 +0800] "GET /js/chunk-vendors.671a83a1.js?__WB_REVISION__=852b7df2dab69602115e HTTP/1.1" 304 0 "https://coc.powerrain.cn/service-worker.js" "Mozilla/5.0 (Linux; Android 9; MI 8 Build/PKQ1.180729.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.141 Mobile Safari/537.36"
|
||||
150.138.138.98 - - [13/Feb/2020:21:38:07 +0800] "POST /api/login HTTP/1.1" 200 18772 "https://coc.powerrain.cn/login" "Mozilla/5.0 (Linux; U; Android 9; zh-cn; MI 8 Build/PKQ1.180729.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.141 Mobile Safari/537.36 XiaoMi/MiuiBrowser/11.7.34"
|
||||
150.138.138.209 - - [13/Feb/2020:21:38:30 +0800] "POST /api/laf/get HTTP/1.1" 200 1783 "https://coc.powerrain.cn/laf" "Mozilla/5.0 (Linux; U; Android 9; zh-cn; MI 8 Build/PKQ1.180729.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.141 Mobile Safari/537.36 XiaoMi/MiuiBrowser/11.7.34"
|
||||
150.138.138.145 - - [13/Feb/2020:21:38:36 +0800] "POST /api/laf/detail HTTP/1.1" 200 1470 "https://coc.powerrain.cn/lafdetail" "Mozilla/5.0 (Linux; U; Android 9; zh-cn; MI 8 Build/PKQ1.180729.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.141 Mobile Safari/537.36 XiaoMi/MiuiBrowser/11.7.34"
|
||||
150.138.138.133 - - [13/Feb/2020:21:38:47 +0800] "POST /api/laf/detail HTTP/1.1" 200 1642 "https://coc.powerrain.cn/lafdetail" "Mozilla/5.0 (Linux; U; Android 9; zh-cn; MI 8 Build/PKQ1.180729.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.141 Mobile Safari/537.36 XiaoMi/MiuiBrowser/11.7.34"
|
||||
150.138.138.78 - - [13/Feb/2020:21:38:51 +0800] "POST /api/laf/detail HTTP/1.1" 200 1642 "https://coc.powerrain.cn/lafdetail" "Mozilla/5.0 (Linux; U; Android 9; zh-cn; MI 8 Build/PKQ1.180729.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.141 Mobile Safari/537.36 XiaoMi/MiuiBrowser/11.7.34"
|
||||
150.138.138.188 - - [13/Feb/2020:21:52:31 +0800] "POST /api/laf/get HTTP/1.1" 200 1783 "https://coc.powerrain.cn/laf" "Mozilla/5.0 (Linux; Android 9; VTR-AL00 Build/HUAWEIVTR-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.136 Mobile Safari/537.36"
|
||||
150.138.138.217 - - [13/Feb/2020:21:52:39 +0800] "POST /api/laf/detail HTTP/1.1" 200 1642 "https://coc.powerrain.cn/lafdetail" "Mozilla/5.0 (Linux; Android 9; VTR-AL00 Build/HUAWEIVTR-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.136 Mobile Safari/537.36"
|
8
logs/main.log
Normal file
8
logs/main.log
Normal file
@ -0,0 +1,8 @@
|
||||
222.162.198.61 - - [13/Feb/2020:21:15:47 +0800] "GET / HTTP/1.1" 200 14953 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0"
|
||||
222.162.198.61 - - [13/Feb/2020:21:15:47 +0800] "GET /favicon.ico HTTP/1.1" 404 153 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0"
|
||||
222.162.198.61 - - [13/Feb/2020:21:15:58 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0"
|
||||
222.162.198.61 - - [13/Feb/2020:21:16:00 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0"
|
||||
222.162.198.61 - - [13/Feb/2020:21:16:03 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0"
|
||||
222.162.198.61 - - [13/Feb/2020:21:16:06 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0"
|
||||
222.162.198.61 - - [13/Feb/2020:21:16:12 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0"
|
||||
222.162.198.61 - - [13/Feb/2020:21:16:14 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0"
|
0
logs/main443.log
Normal file
0
logs/main443.log
Normal file
0
logs/myb.log
Normal file
0
logs/myb.log
Normal file
2
logs/myb443.log
Normal file
2
logs/myb443.log
Normal file
@ -0,0 +1,2 @@
|
||||
52.81.24.154 - - [13/Feb/2020:20:57:50 +0800] "GET / HTTP/1.1" 200 2814 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"
|
||||
52.81.24.154 - - [13/Feb/2020:20:57:50 +0800] "GET /favicon.ico HTTP/1.1" 200 4286 "https://m.yb.powerrain.cn" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"
|
16
logs/qr443.log
Normal file
16
logs/qr443.log
Normal file
@ -0,0 +1,16 @@
|
||||
182.92.67.61 - - [13/Feb/2020:20:52:49 +0800] "GET /wxapi/keyword/get HTTP/1.0" 404 1815 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0"
|
||||
182.92.67.61 - - [13/Feb/2020:20:56:17 +0800] "GET /wxapi/keyword/get HTTP/1.0" 404 1815 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0"
|
||||
182.92.67.61 - - [13/Feb/2020:20:56:55 +0800] "GET /wxapi HTTP/1.0" 500 1816 "-" "Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.14"
|
||||
182.92.67.61 - - [13/Feb/2020:20:58:23 +0800] "GET /keyword HTTP/1.0" 500 1816 "-" "Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.14"
|
||||
150.138.138.130 - - [13/Feb/2020:21:22:06 +0800] "GET /qr?id=5e3ab63f496c3c3e5a622f74 HTTP/1.1" 301 169 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_4 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13G35 QQ/6.5.3.410 V1_IPH_SQ_6.5.3_1_APP_A Pixel/750 Core/UIWebView NetType/2G Mem/117"
|
||||
182.92.67.61 - - [13/Feb/2020:21:37:06 +0800] "GET /keyword HTTP/1.0" 500 1816 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
|
||||
182.92.67.61 - - [13/Feb/2020:21:37:22 +0800] "GET /keyword/ HTTP/1.0" 404 1815 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
|
||||
182.92.67.61 - - [13/Feb/2020:21:37:29 +0800] "GET /keyword1/ HTTP/1.0" 404 1815 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
|
||||
182.92.67.61 - - [13/Feb/2020:21:37:32 +0800] "GET /keyword21/ HTTP/1.0" 404 1815 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
|
||||
150.138.138.95 - - [13/Feb/2020:21:37:36 +0800] "GET / HTTP/1.1" 404 1815 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
|
||||
182.92.67.61 - - [13/Feb/2020:21:38:01 +0800] "GET /keyword21/ HTTP/1.0" 404 1815 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
|
||||
182.92.67.61 - - [13/Feb/2020:21:38:03 +0800] "GET /keyword/ HTTP/1.0" 404 1815 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
|
||||
182.92.67.61 - - [13/Feb/2020:21:38:05 +0800] "GET /keyword/ HTTP/1.0" 404 1815 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
|
||||
150.138.138.130 - - [13/Feb/2020:21:58:41 +0800] "GET /qr?id=5e44063356d6ee8b6d910255 HTTP/1.1" 301 169 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/7.0.10(0x17000a21) NetType/WIFI Language/zh_CN"
|
||||
150.138.138.102 - - [13/Feb/2020:21:58:41 +0800] "GET /data/5e44063356d6ee8b6d910255.js HTTP/1.1" 200 526 "https://qr.powerrain.cn/qr/?id=5e44063356d6ee8b6d910255" "Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/7.0.10(0x17000a21) NetType/WIFI Language/zh_CN"
|
||||
150.138.138.213 - - [13/Feb/2020:21:58:42 +0800] "GET /qr/img/sprite3.png HTTP/1.1" 304 0 "https://qr.powerrain.cn/qr/?id=5e44063356d6ee8b6d910255" "Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/7.0.10(0x17000a21) NetType/WIFI Language/zh_CN"
|
0
logs/yb.log
Normal file
0
logs/yb.log
Normal file
0
logs/yb443.log
Normal file
0
logs/yb443.log
Normal file
Loading…
x
Reference in New Issue
Block a user