263 lines
7.3 KiB
Python
263 lines
7.3 KiB
Python
import json
|
||
import random
|
||
|
||
import requests
|
||
from peewee import fn
|
||
|
||
from models.ips import Ips
|
||
from models.xstart import Xstart
|
||
from models.xtoken import XToken
|
||
|
||
url = "http://127.0.0.1:54345"
|
||
headers = {'Content-Type': 'application/json'}
|
||
tg_url = "https://web.telegram.org/a/"
|
||
|
||
|
||
def createBrowser(
|
||
groupId=None,
|
||
host=None,
|
||
port=None,
|
||
proxyUserName=None,
|
||
proxyPassword=None,
|
||
name='google',
|
||
proxyType="socks5"
|
||
): # 创建或者更新窗口,指纹参数 browserFingerPrint 如没有特定需求,只需要指定下内核即可,如果需要更详细的参数,请参考文档
|
||
json_data = {
|
||
"groupId": groupId, # 分组id
|
||
'name': name, # 窗口名称
|
||
'remark': '', # 备注
|
||
'proxyMethod': 1, # 代理方式 2自定义 3 提取IP
|
||
# 代理类型 ['noproxy', 'http', 'https', 'socks5', 'ssh']
|
||
'proxyType': proxyType,
|
||
'host': host, # 代理主机EE
|
||
'port': port, # 代理端口
|
||
'proxyUserName': proxyUserName, # 代理账号
|
||
'proxyPassword': proxyPassword, # 代理账号
|
||
"browserFingerPrint": { # 指纹对象
|
||
'coreVersion': '138' # 内核版本,注意,win7/win8/winserver 2012 已经不支持112及以上内核了,无法打开
|
||
}
|
||
}
|
||
|
||
res = requests.post(f"{url}/browser/update",
|
||
data=json.dumps(json_data), headers=headers).json()
|
||
|
||
print(res)
|
||
|
||
browserId = res['data']['id']
|
||
|
||
return browserId
|
||
|
||
|
||
def updateBrowser(): # 更新窗口,支持批量更新和按需更新,ids 传入数组,单独更新只传一个id即可,只传入需要修改的字段即可,比如修改备注,具体字段请参考文档,browserFingerPrint指纹对象不修改,则无需传入
|
||
json_data = {'ids': ['93672cf112a044f08b653cab691216f0'],
|
||
'remark': '我是一个备注', 'browserFingerPrint': {}}
|
||
res = requests.post(f"{url}/browser/update/partial",
|
||
data=json.dumps(json_data), headers=headers).json()
|
||
print(res)
|
||
|
||
|
||
def openBrowser(id): # 直接指定ID打开窗口,也可以使用 createBrowser 方法返回的ID
|
||
json_data = {"id": f'{id}', "args": [
|
||
# "--disable-application-cache",
|
||
# "--disable-cache",
|
||
# "--disable-gpu-shader-disk-cache",
|
||
# "--media-cache-size=1",
|
||
# "--disk-cache-size=1",
|
||
# "--incognito"
|
||
]}
|
||
res = requests.post(f"{url}/browser/open",
|
||
data=json.dumps(json_data), headers=headers).json()
|
||
|
||
print(res)
|
||
|
||
return res["data"]["http"].split(":")[1]
|
||
|
||
|
||
def closeBrowser(id): # 关闭窗口
|
||
json_data = {'id': f'{id}'}
|
||
res = requests.post(f"{url}/browser/close",
|
||
data=json.dumps(json_data), headers=headers)
|
||
return res.json()
|
||
|
||
|
||
def deleteBrowser(id): # 删除窗口
|
||
json_data = {'id': f'{id}'}
|
||
print(requests.post(f"{url}/browser/delete",
|
||
data=json.dumps(json_data), headers=headers).json())
|
||
|
||
|
||
def query_bit_browser(page, page_size):
|
||
data = {"page": page, "pageSize": page_size, 'sort': 'asc'}
|
||
|
||
res = requests.post(f'{url}/browser/list', data=json.dumps(data), headers=headers)
|
||
|
||
return res.json()["data"]["list"]
|
||
|
||
|
||
def update_proxy_Browser(
|
||
id,
|
||
host,
|
||
port,
|
||
proxyType="socks5",
|
||
proxyUserName="",
|
||
proxyPassword=""
|
||
):
|
||
json_data = {
|
||
"ids": [id],
|
||
# "ipCheckService": "ip123in",
|
||
"proxyMethod": 2,
|
||
"proxyType": proxyType,
|
||
"host": host,
|
||
"port": port,
|
||
"proxyUserName": proxyUserName,
|
||
"proxyPassword": proxyPassword
|
||
}
|
||
|
||
res = requests.post(f'{url}/browser/proxy/update', data=json.dumps(json_data), headers=headers)
|
||
print(res.json())
|
||
return res.json()
|
||
|
||
|
||
def get_group_lists_Browser():
|
||
json_data = {
|
||
"page": 0,
|
||
"pageSize": 100,
|
||
"all": True
|
||
}
|
||
|
||
res = requests.post(f'{url}/group/list', data=json.dumps(json_data), headers=headers)
|
||
return res.json()["data"]["list"]
|
||
|
||
|
||
def get_browser_lists_Browser(id, page=0):
|
||
json_data = {
|
||
"groupId": id,
|
||
"page": page,
|
||
"pageSize": 100
|
||
}
|
||
|
||
res = requests.post(f'{url}/browser/list', data=json.dumps(json_data), headers=headers)
|
||
return res.json()["data"]["list"]
|
||
|
||
|
||
def get_group_lists(): # 获取全部分组的信息
|
||
# url = "/group/list"
|
||
|
||
json_data = {
|
||
"page": 0,
|
||
"pageSize": 100,
|
||
"all": True
|
||
}
|
||
|
||
res = requests.post(f'{url}/group/list', data=json.dumps(json_data), headers=headers)
|
||
|
||
data = {}
|
||
|
||
for i in res.json()["data"]["list"]:
|
||
data[i["groupName"]] = i["id"]
|
||
|
||
return data
|
||
|
||
|
||
def group_add(groupName):
|
||
json_data = {
|
||
"groupName": groupName,
|
||
"sortNum": 0
|
||
}
|
||
|
||
res = requests.post(f'{url}/group/add', data=json.dumps(json_data), headers=headers)
|
||
|
||
return res.json()
|
||
|
||
|
||
def browser_detail(id):
|
||
json_data = {
|
||
"id": id
|
||
}
|
||
|
||
res = requests.post(f'{url}/browser/detail', data=json.dumps(json_data), headers=headers)
|
||
|
||
return res.json()
|
||
|
||
|
||
def group_update(groupId, browserIds):
|
||
# json_data = {
|
||
# "groupId": "41notc1202sr8gu5o6emb9ihaqbzbkic",
|
||
# "browserIds": ["af25e626167f4870b8f257e697bb4f05", "3baa6e990fee4e839c72722c8dc18019"]
|
||
# }
|
||
|
||
json_data = {
|
||
"groupId": groupId,
|
||
"browserIds": browserIds
|
||
}
|
||
|
||
res = requests.post(f'{url}/browser/group/update', data=json.dumps(json_data), headers=headers)
|
||
|
||
return res.json()
|
||
|
||
|
||
if __name__ == '__main__':
|
||
# for i in Xstart.select().where(
|
||
# Xstart.x_id.is_null()
|
||
# ):
|
||
# ips_info = Ips.select().where(Ips.start == 1, Ips.country == "法国").order_by(fn.Rand()).get()
|
||
#
|
||
# update_proxy_Browser(
|
||
# id=i.bit_id,
|
||
# host=ips_info.host,
|
||
# port=ips_info.port,
|
||
# proxyUserName=ips_info.username,
|
||
# proxyPassword=ips_info.password
|
||
# )
|
||
|
||
# fz_datas = get_group_lists()
|
||
# # fz_datas['推特']
|
||
#
|
||
# for i in range(10):
|
||
# for i in get_browser_lists_Browser(id=fz_datas['推特'], page=i):
|
||
# x_start_info = Xstart.get_or_none(
|
||
# Xstart.bit_id == i["id"]
|
||
# )
|
||
#
|
||
# if not x_start_info:
|
||
# deleteBrowser(id=i["id"])
|
||
#
|
||
# continue
|
||
#
|
||
# if x_start_info.start:
|
||
# continue
|
||
#
|
||
# deleteBrowser(id=i["id"])
|
||
#
|
||
# x_start_info.bit_id = None
|
||
# x_start_info.save()
|
||
|
||
# for i in Xstart.select():
|
||
# res = browser_detail(id=i.bit_id)
|
||
# print(res)
|
||
#
|
||
# if not res["success"]:
|
||
# i.bit_id = None
|
||
# i.save()
|
||
|
||
# print(browser_detail(id="532651f5330e4caa917e644f9b676b"))
|
||
|
||
# 批量修改代理
|
||
for i in Xstart.select().where(Xstart.start == 1):
|
||
update_proxy_Browser(id=i.bit_id, proxyType="http", host="127.0.0.1", port=random.randint(42000, 42089), )
|
||
|
||
# fz_datas = get_group_lists()
|
||
# print(fz_datas)
|
||
# bit_id_list = []
|
||
# for i in XToken.select().where(XToken.account_start == 2):
|
||
# sql_info = Xstart.get_or_none(
|
||
# Xstart.x_id == i.id
|
||
# )
|
||
#
|
||
# bit_id_list.append(sql_info.bit_id)
|
||
#
|
||
# print(len(bit_id_list))
|
||
# print(bit_id_list)
|
||
#
|
||
# print(group_update(fz_datas["西班牙语"], bit_id_list))
|