See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 13448|Vastuse: 5

Kuidas teaduslikult haarata punaseid ümbrikke: Aasta lõpus saad rikkaks saada ja kirjutada programmi, mis haarab punaseid ümbrikke.

[Kopeeri link]
Postitatud 13.02.2015 22:44:10 | | | |
0×00 Taust

Millised on need punased ümbrikud? Tema venna poeg Huer ütles: "Raha on peaaegu võrreldav. Vend ja tütar Dao Yun ütlesid: "See pole tuule tõttu nii hea kui mu tädil." "Kõik mõistavad tausta, on uus aasta ja see on päev, mil punased ümbrikud lendavad üle taeva. Juhtus nii, et ma õppisin Pythonit kaks päeva tagasi ja olin rohkem elevil, nii et uurisin ja uurisin Weibo punaste ümbrikute roomamist, miks Weibo punased ümbrikud Alipay punaste ümbrikute asemel, sest ma mõistan ainult veebi, ja kui mul on energiat, võin tulevikus uurida ka whack-a-mole'i algoritmi.
Kuna olen Pythonis algaja, on see programm ka kolmas programm, mille kirjutasin pärast Python'i õppimist, nii et palun ärge torkige isiklikult, kui koodis on auk, fookus on ideel, noh, kui idees on mingit aukku, siis palun ärge uurige seda isiklikult, IE-l on võimalus end vaikimisi brauseriks seada, ma kirjutan ka rämpsuartikli, mis sobib samuti......
Kasutan Python 2.7 versiooni ja öeldakse, et Python 2 ja Python 3 vahel on suur.
0×01 ideed
Ma olin liiga laisk, et seda sõnadesse panna, nii et joonistasin visandi ja kõik peaksid sellest aru saama.
Esiteks, vana reegel: esmalt tutvusta raamatukogu, mille jaoks sa ei tea, et see on kasulik, kuid ilma selleta ei saa:
[mw_shl_code=java,true]import re import urllib import urllib2 import cookielib import base64 import binascii import os import json import sys import cPickle as p import rsa[/mw_shl_code] Seejärel deklareeri mõned teised muutujad, mida hiljem kasutama pead:

[mw_shl_code=java,true]reload(sys)sys.setdefaultencoding('utf-8&') #将字符编码置为utf-8luckyList=[] #红包列表lowest=10 #能忍受红包领奖记录最低为多少[/mw_shl_code]Siin kasutatakse rsa teeki, mis vaikimisi Pythonis ei ole. Pean selle paigaldama :https://pypi.python.org/pypi/rsa/

Pärast allalaadimist käivita setpy.py installi ning siis saame alustada arendustappidega.
0×02 Weibo sisselogimine
Punaste ümbrike haaramine tuleb teha pärast sisselogimist, seega peab olema sisselogimisfunktsioon, sisselogimine ei ole võti, võti on küpsiste säilitamine, siin on vajalik cookielibi koostöö.
[mw_shl_code=java,true]cj = cookielib. CookieJar()avaja = urllib2.build_opener(urllib2. HTTPCookieProcessor(cj))urllib2.install_opener(avaja)[/mw_shl_code] Nii haldavad kõik võrgutoimingud avajaga küpsiste olekut, kuigi ma ei tea sellest palju, aga see tundub imeline.
Järgmisena peame kapseldama kaks moodulit: üks on andmete kogumise moodul, mida kasutatakse lihtsalt andmete SAAMISEKS, ja teine andmete postitamiseks.
[mw_shl_code=java,true]def getData(url) : try: req = urllib2. Request(url) result = opener.open(req) text = result.read() text=text.decode("utf-8").encode("gbk",'ignore') tagastab teksti peale Erandi, e:                print u' request exception, url: '+url print e def postData(url,data,header) : try: data = urllib.urlencode(data) req = urllib2. Request(url,data,header) tulemus = opener.open(req) text = result.read() tagastab teksti välja arvatud Exception, e: print u'Request exception, url: '+url[/mw_shl_code] Nende kahe mooduliga saame andmeid SAADA ja POSTITADA, millest üks põhjus, miks getData dekodeeritakse ja siis kodeeritakse, on see, et Win7 puhul segasin silumisel väljundit, seega lisasin ka kodeerimisprotsessi, need pole oluline, allpool olev sisselogimisfunktsioon on Weibo sisselogimise tuum.
[mw_shl_code=java,true]def login(nick, pwd): print u"----------login----------" print "----------......----------" prelogin_url= 'http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=%s&rsakt=mod&checkpin=1&client=ssologin.js(v1.4.15)&_= 1400822309846' % nick preLogin = getData(prelogin_url) servertime = re.findall('"servertime":(.+?),' , preLogin)[0] pubkey = re.findall('"pubkey":"(.+?)",' , preLogin)[0] rsakv = re.findall('"rsakv":"(.+?)",' , preLogin)[0] nonce = re.findall('"nonce":"(.+?)",' , preLogin)[0] #print bytearray('xxxx','utf-8') su = base64.b64encode(urllib.quote(nick))        rsaPublickey= int(pubkey,16) key = rsa. PublicKey(rsaPublickey,65537) message = str(servertime) +'\t' + str(nonce) + '\n' + str(pwd) sp = binascii.b2a_hex(rsa.encrypt(message,key)) header = {'User-Agent' : 'Mozilla/5.0 (ühilduv; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)'} param = { 'entry': 'weibo', 'gateway': '1', 'from': '', 'savestate': '7', 'userticket': '1',                'ssosimplelogin': '1', 'vsnf': '1', 'vsnval': '', 'su': su, 'service': 'miniblog', 'servertime': servertime, 'nonce': nonce, 'pwencode': 'rsa2', 'sp': sp, 'encoding': 'UTF-8', 'URL': 'http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack', 'returntype': 'META', 'rsakv' : rsakv, } s = postData('http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.15)',param,header) try: urll = re.findall("locatio remove n.replace\(\'(.+?) \'\); " , s)[0] login=getData(urll) print u"--------- Sisselogimine õnnestus! ------- "print" ----------......---------- "except Exception, e: print u" --------- sisselogimine ebaõnnestus! -------" print "----------......----------" exit(0)[/mw_shl_code]Selle parameetrid ja krüpteerimisalgoritmid on kopeeritud internetist, ma ei saa sellest hästi aru, ilmselt tuleb esmalt taotleda ajatemplit ja avalikku võtit, siis RSA krüpteerida ja lõpuks töödelda protsess ning esitada see Sina sisselogimisliidesesse, pärast edukat sisselogimist Sinast tagastatakse Weibo aadress, pead selle taotlema, et sisselogimise staatus saaks täielikult kehtida, Pärast edukat sisselogimist kannavad järgnevad päringud praeguse kasutaja küpsise.
0×03 Määratud punase ümbriku joonistus
Pärast edukat sisselogimist Weibosse ei jõua ära oodata, et leida punane ümbrik, et seda esmalt brauseris proovida. Lõpuks leidsin lehe, millel oli punane ümbriku nupp, F12 kutsus siluri, et näha, mida andmepakett soovib.

Näed, et päringu aadress on http://huodong.weibo.com/aj_hongbao/getlucky, on kaks peamist parameetrit: üks on ouid, ehk punane ümbriku id, mis on näha URL-is, teine jagamisparameeter määrab, kas seda Weibole jagada, ja on _t, milleks see on.
Teoreetiliselt saad punaste ümbriste väljavõtmise lõpetada, saates sellele URL-ile kolm parameetrit, kuid kui parameetrid tegelikult esitad, siis server tagastab sulle imekombel sellise stringi:
[mw_shl_code=java, tõeline] {"code":303403,"msg":"Vabandust, sul pole luba sellele lehele ligi pääseda","data":[]}[/mw_shl_code] Ära praegu paanitse, minu paljude aastate veebiarenduse kogemuse põhjal peaks teise osapoole programmeerija hindama viitajat, väga lihtne, kopeeri kõik varasema päringu päised.
[mw_shl_code=java,true]def getLucky(id): #抽奖程序 print u"--- draw punane ümbrik aadressilt:"+str(id)+"---" print "----------......----------" if checkValue(id)==False: #不符合条件, see on funktsioon hiljem tagastatud        luckyUrl="http://huodong.weibo.com/aj_hongbao/getlucky" param={ 'ouid':id, 'share':0, '_t':0 } header= {                'cache-control':'no-cache', 'content-type':'application/x-www-form-urlencoded', 'origin':'http://huodong.weibo.com', 'pragma':'no-cache', 'referer': 'http://huodong.weibo.com/hongbao/'+str(id), 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, nagu Gecko) Chrome/33.0.1750.146 BIDUBrowser/6.x Safari/537.36', 'X-Requested-With':'XMLHttpRequest' } res = postData(luckyUrl,param, header)[/mw_shl_code] Selles olukorras pole teoorias probleemi, kuid tegelikult probleemi pole. Pärast loteriitegevuse lõpetamist peame hindama staatust ja tagastatud resolutsioon on json-string, kus kood on 100000 on edukas, ja kui see on 90114, on see tänase loterii ülemine piir ning ka teised väärtused on ebaõnnestunud, seega:
[mw_shl_code=java,true]hbRes=json.loads(res)if hbRes["code"]=='901114': #今天红包已经抢完 print u"--------- on jõudnud ülemise piirini---------" print "----------......----------" log('lucky', str(id)+'---'+str(hbRes["code"])+'---'+hbRes["data"]["title"]) exit(0)elif hbRes["code"]=='100000':#成功 print u"---------Soovides sulle edu---------" print "----------......----------"        log('success',str(id)+'---'+res) exit(0) if hbRes["data"] ja hbRes["data"]["title"]: print hbRes["data"]["title"] print "----------......----------" log('lucky', str(id)+'---'+str(hbRes["code"])+'---'+hbRes["data"]["title"])else: print u"---------Request error---------" print "----------......----------" log('lucky', str(id)+'---'+res)[/mw_shl_code], kus logi on samuti funktsioon, mida kohandan ja mida kasutatakse logide salvestamiseks:
[mw_shl_code=java,true]def log(type,text): fp = open(type+'.txt','a') fp.write(text) fp.write('\r\n') fp.close()[/mw_shl_code]





Eelmine:Märkused PHP üleslaadimise maksimaalsete piirangute kohta
Järgmine:Memcache DLL laienduse allalaadimine PHP5.2, 5.3, 5.4, 5.5 jaoks
 Üürileandja| Postitatud 13.02.2015 22:46:37 |
0×04 Rooma punaste ümbrikute nimekirja
Pärast edukat ühe punase ümbriku kogumise tegevuse testimist on see meie programmi põhiline suur liigutusmoodul – punase ümbriku nimekirja roomamine, peaks olema palju meetodeid ja sissepääse, näiteks erinevad Weibo otsingumärksõnad jne, kuid mina kasutan siin kõige lihtsamat meetodit: punase ümbriku nimekirja roomamist.
Avalehel (http://huodong.weibo.com/hongbao punase ümbriku tegevusest, mitmete punktide kaudu saab kõike jälgida, kuigi nimekiri on palju seotud, saab selle kokku võtta kahte kategooriasse (v.a kõige rikkalikum punane ümbrik): teema ja edetabel.
Jätkates F12 kutsumist, analüüsi mõlema lehe vormingut, alustades aktuaalsete vormide nimekirjast, näiteks: http://huodong.weibo.com/hongbao/special_quyu
Näete, et punase ümbriku info on div'is nimega info_wrap, seega peame aktiveerima ainult selle lehe lähtekoodi, võtma kõik infowrap'id ja töötlema seda, et saada selle lehe punase ümbriku nimekiri, siin peame kasutama mõningaid tavalisi koode:
[mw_shl_code=java,true]def getThemeList(url,p):#主题红包 print u"--------- "+str(p)+"page---------" print "----------......----------" html=getData(url+'?p='+str(p)) pWrap= re.compile(r'<div class="info_wrap">(.+?) <span class="rob_txt"></span>',re. DOTALL) #h Hangi info_wrap tavaline pInfo=re.compile(r'.+<em class="num">(.+)</em>.+<em class="num">(.+)</em>.+<em class="num">(.+).</em>.+href="(.+)" class="btn"',re. DOTALL) #获取红包信息 List=pWrap.findall(html,re. DOTALL) n=len(List) if n==0: return i jaoks vahemikus(n): #traverse all info_wrap div s=pInfo.match(List) #取得红包信息 info=list(s.groups(0))                info[0]=float(info[0].replace('\xcd\xf2','0000')) #现金,ten->0000 try: info[1]=float(info[1].replace('\xcd\xf2','0000')) #礼品价值 välja arvatud Exception, e:                        info[1]=float(info[1].replace('\xd2\xda','00000000')) #礼品价值 info[2]=float(info[2].replace('\xcd\xf2','0000')) #已发送 if info[2]==0: info[2]=1 #防止除数为0 if info[1]==0: info[1]=1 #防止除数为0 info.append(info[0]/(info[2]+info[1])) #红包价值, sularaha/(nõutute arv + auhinna väärtus) # if info[0]/(info[2]+info[1])>100:                # print url luckyList.append(info) if 'class="page"' html:#存在下一页 p=p+1 getThemeList(url,p) #递归调用自己爬取下一页[/mw_shl_code]On nii raske öelda, et see on nii raske, ja nende kahe lause kirjutamine võttis kaua aega. Infos on ka info lisas [4], mis on minu algoritm punaste ümbrikute väärtuse umbkaudseks hindamiseks, miks seda teha, sest punaseid ümbrikuid on palju, aga me saame joonistada vaid neli korda, kottide meres peame leidma kõige väärtuslikumad punased ümbrikud ja siis neid välja tooma, siin on kolm andmet: rahaline väärtus, kingituse väärtus ja saajate arv, ilmselgelt, kui raha on väike ja inimeste arv, kes saavad palju inimesi või auhinna väärtus on väga kõrge (mõned on isegi hullud sadade miljonite ühikutes), Siis pole seda mõtet haarata, nii et hoidsin kaua tagasi ja lõpuks mõtlesin välja algoritmi, mis mõõdab punaste ümbrikute kaalu: punase ümbriku väärtus = sularaha / (saajate arv + auhinna väärtus).
Edetabeli lehe põhimõte on sama: leia võtmemärgid ja sobita neid regulaarselt.
[mw_shl_code=java,true]def getTopList(url,daily,p):#排行榜红包 print u"--------- "+str(p)+"page---------" print "----------......----------" html=getData(url+'?daily='+str(daily)+'& p='+str(p)) pWrap=re.compile(r'<div class="list_info">(.+?) <span class="list_btn"></span>',re. DOTALL) #h Hangi list_info tavaline pInfo=re.compile(r'.+<em class="num">(.+)</em>.+<em class="num">(.+)</em>.+<em class="num">(.+).</em>.+href="(.+)" class="btn rob_btn"',re. DOTALL) #获取红包信息 List=pWrap.findall(html,re. DOTALL) n=len(List) if n==0: tagasta i vahemikus(n): #Iterate läbi kogu info_wrap div s=pInfo.match(List) #取得红包信息 topinfo=list(s.groups(0))                info=list(topinfo) info[0]=topinfo[1].replace('\xd4\xaa','') #元->'' info[0]=float(info[0].replace('\xcd\xf2','0000')) #现金,10,>0000 info[1]=topinfo[2]. replace('\xd4\xaa','') #元->'' try: info[1]=float(info[1].replace('\xcd\xf2','0000')) #礼品价值 välja arvatud Exception, e:                        info[1]=float(info[1].replace('\xd2\xda','0000000')) #礼品价值 info[2]=topinfo[0].replace('\xb8\xf6','') #个->'' info[2]=float(info[2].replace('\xcd\xf2','0000')) #已发送                if info[2]==0: info[2]=1 #防止除数为0 if info[1]==0: info[1]=1 #防止除数为0 info.append(info[0]/(info[2]+info[1])) #红包价值, sularaha/(saajate arv + kingituse väärtus)                # if info[0]/(info[2]+info[1])>100: # print url luckyList.append(info) if 'class="page"' html:#存在下一页 p=p+1                getTopList(url, daily,p) #递归调用自己爬取下一页[/mw_shl_code]Nüüd saame edukalt kahe erilehekülje nimekirja indekseerida ja järgmine samm on saada nimekirjade nimekiri, st kõigi nende aadresside kogum, ja seejärel haarata need ükshaaval:
[mw_shl_code=java,true]def getList(): print u"---------Find target---------" print "----------......----------" themeUrl={ #主题列表 'theme':'http://huodong.weibo.com/hongbao/theme',                 'pinpai':'http://huodong.weibo.com/hongbao/special_pinpai', 'daka':'http://huodong.weibo.com/hongbao/special_daka', 'youxuan':'http://huodong.weibo. com/hongbao/special_youxuan', 'qiye':'http://huodong.weibo.com/hongbao/special_qiye', 'quyu':'http://huodong.weibo.com/hongbao/special_quyu', 'meiti':'http: huodong.weibo.com/hongbao/special_meiti', 'hezuo':'http://huodong.weibo.com/hongbao/special_hezuo' } topUrl={ #排行榜列表 'mostmoney':'http://huodong.weibo. com/hongbao/top_mostmoney', 'mostsend':'http://huodong.weibo.com/hongbao/top_mostsend', 'mostsenddaka':'http://huodong.weibo.com/hongbao/top_mostsenddaka',                'mostsendpartner':'http://huodong.weibo.com/hongbao/top_mostsendpartner', 'cate':'http://huodong.weibo.com/hongbao/cate?type=', 'clothes':'http://huodong.weibo.com/ hongbao/cate?type=clothes', 'beauty':'http://huodong.weibo.com/hongbao/cate?type=beauty', 'fast':'http://huodong.weibo.com/hongbao/cate?type=fast', 'life':'http: huodong.weibo.com/hongbao/cate?type=life', 'digitaalne':'http://huodong.weibo.com/hongbao/cate?type=digital', 'other':'http://huodong.weibo.com/hongbao/cate?type=other'                } for (theme,url) in themeUrl.items(): print "----------"+theme+"----------" print url print "----------......----------"                getThemeList(url,1) jaoks (top,url) topUrl.items(): print "----------"+top+"----------" print url print "----------......----------"                getTopList(url,0,1) getTopList(url,1,1)[/mw_shl_code]
 Üürileandja| Postitatud 13.02.2015 22:47:13 |
0×05 Kohtunik punaste ümbrikute kättesaadavuse kohta
See on suhteliselt lihtne: esmalt otsi lähtekoodist märksõnu, et näha, kas on punane ümbriku haaramisnupp, ja seejärel mine kollektsiooni järjestusesse, et näha, mis on kõrgeim tulemus, kui kõige rohkem saab vaid paar dollarit, siis head aega......
Kollektsioonikirje vaatamiseks on aadress http://huodong.weibo.com/aj_hongbao/detailmore?page=1&type=2&_t=0&__rnd=1423744829265&uid=Red Envelope ID

[mw_shl_code=java,true]def checkValue(id): infoUrl='http://huodong.weibo.com/hongbao/'+str(id) html=getData(infoUrl) if 'action-type="lottery"' html-is või True: #存在抢红包按钮                logUrl="http://huodong.weibo.com/aj_hongbao/detailmore?page=1&type=2&_t=0&__rnd=1423744829265&uid="+id #查看排行榜数据 param={} header= { 'Cache-Control': 'no-cache', 'Content-Type':'application/x-www-form-urlencoded', 'Pragma':'no-cache', 'Referer':'http://huodong.weibo.com/hongbao/detail? uid='+str(id), 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, nagu Gecko) Chrome/33.0.1750.146 BIDUBrowser/6.x Safari/537.36', 'X-Requested-With':'XMLHttpRequest' } res = postData(logUrl,param,header) pMoney=re.compile(r'<span class="money">(\d+?). +?) \xd4\xaa</span>', re. DOTALL) #h Võta kõik list_info regulaarsed luckyLog=pMoney.findall(html,re. DOTALL) if len(luckyLog)==0: maxMoney=0 else: maxMoney=float(luckyLog[0]) if maxMoney <madalaim: #记录中最大红包小于设定值 tagasta False else: print u"--------- käsi aeglustub---------" print "----------......----------" tagasta false        return True[/mw_shl_code]0×06 Lõpetamine
Peamised moodulid on juba paigas ja nüüd tuleb kõik sammud jadamisi ühendada:
[mw_shl_code=java,true]def start(kasutajanimi,parool,low,fromFile): gl=False low=low login(kasutajanimi, parool) if fromfile=='y': if os.path.exists('luckyList.txt'):                         try: f = file('luckyList.txt') newList = [] newList = p.load(f)                                print u'--------- load list---------' print "----------......----------" välja arvatud Exception, e: print u' ei suutnud kohalikku nimekirja parsida, roomates veebilehte. ' print "----------......----------" gl=True else: print u' ei eksisteeri lokaalselt, luckyList.txt veebilehtede indekseerimine. ' print "----------......----------" gl=True if gl==True: getList() operaatorist import itemgetter                newList=sorted(luckyList, key=itemgetter(4),reverse=True) f = file('luckyList.txt', 'w') p.dump(newList, f) #把抓到的列表存到文件里, nii et järgmine kord ei pea f.close() õnnelikuks jääma newList: kui mitte 'http://huodong.weibo.com' õnnelik[3]: #不是红包 jätka prindi lucky[3] id=re.findall(r'(\w*[0-9]+)\w*',lucky[3])                getLucky(id[0])[/mw_shl_code] Kuna punase ümbriku nimekirja korduvalt roomamine iga testimise ajal on väga tülikas, lisasin lõigu, et kogu loend failikoodi sisestada, et saaksid lokaalset nimekirja lugeda ja tulevikus punase ümbriku haarata.
[mw_shl_code=java,true]if __name__ == "__main__": print u"------------------ Weibo Red Envelope Assistant------------------" print "---------------------v0.0.1---------------------" print u"------------- by @***----------------" print "-------------------------------------------------" proovi: uname=raw_input(u"Palun sisesta oma Weibo konto: ".decode('utf-8').encode('gbk'))                pwd=raw_input(u"Palun sisesta oma Weibo parool: ".decode('utf-8').encode('gbk')) low=int(raw_input(u"Punane ümbrik, et saada maksimaalne sularaha kui n: ".decode('utf-8').encode('gbk'))))))fromfile=raw_input(u) Kas kasutada punast ümbriku nimekirja luckyList.txt: (y/n) ".decode('utf-8').encode('gbk')) välja arvatud Exception, e: print u" parameetri viga" print "----------......----------" print e                exit(0) print u"--------- program start---------" print "----------......----------" start(uname,pwd,low, fromfile) print u" --------- program end--------- "print "----------...... ----------" os.system('pause')[/mw_shl_code]
0×07 Lähme!

0×07 kokkuvõte
Põhiline roomaja skelett on põhimõtteliselt valmis, tegelikult on sellel roomajal veel palju ruumi mängimiseks paljudes detailides, näiteks muutes seda partiisisselogimise toetamiseks, näiteks punase ümbriku väärtuse algoritmi optimeerimiseks, koodil endal peaks olema palju kohti optimeerimiseks, aga minu võimekusega arvan, et suudan selle saavutada.
Lõpuks nägid kõik programmi tulemust, ma kirjutasin sadu koodiridu, tuhandeid sõnu artikleid ja kõik, mille nimel ma vaeva nägin, oli lihtsalt komplekt kahevärvilisi palle, Nima pit dad, kuidas see võiks olla kahevärviline pall!! (Jutustaja: Mida rohkem autor rääkis, seda elevil ta muutus, ta isegi nuttis, ja inimesed tema ümber veensid: Vend, see pole nii, kas see pole lihtsalt Weibo punane ümbrik, eile olid mu käed valusad ja ma ei raputanud välja WeChati punast ümbrikku.) )

Postitatud 14.02.2015 07:14:33 |
Kui palju raha sa Loulou's said?
Postitatud 02.03.2016 13:48:27 |
Näeb nii pikk välja
Postitatud 07.03.2016 12:51:02 |
Ma ei tea, kas see on tõsine
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com