mirror of
https://github.com/KingJin-web/zy.git
synced 2025-12-16 23:19:32 +08:00
153 lines
5.4 KiB
Python
153 lines
5.4 KiB
Python
# cron: 10 */2 * * *
|
||
# new Env('更新IP代理白名单');
|
||
import os
|
||
|
||
# 长期套餐大额流量电话卡办理地址:https://img.hnking.cn//blog/202504141427660.png
|
||
|
||
## 携趣代理地址 https://www.xiequ.cn/index.html?d630539f
|
||
## 星空代理地址 https://www.xkdaili.com/
|
||
## 巨量代理地址 https://www.juliangip.com/user/reg?inviteCode=1040216
|
||
# 携趣环境变量 export XIEQU='UID=xxx;UKEY=xxx'
|
||
# 星空环境变量 export XK='APIKEY=xxx;SIGN=xxx'
|
||
# 巨量环境变量 export JULIANG='KEY=xxx;TRADE_NO=xxx'
|
||
|
||
import requests
|
||
import hashlib
|
||
import urllib.parse
|
||
|
||
|
||
|
||
class SignKit:
|
||
|
||
@staticmethod
|
||
def md5_sign(params, secret):
|
||
sign_content = SignKit.get_sign_content(params)
|
||
return hashlib.md5((sign_content + '&key=' + secret).encode('utf-8')).hexdigest()
|
||
|
||
@staticmethod
|
||
def get_sign_content(params):
|
||
params.pop('sign', None) # 删除 sign
|
||
sorted_params = sorted(params.items())
|
||
sign_content = '&'.join(
|
||
[f"{k}={str(v)}" for k, v in sorted_params if str(v) is not None and not str(v).startswith('@')])
|
||
return sign_content
|
||
|
||
|
||
# def get_current_ip():
|
||
# response = requests.get('https://myip.ipip.net/json')
|
||
# data = response.json()
|
||
# return data['data']['ip']
|
||
def get_current_ip():
|
||
"""获取当前 IP 地址"""
|
||
try:
|
||
response = requests.get('https://httpbin.org/ip')
|
||
response.raise_for_status()
|
||
res = response.json().get('origin')
|
||
return res
|
||
except requests.exceptions.RequestException as e:
|
||
print(f"Failed to fetch the current IP: {e}")
|
||
return get_current_ip2()
|
||
|
||
|
||
# https://ip.3322.net
|
||
|
||
def get_current_ip2():
|
||
api_url = f"https://ip.3322.net"
|
||
try:
|
||
response = requests.get(api_url)
|
||
response.raise_for_status()
|
||
return response.text
|
||
except requests.exceptions.RequestException as e:
|
||
print(f"Failed to fetch information for IP: {e}")
|
||
|
||
|
||
def update_juliang_white_list(ip, JULIANG_KEY, JULIANG_TRADE_NO):
|
||
if JULIANG_KEY and JULIANG_TRADE_NO:
|
||
params = {
|
||
'new_ip': ip,
|
||
'reset': '1',
|
||
'trade_no': JULIANG_TRADE_NO
|
||
}
|
||
sign = SignKit.md5_sign(params, JULIANG_KEY)
|
||
query_string = urllib.parse.urlencode(params) + "&sign=" + sign
|
||
|
||
url = f'http://v2.api.juliangip.com/dynamic/replaceWhiteIp?{query_string}'
|
||
response = requests.get(url)
|
||
return response.text
|
||
|
||
|
||
def update_xk_white_list(ip, XK_APIKEY, XK_SIGN):
|
||
if XK_APIKEY and XK_SIGN:
|
||
url = f'http://api2.xkdaili.com/tools/XApi.ashx?apikey={XK_APIKEY}&type=addwhiteip&sign={XK_SIGN}&flag=8&ip={ip}'
|
||
response = requests.get(url)
|
||
return response.text
|
||
|
||
|
||
def update_xiequ_white_list(ip, XIEQU_UID, XIEQU_UKEY):
|
||
if XIEQU_UID and XIEQU_UKEY:
|
||
url = f'http://op.xiequ.cn/IpWhiteList.aspx?uid={XIEQU_UID}&ukey={XIEQU_UKEY}&act=get'
|
||
response = requests.get(url)
|
||
data = response.text
|
||
print(data)
|
||
arr = data.split(',')
|
||
print(arr)
|
||
if ip in arr:
|
||
return '携趣白名单ip未变化'
|
||
if ip not in arr:
|
||
requests.get(f'http://op.xiequ.cn/IpWhiteList.aspx?uid={XIEQU_UID}&ukey={XIEQU_UKEY}&act=del&ip=all')
|
||
response = requests.get(
|
||
f'http://op.xiequ.cn/IpWhiteList.aspx?uid={XIEQU_UID}&ukey={XIEQU_UKEY}&act=add&ip={ip}')
|
||
return '更新xiequ白名单成功' if response.status_code == 200 else '更新xiequ白名单出错'
|
||
else:
|
||
return '携趣白名单ip未变化'
|
||
|
||
|
||
def main():
|
||
ip = get_current_ip()
|
||
|
||
|
||
print('当前ip地址:', ip)
|
||
print('''#长期套餐大额流量电话卡办理地址:https://img.hnking.cn//blog/202504141427660.png
|
||
## 携趣代理地址 https://www.xiequ.cn/index.html?d630539f
|
||
## 星空代理地址 https://www.xkdaili.com/
|
||
## 巨量代理地址 https://www.juliangip.com/user/reg?inviteCode=1040216
|
||
# 携趣环境变量 export XIEQU='UID=xxx;UKEY=xxx'
|
||
# 星空环境变量 export XK='APIKEY=xxx;SIGN=xxx'
|
||
# 巨量环境变量 export JULIANG='KEY=xxx;TRADE_NO=xxx'
|
||
''')
|
||
# 从青龙面板 获取变量
|
||
# export XIEQU='UID=xxx;UKEY=xxx'
|
||
# export XK='APIKEY=xxx;SIGN=xxx'
|
||
# export JULIANG='KEY=xxx;TRADE_NO=xxx'
|
||
JULIANG_KEY = '' # 填入巨量的 Key
|
||
JULIANG_TRADE_NO = '' # 填入巨量的 Trade No
|
||
XK_APIKEY = '' # 填入星空的 API Key
|
||
XK_SIGN = '' # 填入星空的 Sign
|
||
XIEQU_UID = '' # 填入携趣的 UID
|
||
XIEQU_UKEY = '' # 填入携趣的 UKEY
|
||
|
||
JULIANG = os.getenv('JULIANG')
|
||
XK = os.getenv('XK')
|
||
XIEQU = os.getenv('XIEQU')
|
||
if XIEQU != None:
|
||
XIEQU_UID = XIEQU.split(';')[0].split('=')[1]
|
||
XIEQU_UKEY = XIEQU.split(';')[1].split('=')[1]
|
||
if JULIANG != None:
|
||
JULIANG_KEY = JULIANG.split(';')[0].split('=')[1]
|
||
JULIANG_TRADE_NO = JULIANG.split(';')[1].split('=')[1]
|
||
if XK != None:
|
||
XK_APIKEY = XK.split(';')[0].split('=')[1]
|
||
XK_SIGN = XK.split(';')[1].split('=')[1]
|
||
|
||
print('更新当前IP:', ip)
|
||
if JULIANG_KEY != None and JULIANG_TRADE_NO != None:
|
||
print('更新巨量白名单结果:', update_juliang_white_list(ip, JULIANG_KEY, JULIANG_TRADE_NO))
|
||
if XK_APIKEY != None and XK_SIGN != None:
|
||
print('更新星空白名单结果:', update_xk_white_list(ip, XK_APIKEY, XK_SIGN))
|
||
if XIEQU_UID != None and XIEQU_UKEY != None:
|
||
print('更新携趣白名单结果:', update_xiequ_white_list(ip, XIEQU_UID, XIEQU_UKEY))
|
||
|
||
|
||
if __name__ == "__main__":
|
||
main()
|