This repository has been archived by the owner on Sep 16, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathFakeUAdb.py
62 lines (50 loc) · 1.8 KB
/
FakeUAdb.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import hashlib
from peewee import *
db = SqliteDatabase('useragents.db') # 初始化数据库
class UAS(Model):
uid = AutoField(primary_key=True, null=True) # 自增ID
useragent = TextField(unique=True) # useragent
software = CharField(null=True) # 软件类型
engine = CharField(null=True) # 引擎
types = CharField(null=True) # 硬件类型
popularity = CharField(null=True) # 通用性
class Meta:
database = db # 指定数据库
db.connect() # 连接数据库
db.create_tables([UAS]) # 初始化创建不存在的库
def UserAgent(searchwords, methods='and'):
"""
{
"key":[
"words1",
"words2"
]
}
"""
count = 0
resagent = ''
if methods not in ['and', 'or']:
return ''
methods = '&' if not methods == 'or' else '|'
whereQuery = f' {methods} '.join([
f'(UAS.{key} << {str(item)})' for key, item in searchwords.items()
])
try:
count = UAS.select().where(eval(whereQuery)).order_by(fn.Random()).count()
resagent = UAS.select().where(eval(whereQuery)).order_by(
fn.Random()).limit(1)[0].useragent
except Exception as e:
pass
return count, resagent
def UserAgentGroups(colname, limit=10):
if colname in ['software', 'engine', 'types', 'popularity']: # 判定查询字段是否合法
target = eval(f'UAS.{colname}') # 取得目标字段类
return {eval(f'item.{colname}'): item.nums for item in UAS.select(target, fn.COUNT(target).alias('nums')).group_by(target).order_by(fn.COUNT(target).desc()).limit(limit)}
if __name__ == '__main__':
from pprint import pprint
print(UserAgent({
"software": [
'Android Browser 4.0'
]
}))
# pprint(UserAgentGroups('engine', 5))