Added files
This commit is contained in:
commit
7fdf0232c8
Binary file not shown.
After Width: | Height: | Size: 38 KiB |
|
@ -0,0 +1,117 @@
|
|||
from pyrogram import Client, filters
|
||||
from groupwatcher import watch
|
||||
from datetime import date as dt1
|
||||
from datetime import datetime
|
||||
import urlexpander
|
||||
import json
|
||||
|
||||
# bot object
|
||||
app = Client('urlExpander', config_file='main.ini')
|
||||
|
||||
hour = datetime.now()
|
||||
today = dt1.today()
|
||||
|
||||
# indexing groups for greet message
|
||||
groups = []
|
||||
|
||||
with open('groupsin.txt', 'r') as e:
|
||||
groups.append(e.readlines())
|
||||
groups = str(groups)
|
||||
groups = groups.replace('[', '')
|
||||
groups = groups.replace(']', '')
|
||||
groups = groups.replace(' ', '')
|
||||
groups = groups.replace('\\n', '')
|
||||
groups = groups.replace("'", '')
|
||||
groups = groups.split(',')
|
||||
groups = list(groups)
|
||||
print(groups)
|
||||
e.close()
|
||||
|
||||
|
||||
# expander command
|
||||
@app.on_message(filters.command('expander') & filters.private)
|
||||
def expand(client, message):
|
||||
items = []
|
||||
counter = 0
|
||||
url = str(message.text).replace('/expander', '').strip()
|
||||
# it will be used in the loopFF
|
||||
items = []
|
||||
counter = 0
|
||||
|
||||
# always use the module.method pattern
|
||||
api_request = urlexpander.unshort(url)
|
||||
hops = api_request['hops']
|
||||
|
||||
# transforming hops in a list(it is actually a dict)
|
||||
hops = list(hops.values())
|
||||
|
||||
# looping over hops
|
||||
for hop in hops:
|
||||
counter += 1
|
||||
link = f'{counter}. {hop}'
|
||||
url_original = f'{min(hops)}'
|
||||
items.append(link)
|
||||
|
||||
res = items[-1]
|
||||
res = str(res)
|
||||
res = res[3:]
|
||||
|
||||
# "cleaning" items (as a string)
|
||||
items = str(items)
|
||||
items = items.replace('[', '')
|
||||
items = items.replace(']', '')
|
||||
items = items.replace("'", '')
|
||||
items = items.replace(', ', '\n')
|
||||
|
||||
current_date = today.strftime("%d %B, %Y")
|
||||
current_time = hour.strftime("%H:%M:%S")
|
||||
|
||||
data = f'{current_date} - {current_time}'
|
||||
|
||||
log = {
|
||||
'date': data,
|
||||
'id': message.from_user.id,
|
||||
'group_id': message.chat.id,
|
||||
'message_id': message.message_id,
|
||||
'api_response': api_request,
|
||||
}
|
||||
|
||||
with open('logs.txt', 'a') as f:
|
||||
json.dump(log, f)
|
||||
f.write('\n')
|
||||
f.close()
|
||||
|
||||
# bot message output
|
||||
message.reply('URL Original:\n{}\n\nURL Final:\n{}\n\nRedirecionamentos:\n{}'.format(url_original, res, items), disable_web_page_preview=True)
|
||||
|
||||
# wiping data
|
||||
del items
|
||||
del api_request
|
||||
del hops
|
||||
del url
|
||||
del log
|
||||
del data
|
||||
|
||||
|
||||
# group greeting
|
||||
@app.on_message(filters.group)
|
||||
def greet(client, message):
|
||||
if str(message.chat.id) not in groups:
|
||||
chat = message.chat.id
|
||||
groups.append(str(chat))
|
||||
with open('groupsin.txt', 'a') as e:
|
||||
e.write(str(chat))
|
||||
e.write('\n')
|
||||
e.close()
|
||||
app.send_photo(message.chat.id, 'img.jpg', caption='Obrigado por adicionar-me ao vosso grupo.\nApenas deixe-me fazer o meu trabalho. Analisarei todas as mensagens a seguir em busca de serviços encurtadores de link registrados no nosso banco de dados.\nResponda uma mensagem contendo um link marcando-me ou utilize o /expander para eu analisar o link sem consultar o nosso banco de dados.\n\nUm oferecimento\n@terabitSec')
|
||||
else:
|
||||
watch(client, message)
|
||||
|
||||
|
||||
@app.on_message(filters.command('start'))
|
||||
def start(client, message):
|
||||
message.reply('Olá, {}!\n\nSeja bem-vindo ao urlExpander! Posso desencurtar links aqui também: use o comando /expander seulink/algumacoisa'.format(message.from_user.first_name))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run()
|
|
@ -0,0 +1,155 @@
|
|||
from pyrogram import Client, filters
|
||||
from datetime import date as dt1
|
||||
from datetime import datetime
|
||||
from string import digits
|
||||
from pathlib import Path
|
||||
import re
|
||||
import urlexpander
|
||||
import json
|
||||
|
||||
app = Client('urlExpander')
|
||||
|
||||
hour = datetime.now()
|
||||
today = dt1.today()
|
||||
path = '/services/' # Always put the ending slash in the path variable
|
||||
|
||||
services = []
|
||||
file_list = []
|
||||
|
||||
for f in Path(path).glob('*.txt'):
|
||||
file_list.append(f.name)
|
||||
index = len(file_list)
|
||||
|
||||
while index != 0:
|
||||
for i in range(0, index):
|
||||
add_list = []
|
||||
file = file_list[i]
|
||||
r = open(path + file, 'r')
|
||||
add_list.append(r.readlines())
|
||||
add_list = str(add_list)
|
||||
add_list = add_list.replace('[', '')
|
||||
add_list = add_list.replace(']', '')
|
||||
add_list = add_list.replace(' ', '')
|
||||
add_list = add_list.replace('\\n', '')
|
||||
add_list = add_list.replace("'", '')
|
||||
add_list = add_list.split(',')
|
||||
add_list = list(add_list)
|
||||
services += add_list
|
||||
print(len(add_list))
|
||||
del add_list
|
||||
index -= 1
|
||||
r.close()
|
||||
|
||||
print(f'Supported services: {len(services)}')
|
||||
|
||||
|
||||
def watch(client, message):
|
||||
counter = 1
|
||||
links = []
|
||||
for service in services:
|
||||
pattern = f'{service}/'
|
||||
match = re.match(pattern, message.text)
|
||||
if match:
|
||||
url = match.group(0)
|
||||
request = urlexpander.unshort(url)
|
||||
hops = request['hops']
|
||||
hops = list(hops.values())
|
||||
|
||||
for hop in hops:
|
||||
link = f'{counter}. {hop}'
|
||||
url_original = f'{min(hops)}'
|
||||
links.append(link)
|
||||
counter += 1
|
||||
|
||||
res = links[-1]
|
||||
res = str(res)
|
||||
res = res[3:]
|
||||
|
||||
links = str(links)
|
||||
links = links.replace('[', '')
|
||||
links = links.replace(']', '')
|
||||
links = links.replace("'", '')
|
||||
links = links.replace(', ', '\n')
|
||||
|
||||
current_date = today.strftime("%d %B, %Y")
|
||||
current_time = hour.strftime("%H:%M:%S")
|
||||
|
||||
data = f'{current_date} - {current_time}'
|
||||
|
||||
log = {
|
||||
'date': data,
|
||||
'id': message.from_user.id,
|
||||
'group_id': message.chat.id,
|
||||
'message_id': message.message_id,
|
||||
'api_response': request,
|
||||
}
|
||||
|
||||
with open('logs.txt', 'a') as f:
|
||||
json.dump(log, f)
|
||||
f.write('\n')
|
||||
f.close()
|
||||
|
||||
# auto-search output message
|
||||
message.reply('URL Original:\n{}\n\nURL Final:\n{}\n\nRedirecionamentos:\n{}'.format(url_original, res, links), disable_web_page_preview=True)
|
||||
del links
|
||||
del link
|
||||
del res
|
||||
del hops
|
||||
del request
|
||||
del url
|
||||
del log
|
||||
del data
|
||||
|
||||
|
||||
# on /expander group call
|
||||
@app.on_message(filters.command('expander'))
|
||||
def expander(client, message):
|
||||
url = message.text.replace('/expander','').replace(' ','')
|
||||
urlexpander.unshort(url)
|
||||
request = urlexpander.unshort(url)
|
||||
hops = request['hops']
|
||||
hops = list(hops.values())
|
||||
|
||||
for hop in hops:
|
||||
link = f'{counter}. {hop}'
|
||||
url_original = f'{min(hops)}'
|
||||
links.append(link)
|
||||
counter += 1
|
||||
|
||||
res = links[-1]
|
||||
res = str(res)
|
||||
res = res[3:]
|
||||
|
||||
links = str(links)
|
||||
links = links.replace('[', '')
|
||||
links = links.replace(']', '')
|
||||
links = links.replace("'", '')
|
||||
links = links.replace(', ', '\n')
|
||||
|
||||
current_date = today.strftime("%d %B, %Y")
|
||||
current_time = hour.strftime("%H:%M:%S")
|
||||
|
||||
data = f'{current_date} - {current_time}'
|
||||
|
||||
log = {
|
||||
'date': data,
|
||||
'id': message.from_user.id,
|
||||
'group_id': message.chat.id,
|
||||
'message_id': message.message_id,
|
||||
'api_response': request,
|
||||
}
|
||||
|
||||
with open('logs.txt', 'a') as f:
|
||||
json.dump(log, f)
|
||||
f.write('\n')
|
||||
f.close()
|
||||
|
||||
# group: output message
|
||||
message.reply('URL Original:\n{}\n\nURL Final:\n{}\n\nRedirecionamentos:\n{}'.format(url_original, res, links), disable_web_page_preview=True)
|
||||
del links
|
||||
del link
|
||||
del res
|
||||
del hops
|
||||
del request
|
||||
del url
|
||||
del data
|
|
@ -0,0 +1,3 @@
|
|||
dnspython==2.2.1
|
||||
Pyrogram==1.4.9
|
||||
requests==2.22.0
|
|
@ -0,0 +1,648 @@
|
|||
0rz.tw
|
||||
1-url.net
|
||||
126.am
|
||||
1link.in
|
||||
1tk.us
|
||||
1un.fr
|
||||
1url.com
|
||||
1url.cz
|
||||
1wb2.net
|
||||
2.gp
|
||||
2.ht
|
||||
23o.net
|
||||
2ad.in
|
||||
2big.at
|
||||
2doc.net
|
||||
2fear.com
|
||||
2pl.us
|
||||
2tu.us
|
||||
2ty.in
|
||||
2u.xf.cz
|
||||
2ya.com
|
||||
3ra.be
|
||||
3x.si
|
||||
4i.ae
|
||||
4url.cc
|
||||
4view.me
|
||||
5em.cz
|
||||
5url.net
|
||||
5z8.info
|
||||
6fr.ru
|
||||
6g6.eu
|
||||
6url.com
|
||||
7.ly
|
||||
76.gd
|
||||
77.ai
|
||||
7fth.cc
|
||||
7li.in
|
||||
7vd.cn
|
||||
8u.cz
|
||||
944.la
|
||||
98.to
|
||||
9m.no
|
||||
9qr.de
|
||||
AltURL.com
|
||||
Bit.ly
|
||||
BudURL.com
|
||||
Buff.ly
|
||||
BurnURL.com
|
||||
C-O.IN
|
||||
ClickMeter.com
|
||||
DecentURL.com
|
||||
DigBig.com
|
||||
Digg.com
|
||||
DwarfURL.com
|
||||
EasyURI.com
|
||||
EasyURL.net
|
||||
EsyURL.com
|
||||
Fhurl.com
|
||||
Fly2.ws
|
||||
GoWat.ch
|
||||
Hurl.it
|
||||
IsCool.net
|
||||
Just.as
|
||||
L9.fr
|
||||
Lvvk.com
|
||||
MyURL.in
|
||||
PiURL.com
|
||||
Profile.to
|
||||
QLNK.net
|
||||
Quip-Art.com
|
||||
RedirX.com
|
||||
Sharein.com
|
||||
ShortLinks.co.uk
|
||||
Shrinkify.com
|
||||
SimURL.com
|
||||
StartURL.com
|
||||
TightURL.com
|
||||
Tnij.org
|
||||
To8.cc
|
||||
TraceURL.com
|
||||
URL.ie
|
||||
URLHawk.com
|
||||
WapURL.co.uk
|
||||
XeeURL.com
|
||||
Yep.it
|
||||
a.co
|
||||
a.gg
|
||||
a.nf
|
||||
a0.fr
|
||||
a2a.me
|
||||
abbr.sk
|
||||
abbrr.com
|
||||
ad-med.cz
|
||||
ad5.eu
|
||||
ad7.biz
|
||||
adb.ug
|
||||
adf.ly
|
||||
adfa.st
|
||||
adfly.fr
|
||||
adfoc.us
|
||||
adjix.com
|
||||
adli.pw
|
||||
admy.link
|
||||
adv.li
|
||||
ajn.me
|
||||
aka.gr
|
||||
al.ly
|
||||
alil.in
|
||||
any.gs
|
||||
aqva.pl
|
||||
ares.tl
|
||||
asso.in
|
||||
atu.ca
|
||||
au.ms
|
||||
ayt.fr
|
||||
azali.fr
|
||||
b00.fr
|
||||
b23.ru
|
||||
b54.in
|
||||
bacn.me
|
||||
baid.us
|
||||
bc.vc
|
||||
bee4.biz
|
||||
bim.im
|
||||
bit.do
|
||||
bit.ly
|
||||
bitly.com
|
||||
bitw.in
|
||||
bkite.com
|
||||
blap.net
|
||||
ble.pl
|
||||
blip.tv
|
||||
bloat.me
|
||||
boi.re
|
||||
bote.me
|
||||
bougn.at
|
||||
br4.in
|
||||
brk.to
|
||||
brzu.net
|
||||
budurl.com
|
||||
buk.me
|
||||
bul.lu
|
||||
bxl.me
|
||||
bzh.me
|
||||
cachor.ro
|
||||
captur.in
|
||||
catchylink.com
|
||||
cbs.so
|
||||
cbug.cc
|
||||
cc.cc
|
||||
ccj.im
|
||||
cf.ly
|
||||
cf2.me
|
||||
cf6.co
|
||||
chilp.it
|
||||
cjb.net
|
||||
clck.ru
|
||||
cli.gs
|
||||
clikk.in
|
||||
cn86.org
|
||||
coinurl.com
|
||||
cort.as
|
||||
couic.fr
|
||||
cr.tl
|
||||
cudder.it
|
||||
cur.lv
|
||||
curl.im
|
||||
cut.pe
|
||||
cut.sk
|
||||
cutt.eu
|
||||
cutt.us
|
||||
cutu.me
|
||||
cuturl.com
|
||||
cybr.fr
|
||||
cyonix.to
|
||||
d75.eu
|
||||
daa.pl
|
||||
dai.ly
|
||||
dd.ma
|
||||
ddp.net
|
||||
decenturl.com
|
||||
dfl8.me
|
||||
dft.ba
|
||||
doiop.com
|
||||
dolp.cc
|
||||
dopice.sk
|
||||
droid.ws
|
||||
dv.gd
|
||||
dy.fi
|
||||
dyo.gs
|
||||
e37.eu
|
||||
ecra.se
|
||||
eepurl.com
|
||||
ely.re
|
||||
emojilink.me
|
||||
erax.cz
|
||||
erw.cz
|
||||
ewerl.com
|
||||
ex9.co
|
||||
ezurl.cc
|
||||
fa.b
|
||||
ff.im
|
||||
fff.re
|
||||
fff.to
|
||||
fff.wf
|
||||
filz.fr
|
||||
fire.to
|
||||
firsturl.de
|
||||
flic.kr
|
||||
fly2.ws
|
||||
fnk.es
|
||||
foe.hn
|
||||
folu.me
|
||||
fon.gs
|
||||
freze.it
|
||||
fur.ly
|
||||
fwd4.me
|
||||
g00.me
|
||||
gg.gg
|
||||
git.io
|
||||
gl.am
|
||||
go.9nl.com
|
||||
go2.me
|
||||
go2cut.com
|
||||
goo.gl
|
||||
goo.lu
|
||||
good.ly
|
||||
goshrink.com
|
||||
grem.io
|
||||
gri.ms
|
||||
guiama.is
|
||||
gurl.es
|
||||
hadej.co
|
||||
hec.su
|
||||
hellotxt.com
|
||||
hex.io
|
||||
hide.my
|
||||
hjkl.fr
|
||||
hops.me
|
||||
hover.com
|
||||
href.in
|
||||
href.li
|
||||
ht.ly
|
||||
htxt.it
|
||||
hugeurl.com
|
||||
hurl.me
|
||||
hurl.ws
|
||||
i-2.co
|
||||
i99.cz
|
||||
icanhaz.com
|
||||
icit.fr
|
||||
ick.li
|
||||
icks.ro
|
||||
idek.net
|
||||
iiiii.in
|
||||
iky.fr
|
||||
ilix.in
|
||||
info.ms
|
||||
inreply.to
|
||||
is.gd
|
||||
isra.li
|
||||
iterasi.net
|
||||
itm.im
|
||||
ity.im
|
||||
ix.sk
|
||||
j.gs
|
||||
j.mp
|
||||
jdem.cz
|
||||
jieb.be
|
||||
jijr.com
|
||||
jmp2.net
|
||||
jp22.net
|
||||
jqw.de
|
||||
kask.us
|
||||
kd2.org
|
||||
kfd.pl
|
||||
kissa.be
|
||||
kl.am
|
||||
klck.me
|
||||
korta.nu
|
||||
kr3w.de
|
||||
krat.si
|
||||
kratsi.cz
|
||||
krod.cz
|
||||
krunchd.com
|
||||
kuc.cz
|
||||
kxb.me
|
||||
l-k.be
|
||||
l.gg
|
||||
lc-s.co
|
||||
lc.cx
|
||||
lcut.in
|
||||
letop10.
|
||||
libero.it
|
||||
lick.my
|
||||
lien.li
|
||||
lien.pl
|
||||
liip.to
|
||||
liltext.com
|
||||
lin.cr
|
||||
lin.io
|
||||
linkbee.com
|
||||
linkbun.ch
|
||||
linkn.co
|
||||
liurl.cn
|
||||
llu.ch
|
||||
ln-s.net
|
||||
ln-s.ru
|
||||
lnk.co
|
||||
lnk.gd
|
||||
lnk.in
|
||||
lnk.ly
|
||||
lnk.sk
|
||||
lnked.in
|
||||
lnks.fr
|
||||
lnky.fr
|
||||
lnp.sn
|
||||
loopt.us
|
||||
lp25.fr
|
||||
lru.jp
|
||||
lt.tl
|
||||
lurl.no
|
||||
lynk.my
|
||||
m1p.fr
|
||||
m3mi.com
|
||||
make.my
|
||||
mcaf.ee
|
||||
mdl29.net
|
||||
metamark.net
|
||||
mic.fr
|
||||
migre.me
|
||||
minilien.com
|
||||
miniurl.com
|
||||
minu.me
|
||||
minurl.fr
|
||||
moourl.com
|
||||
more.sh
|
||||
mut.lu
|
||||
myurl.in
|
||||
ne1.net
|
||||
net.ms
|
||||
net46.net
|
||||
nicou.ch
|
||||
nig.gr
|
||||
niny.io
|
||||
njx.me
|
||||
nn.nf
|
||||
notlong.com
|
||||
nov.io
|
||||
nq.st
|
||||
nsfw.in
|
||||
nxy.in
|
||||
o-x.fr
|
||||
okok.fr
|
||||
om.ly
|
||||
ou.af
|
||||
ou.gd
|
||||
oua.be
|
||||
ouo.io
|
||||
ow.ly
|
||||
p.pw
|
||||
para.pt
|
||||
parky.tv
|
||||
past.is
|
||||
pd.am
|
||||
pdh.co
|
||||
ph.dog
|
||||
ph.ly
|
||||
pic.gd
|
||||
pich.in
|
||||
pin.st
|
||||
ping.fm
|
||||
plots.fr
|
||||
pm.wu.cz
|
||||
pnt.me
|
||||
po.st
|
||||
poprl.com
|
||||
post.ly
|
||||
posted.at
|
||||
ppfr.it
|
||||
ppst.me
|
||||
ppt.cc
|
||||
ppt.li
|
||||
prejit.cz
|
||||
ptab.it
|
||||
ptm.ro
|
||||
pw2.ro
|
||||
py6.ru
|
||||
q.gs
|
||||
qbn.ru
|
||||
qicute.com
|
||||
qqc.co
|
||||
qr.net
|
||||
qrtag.fr
|
||||
qxp.cz
|
||||
qxp.sk
|
||||
rb6.co
|
||||
rb6.me
|
||||
rcknr.io
|
||||
rdz.me
|
||||
redir.ec
|
||||
redir.fr
|
||||
redu.it
|
||||
ref.so
|
||||
reise.lc
|
||||
relink.fr
|
||||
ri.ms
|
||||
rickroll.it
|
||||
riz.cz
|
||||
riz.gd
|
||||
rod.gs
|
||||
roflc.at
|
||||
rsmonkey.com
|
||||
rt.se
|
||||
rt.tc
|
||||
ru.ly
|
||||
rubyurl.com
|
||||
s-url.fr
|
||||
s.id
|
||||
s7y.us
|
||||
safe.mn
|
||||
sagyap.tk
|
||||
sdu.sk
|
||||
seeme.at
|
||||
segue.se
|
||||
sh.st
|
||||
shar.as
|
||||
sharetabs.com
|
||||
shorl.com
|
||||
short.cc
|
||||
short.ie
|
||||
short.nr
|
||||
short.pk
|
||||
short.to
|
||||
shorte.st
|
||||
shortna.me
|
||||
shorturl.com
|
||||
shoturl.us
|
||||
shrinkee.com
|
||||
shrinkster.com
|
||||
shrinkurl.in
|
||||
shrtco.de
|
||||
shrt.in
|
||||
shrt.st
|
||||
shrten.com
|
||||
shrunkin.com
|
||||
shw.me
|
||||
shy.si
|
||||
sicax.net
|
||||
sina.lt
|
||||
sk.gy
|
||||
skr.sk
|
||||
skroc.pl
|
||||
smll.co
|
||||
sn.im
|
||||
sn.vc
|
||||
snipr.com
|
||||
snipurl.com
|
||||
snsw.us
|
||||
snurl.com
|
||||
soo.gd
|
||||
sp2.ro
|
||||
spedr.com
|
||||
spn.sr
|
||||
sptfy.com
|
||||
sq6.ru
|
||||
sqrl.it
|
||||
ssl.gs
|
||||
sturly.com
|
||||
su.pr
|
||||
surl.me
|
||||
sux.cz
|
||||
sy.pe
|
||||
t.cn
|
||||
t.co
|
||||
t.ly
|
||||
ta.gd
|
||||
tabzi.com
|
||||
tau.pe
|
||||
tcrn.ch
|
||||
tdjt.cz
|
||||
thesa.us
|
||||
thinfi.com
|
||||
thrdl.es
|
||||
tin.li
|
||||
tini.cc
|
||||
tiny.cc
|
||||
tiny.lt
|
||||
tiny.ms
|
||||
tiny.pl
|
||||
tiny123.com
|
||||
tinyarro.ws
|
||||
tinytw.it
|
||||
tinyuri.ca
|
||||
tinyurl.com
|
||||
tinyurl.hu
|
||||
tinyvid.io
|
||||
tixsu.com
|
||||
tldr.sk
|
||||
tldrify.com
|
||||
tllg.net
|
||||
tnij.org
|
||||
tny.cz
|
||||
tny.im
|
||||
to.ly
|
||||
togoto.us
|
||||
tohle.de
|
||||
tpmr.com
|
||||
tr.im
|
||||
tr.my
|
||||
tr5.in
|
||||
trck.me
|
||||
trick.ly
|
||||
trkr.ws
|
||||
trunc.it
|
||||
turo.us
|
||||
tweetburner.com
|
||||
twet.fr
|
||||
twi.im
|
||||
twirl.at
|
||||
twit.ac
|
||||
twitterpan.com
|
||||
twitthis.com
|
||||
twiturl.de
|
||||
twlr.me
|
||||
twurl.cc
|
||||
twurl.nl
|
||||
u.mavrev.com
|
||||
u.nu
|
||||
u.to
|
||||
u6e.de
|
||||
ub0.cc
|
||||
uby.es
|
||||
ucam.me
|
||||
ug.cz
|
||||
ulmt.in
|
||||
unlc.us
|
||||
updating.me
|
||||
upzat.com
|
||||
ur1.ca
|
||||
url.co.uk
|
||||
url2.fr
|
||||
url4.eu
|
||||
url5.org
|
||||
urlao.com
|
||||
urlbrief.com
|
||||
urlcover.com
|
||||
urlcut.com
|
||||
urlenco.de
|
||||
urlin.it
|
||||
urlkiss.com
|
||||
urlkr.com
|
||||
urlot.com
|
||||
urlpire.com
|
||||
urls.fr
|
||||
urlx.ie
|
||||
urlx.org
|
||||
urlz.fr
|
||||
urlzen.com
|
||||
urub.us
|
||||
utfg.sk
|
||||
v.gd
|
||||
v.ht
|
||||
v5.gd
|
||||
vaaa.fr
|
||||
valv.im
|
||||
vaza.me
|
||||
vbly.us
|
||||
vd55.com
|
||||
verd.in
|
||||
vgn.me
|
||||
virl.com
|
||||
vl.am
|
||||
vov.li
|
||||
vsll.eu
|
||||
vt802.us
|
||||
vur.me
|
||||
vv.vg
|
||||
w1p.fr
|
||||
w3t.org
|
||||
waa.ai
|
||||
wb1.eu
|
||||
web99.eu
|
||||
wed.li
|
||||
wideo.fr
|
||||
wipi.es
|
||||
wp.me
|
||||
wtc.la
|
||||
wu.cz
|
||||
ww7.fr
|
||||
wwy.me
|
||||
x.co
|
||||
x.nu
|
||||
x.se
|
||||
x10.mx
|
||||
x2c.eu
|
||||
x2c.eumx
|
||||
xaddr.com
|
||||
xav.cc
|
||||
xgd.in
|
||||
xib.me
|
||||
xl8.eu
|
||||
xn--ki8h.ws
|
||||
xn--kn8h.to
|
||||
xn--vi8hl0c.ws
|
||||
xoe.cz
|
||||
xr.com
|
||||
xrl.in
|
||||
xrl.us
|
||||
xt3.me
|
||||
xua.me
|
||||
xub.me
|
||||
xurl.jp
|
||||
xurls.co
|
||||
xzb.cc
|
||||
y2u.be
|
||||
yagoa.fr
|
||||
yagoa.me
|
||||
yau.sh
|
||||
yeca.eu
|
||||
yect.com
|
||||
yep.it
|
||||
yfrog.com
|
||||
yogh.me
|
||||
yon.ir
|
||||
youfap.me
|
||||
ysear.ch
|
||||
yweb.com
|
||||
yyv.co
|
||||
z9.fr
|
||||
zSMS.net
|
||||
zapit.nu
|
||||
zeek.ir
|
||||
zi.ma
|
||||
zi.pe
|
||||
zip.net
|
||||
zipmyurl.com
|
||||
zkr.cz
|
||||
zkrat.me
|
||||
zkrt.cz
|
||||
zoodl.com
|
||||
zpag.es
|
||||
zti.me
|
||||
zxq.net
|
||||
zyva.org
|
||||
zz.gd
|
||||
zzb.bz
|
||||
shorturl.ac
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,51 @@
|
|||
import dns.resolver, requests
|
||||
|
||||
dns.resolver.default_resolver=dns.resolver.Resolver(configure=False)
|
||||
dns.resolver.default_resolver.nameservers=['9.9.9.9', '149.112.112.112']
|
||||
|
||||
headers = {"User-agent": "Mozilla/5.0 (X11; Linux x86_64; rv:98.0) Gecko/20100101 Firefox/98.0"}
|
||||
|
||||
def isValid(url):
|
||||
if url.startswith('http://'):
|
||||
url = url[7:]
|
||||
httpIncluded = True
|
||||
elif url.startswith('https://'):
|
||||
url = url[8:]
|
||||
httpIncluded = True
|
||||
else:
|
||||
httpIncluded = False
|
||||
|
||||
firstSlash = url.find('/')
|
||||
if not firstSlash < 0:
|
||||
url = url[:firstSlash]
|
||||
|
||||
try:
|
||||
dns.resolver.resolve(url)
|
||||
isDnsValid = True
|
||||
except (dns.resolver.NXDOMAIN, dns.resolver.NoAnswer) as error:
|
||||
isDnsValid = False
|
||||
|
||||
return {'httpIncluded': httpIncluded, 'isDnsValid': isDnsValid}
|
||||
|
||||
|
||||
def unshort(short):
|
||||
output = isValid(short)
|
||||
|
||||
if not output['isDnsValid']:
|
||||
return {'unshorted': False, 'isDnsValid': False}
|
||||
|
||||
if not output['httpIncluded']:
|
||||
short = 'http://' + short
|
||||
|
||||
request = requests.get(short, stream=True, headers=headers)
|
||||
hops = [hops.url for hops in request.history]
|
||||
if hops:
|
||||
if hops[-1] != request.url:
|
||||
hops.append(request.url)
|
||||
else:
|
||||
hops.append(request.url)
|
||||
|
||||
|
||||
output = {'hops': {index: hops[index] for index in range(len(hops))}, 'isDnsValid': True}
|
||||
return output
|
||||
|
Loading…
Reference in New Issue