Aşağıdaki script forumda konusu olan "facebook browser" adlı scriptin biraz değiştirilmiş hali. Facebook browser da sayfanın verilerini alıp gösteriyordu benim yapmaya çalıştığım ise kendi oluşturduğum server dan direk linki verilen dosyayı indirmek.
Ama Python da Threading işlemini henüz yapamadığım için hızı çok düşük.
Burada "req= br.open(face+django+"faceden/?veri="+base64.b64encode(url)+","+base64.b64encode(str(aralik))).read()" bu işlemi thread ile çoğaltırsam sanırım hızı artacak.
Ama Python da Threading işlemini henüz yapamadığım için hızı çok düşük.
PHP Kod:
#-*-coding:utf8;-*-
from threading import Thread
from Queue import Queue
import HTMLParser
import urllib2,requests,base64,zlib
import re,sys,urllib,time,os
import platform,subprocess
def yaz(parametre, time_sleep = 0.02):
for i in parametre:
time.sleep(time_sleep)
sys.stdout.write(i)
sys.stdout.flush()
if platform.platform().startswith("Linux"):
try:
import mechanize
except:
yaz("Gerekli modüller yükleniyor...\n")
arg="pip install mechanize"
os.system(sys.executable+" "+sys.prefix+"/bin/"+arg)
os.execv(sys.executable, ['python'] + sys.argv)
import mechanize
try:
from bs4 import BeautifulSoup
except:
arg="pip install bs4"
os.system(sys.executable+" "+sys.prefix+"/bin/"+arg)
os.execv(sys.executable, ['python'] + sys.argv)
from bs4 import BeautifulSoup
else:
try:
import mechanize
except:
yaz("Gerekli modüller yükleniyor...\n")
subprocess.call(["python","-m","pip","install","mechanize"])
import mechanize
try:
from bs4 import BeautifulSoup
except:
subprocess.call(["python","-m","pip","install","bs4"])
from bs4 import BeautifulSoup
h = HTMLParser.HTMLParser()
br = mechanize.Browser()
br.set_handle_robots(False)
br.addheaders = [('User-agent', 'Mozilla/5.0 (compatible; Konqueror/3; Linux)')]
face='https://developers.facebook.com/tools/debug/echo/?q='
vps='http://18.197.133.16/'
django='http://18.197.133.16:8000/'
y='Facebook File downloader'
a='http://www.qpython.club'
c='by Ethnic'
des= '#'*60
yaz(des+'\n\n- '+y+'\n\n- '+a+'\n\n- '+c+'\n\n'+des+'\n',0.006)
def parcala():
url=raw_input("\nlink gir:")
info = br.open(face+django+"info/?info="+base64.b64encode(url)).read()
try:
info = info.split("bas--")[1].split("--son")[0]
a=500000 #in byte
value = info.split("boyut=")[1].split("--")[0]
typefile = info.split("type=")[1].split("--")[0]
etag = info.split("e-tag="")[1].split(""--")[0]
toplam_part = info.split("toplam_part=")[1].split("--")[0]
numsplits = int(value) / int(a)
yaz("\n\nboyut="+str(int(value)/int(1024*1024))+"MB"+"\n"+"type="+str(typefile)+"\n"+"e-tag="+str(etag)+"\n"+"toplam_part="+str(numsplits)+"\n")
except:
yaz("direk indirme linki degil!")
quit()
lst = []
for i in range(numsplits):
if i == 0:
lst.append('%s-%s' % (int(i), int(round(1 + int(i) * int(value)/(numsplits*1.0) + int(value)/(numsplits*1.0)-1, 0))))
else:
lst.append('%s-%s' % (int(round(1 + i * int(value)/(numsplits*1.0),0)), int(round(1 + int(i) * int(value)/(numsplits*1.0) + int(value)/(numsplits*1.0)-1, 0))))
dosyaismi=raw_input("isim:")
dosya=open(dosyaismi,"w+b")
sira=0
for aralik in lst:
req= br.open(face+django+"faceden/?veri="+base64.b64encode(url)+","+base64.b64encode(str(aralik))).read()
#time.sleep(2)
base = req.split("bas--")[1].split("--son")[0]
dosya.write(zlib.decompress(base64.b64decode(base)))
yaz("\n"+str(sira)+"/"+str(toplam_part)+" part bitti",0.001)
sira+=1
dosya.close
yaz("indirme bitti")
return lst
if platform.platform().startswith("Linux"):
try:
mail=open("/sdcard/mail.txt")
mail=mail.read()
except:
mail=open("/sdcard/mail.txt","w")
mail=mail.write(raw_input("\nFacebook email : "))
mail=open("/sdcard/mail.txt")
mail=mail.read()
try:
pasw=open("/sdcard/pasw.txt")
pasw=pasw.read()
except:
pasw=open("/sdcard/pasw.txt","w")
pasw=pasw.write(raw_input("\nFacebook şifre : "))
pasw=open("/sdcard/pasw.txt")
pasw=pasw.read()
else:
try:
mail=open("mail.txt")
mail=mail.read()
except:
mail=open("mail.txt","w")
mail=mail.write(raw_input("\nFacebook email : "))
mail=open("mail.txt")
mail=mail.read()
try:
pasw=open("pasw.txt")
pasw=pasw.read()
except:
pasw=open("pasw.txt","w")
pasw=pasw.write(raw_input("\nFacebook şifre : "))
pasw=open("pasw.txt")
pasw=pasw.read()
try:
yaz('\nFacebook yükleniyor...')
op=br.open("https://facebook.com")
username=mail
password=pasw
yaz( '\n\nKullanici verileri isleniyor...')
br.select_form(nr=0)
br.form["email"]=username
br.form["pass"]=password
br.method="POST"
br.submit()
yaz( "\n\nFacebook'a giriş yapılıyor...")
text=br.open("https://facebook.com").read()
except:
yaz('\nBir hata oluştu! Tekrar deneyin.\n')
quit()
if(text.find("home_icon",0,len(text))!=-1):
yaz( '\n\nGiriş yapıldı.')
else:
yaz( '\n\nGiriş Yapılamadı! Lütfen Giriş bilgilerinizi kontrol ediniz\n')
if platform.platform().startswith("Linux"):
try:
os.remove("/sdcard/mail.txt")
os.remove("/sdcard/pasw.txt")
quit()
except:
pass
quit()
else:
try:
os.remove("mail.txt")
os.remove("pasw.txt")
quit()
except:
pass
quit()
parcala()
Burada "req= br.open(face+django+"faceden/?veri="+base64.b64encode(url)+","+base64.b64encode(str(aralik))).read()" bu işlemi thread ile çoğaltırsam sanırım hızı artacak.