✨ 支持跟踪重定向
This commit is contained in:
parent
862d01a475
commit
d59e882ce4
@ -5,7 +5,12 @@ from platform import uname
|
|||||||
import discord
|
import discord
|
||||||
from discord.ext import commands
|
from discord.ext import commands
|
||||||
from subprocess import run, PIPE
|
from subprocess import run, PIPE
|
||||||
|
|
||||||
|
from requests import head
|
||||||
|
from requests.exceptions import MissingSchema, InvalidURL, ConnectionError
|
||||||
|
|
||||||
from pagermaid import color, des_handler, par_handler, redis_status
|
from pagermaid import color, des_handler, par_handler, redis_status
|
||||||
|
from pagermaid.utils import process_command
|
||||||
|
|
||||||
|
|
||||||
class Info(commands.Cog):
|
class Info(commands.Cog):
|
||||||
@ -42,10 +47,60 @@ class Info(commands.Cog):
|
|||||||
embed.add_field(name="交流群", value='[点击加入](https://discord.gg/A4mWpa83e6)')
|
embed.add_field(name="交流群", value='[点击加入](https://discord.gg/A4mWpa83e6)')
|
||||||
await ctx.send(embed=embed)
|
await ctx.send(embed=embed)
|
||||||
|
|
||||||
|
@commands.command()
|
||||||
|
async def trace(self, context):
|
||||||
|
message = process_command(context)
|
||||||
|
if len(message.parameters) == 1:
|
||||||
|
url = message.arguments
|
||||||
|
if url.startswith("https://") or url.startswith("http://"):
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
url = "https://" + url
|
||||||
|
msg = await context.reply('跟踪重定向中...')
|
||||||
|
result = str("")
|
||||||
|
for url in url_tracer(url):
|
||||||
|
count = 0
|
||||||
|
if result:
|
||||||
|
result += " ↴\n" + url
|
||||||
|
else:
|
||||||
|
result = url
|
||||||
|
if count == 128:
|
||||||
|
result += f"\n\n重定向超过 128 次,已停止追踪。"
|
||||||
|
break
|
||||||
|
if result:
|
||||||
|
if len(result) > 2000:
|
||||||
|
result = result[:2000]
|
||||||
|
await msg.edit(content=f"跟踪重定向:\n"
|
||||||
|
f"{result}")
|
||||||
|
else:
|
||||||
|
await msg.edit(content='服务器连接失败。')
|
||||||
|
else:
|
||||||
|
await context.reply('您好像输入了一个无效的参数。')
|
||||||
|
|
||||||
|
|
||||||
des_handler('info', '查看程序信息。')
|
des_handler('info', '查看程序信息。')
|
||||||
par_handler('info', '')
|
par_handler('info', '')
|
||||||
|
des_handler('trace', '追踪重定向。')
|
||||||
|
par_handler('info', '<url>')
|
||||||
|
|
||||||
|
|
||||||
def setup(bot):
|
def setup(bot):
|
||||||
bot.add_cog(Info(bot))
|
bot.add_cog(Info(bot))
|
||||||
|
|
||||||
|
|
||||||
|
def url_tracer(url):
|
||||||
|
""" Method to trace URL redirects. """
|
||||||
|
while True:
|
||||||
|
yield url
|
||||||
|
try:
|
||||||
|
response = head(url)
|
||||||
|
except MissingSchema:
|
||||||
|
break
|
||||||
|
except InvalidURL:
|
||||||
|
break
|
||||||
|
except ConnectionError:
|
||||||
|
break
|
||||||
|
if 300 < response.status_code < 400:
|
||||||
|
url = response.headers['location']
|
||||||
|
else:
|
||||||
|
break
|
||||||
|
@ -4,3 +4,4 @@ PyYAML>=5.4.1
|
|||||||
redis>=3.5.3
|
redis>=3.5.3
|
||||||
coloredlogs>=15.0.1
|
coloredlogs>=15.0.1
|
||||||
pytz>=2021.1
|
pytz>=2021.1
|
||||||
|
requests>=2.25.1
|
||||||
|
Loading…
Reference in New Issue
Block a user