天弄到一套qq空間自動(dòng)點(diǎn)贊軟件,相信不少加了我QQ好友的朋友都已經(jīng)被我騷擾點(diǎn)贊了,這是套QQ空間營(yíng)銷的好軟件,有的朋友不知道使用起來(lái)有什么作用,有什么效果。其實(shí)很簡(jiǎn)單。
第一,你點(diǎn)贊別人,有可能會(huì)引起別人的關(guān)注與回訪,從而你空間里推廣的東西就可以得到展示。
第二、如果你加了行業(yè)里某個(gè)大神,他發(fā)的說(shuō)說(shuō)你點(diǎn)贊和評(píng)價(jià)了,就會(huì)在他的空間那里留下痕跡,他的粉絲就有可能看到你,就有可能移步到你的空間,從而你空間推廣的東西就得到了展示。
這套軟件可以秒贊秒評(píng)。不不博客昨天測(cè)試了,效果還不錯(cuò),有電腦版和安卓版兩種。
但可惜對(duì)于秒贊對(duì)象不能分組進(jìn)行,這就會(huì)得罪一批人。
比如有人說(shuō):我今天手機(jī)掉了。
結(jié)果你馬上給個(gè)秒贊!
好吧,估計(jì)當(dāng)事人也無(wú)語(yǔ)了,殺你的心都有了。
作者不不博客分享
來(lái)源:朱海濤自媒體(微信/QQ號(hào):81433982,公眾號(hào)zhuhaitao51,關(guān)注公眾演說(shuō)群,免費(fèi)分享干貨)
019年了不知道現(xiàn)在還有多少人玩QQ,好像玩QQ的都是些年輕人吧,一般從校園出來(lái)的小伙伴們,都紛紛用上了微信,QQ也是多年不上。
但是我相信很多小伙伴和我一樣,還是很懷念使用QQ的那些單純的日子,所以這篇教程寫給這些還在使用QQ的小伙伴們。
OK,不多說(shuō),直接給大家看效果圖。這是今天我的結(jié)果。
首先,這個(gè)教程也要用到我們的捷徑規(guī)則(真的是好用,不知道的小伙伴在后臺(tái)回復(fù)“教程”就可以看到捷徑的使用教程了。)
規(guī)則的獲取方法:
在我們【樂(lè)曉科技】公眾號(hào)發(fā)送:【QQ贊】即可獲取這條規(guī)則。選擇在自帶Safari瀏覽器中打開,即可開始使用。
不會(huì)捷徑使用的小伙伴們?cè)诤笈_(tái)發(fā)送【教程】即可獲得捷徑APP的使用教程。
重中之重:打開贊設(shè)置→允許陌生人贊我!
最后
雖然說(shuō)標(biāo)題是一天一次,一次1000,但是使用的小伙伴還是很多的,所以沒事都會(huì)失效幾個(gè)接口,所以有的時(shí)候只有幾百個(gè),樂(lè)哥會(huì)根據(jù)大家的使用情況來(lái)更新接口的,今天一大早起來(lái)八個(gè)接口失效了,已經(jīng)更新了。如果以后使用的小伙伴不多的話,就不更新接口了。大家隨緣使用吧,且用且珍惜。
私信小編01即可獲取大量Python學(xué)習(xí)資料
因?yàn)槲抑車男』锇閭兲焯旄艺f(shuō)的最多的一句話就是:空間第一條點(diǎn)贊。
所以說(shuō)我還不如直接做一個(gè)自動(dòng)點(diǎn)贊的代碼呢,免得天天催我點(diǎn)贊。
首先既然是對(duì) QQ空間的一系列操作,自然是先解決登陸方面,在這篇文章里面我就不過(guò)多介紹了,因?yàn)槲疑蠋灼谥皩?duì)QQ空間已經(jīng)做了一定的介紹了。直接放出鏈接就好。歡迎看博主以前的文章
def search_cookie():
qq_number=input('請(qǐng)輸入qq號(hào):')
if not __import__('os').path.exists('cookie_dict.txt'):
get_cookie_json(qq_number)
with open('cookie_dict.txt', 'r') as f:
cookie=json.load(f)
return True
def get_cookie_json(qq_number):
password=__import__('getpass').getpass('請(qǐng)輸入密碼:')
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
login_url='https://i.qq.com/'
chrome_options=Options()
chrome_options.add_argument('--headless')
driver=webdriver.Chrome(options=chrome_options)
driver.get(login_url)
driver.switch_to_frame('login_frame')
driver.find_element_by_xpath('//*[@id="switcher_plogin"]').click()
time.sleep(1)
driver.find_element_by_xpath('//*[@id="u"]').send_keys(qq_number)
driver.find_element_by_xpath('//*[@id="p"]').send_keys(password)
time.sleep(1)
driver.find_element_by_xpath('//*[@id="login_button"]').click()
time.sleep(1)
cookie_list=driver.get_cookies()
cookie_dict={}
for cookie in cookie_list:
if 'name' in cookie and 'value' in cookie:
cookie_dict[cookie['name']]=cookie['value']
with open('cookie_dict.txt', 'w') as f:
json.dump(cookie_dict, f)
return True
def get_g_tk():
p_skey=self.cookie['p_skey']
h=5381
for i in p_skey:
h +=(h << 5) + ord(i)
g_tk=h & 2147483647
當(dāng)我們拿到cookie信息和g_tk這個(gè)參數(shù)之后,繼續(xù)去尋找空間好友動(dòng)態(tài)的XML在何處。
首先點(diǎn)到XML位置一個(gè)個(gè)查找,發(fā)現(xiàn)有一個(gè)feeds3_html_more很像,點(diǎn)進(jìn)去發(fā)現(xiàn)的確是我們要找的url鏈接。
這個(gè)鏈接所需要的參數(shù)有很多,在這里列舉出來(lái)
這些參數(shù)中類似于可變參數(shù)的一共有五個(gè)。
def get_space():
your_url='https://user.qzone.qq.com/' + str(qq_number)
html=requests.get(your_url,headers=headers,cookies=cookie)
if html.status_code==200:
qzonetoken=re.findall('window.g_qzonetoken=(.*?);',html.text,re.S)[1].split('"')[1]
return True
'rd': '0.9311604844249088',
'windowId': '0.51158950324406',
'usertime': str(round(time.time() * 1000)),
def get_g_tk():
p_skey=self.cookie['p_skey']
h=5381
for i in p_skey:
h +=(h << 5) + ord(i)
g_tk=h & 2147483647
我們拿到XML以及各個(gè)參數(shù)后,即可訪問(wèn)該網(wǎng)頁(yè)獲取其返回值了。
但是這個(gè)返回與其他的有一些不同的是,它不僅僅是個(gè)json文件,我們無(wú)法獲取后直接轉(zhuǎn)換成字典格式去給我們使用,這就很麻煩。
我們獲取字符串后,首先先將前后不一致的都切片扔掉,之后經(jīng)過(guò)一系列處理后發(fā)現(xiàn),我們很難將這個(gè)看似像json格式的字符串轉(zhuǎn)換成字典。
在這里我繼續(xù)介紹一個(gè)第三方庫(kù)demjson。
demjson 可以解決不正常的json格式數(shù)據(jù)
demjson的使用方法很簡(jiǎn)單。
encode將 Python 對(duì)象編碼成 JSON 字符串decode將已編碼的 JSON 字符串解碼為 Python 對(duì)象
# 例子
# -*- coding: utf-8 -*-
import demjson
js_json="{x:1, y:2, z:3}"
py_json1="{'x':1, 'y':2, 'z':3}"
py_json2='{"x":1, "y":2, "z":3}'
data=demjson.decode(js_json)
print(data)
# {'y': 2, 'x': 1, 'z': 3}
data=demjson.decode(py_json1)
print(data)
# {'y': 2, 'x': 1, 'z': 3}
data=demjson.decode(py_json2)
print(data)
# {'y': 2, 'x': 1, 'z': 3}
我們使用demjson直接將該字符串轉(zhuǎn)換為耳熟能詳?shù)淖值涓袷剑崛∑渲械膁ata的data,即為前八條動(dòng)態(tài)的每個(gè)參數(shù),但我們這里只要第一個(gè)說(shuō)說(shuō)的動(dòng)態(tài)信息。
text=html.text[10:-2].replace(" ", "").replace('\n','')
json_list=demjson.decode(text)['data']['data']
qq_spaces=json_list[0]
我們拿到其信息后,先提取一些我們比較想知道的東西,比如名字、QQ號(hào)、發(fā)布時(shí)間、所獲贊數(shù)、說(shuō)說(shuō)內(nèi)容、說(shuō)說(shuō)地址等等結(jié)果。
在 qq_spaces 參數(shù)中我們發(fā)現(xiàn)里面有一個(gè)很長(zhǎng)也很特殊的一個(gè)結(jié)果是 html 結(jié)果,這個(gè)結(jié)果里面很長(zhǎng),簡(jiǎn)單來(lái)看是個(gè)網(wǎng)頁(yè)常規(guī)代碼,應(yīng)該是被JavaScript寫入到網(wǎng)頁(yè)中了,既然不是全部代碼,那么只能用正則提取一下里面的具體我們需要的東西了。
content=str(qq_spaces['html'])
try:zanshu=re.findall('<spanclass="f-like-cnt">(.*?)</span>人覺得很贊</div>',content,re.S)[0]
except:return None
time_out=str(qq_spaces['feedstime'])
print("名字:"+str(qq_spaces['nickname']))
print("QQ號(hào):"+str(qq_spaces['opuin']))
print("時(shí)間:"+time_out)
print('贊數(shù):'+zanshu)
times=qq_spaces['abstime']
his_url=re.findall('data-curkey="(.*?)"',content,re.S)[0]
在QQ空間隨便找個(gè)好友點(diǎn)個(gè)贊吧,這樣我們才能接收到請(qǐng)求。
我們首先清空原來(lái)動(dòng)態(tài)產(chǎn)生的抓包,直接點(diǎn)個(gè)贊發(fā)現(xiàn)關(guān)于dolike的url只有三個(gè),第一個(gè)是個(gè)POST請(qǐng)求,應(yīng)該是我們所需要的點(diǎn)贊網(wǎng)址。
我們獲取到URL后,找到里面所需要的參數(shù)。發(fā)現(xiàn)一共有十一個(gè)參數(shù),在這里猜測(cè)應(yīng)該不存在加密參數(shù)。
既然參數(shù)沒什么問(wèn)題那就直接寫代碼吧。
def get_zan(times,his_url):
data={'g_tk': g_tk,'qzonetoken': qzonetoken}
post_data={
'qzreferrer': 'https://user.qzone.qq.com/'+str(qq_number),
'opuin': str(qq_number),
'unikey': str(his_url),
'curkey': str(his_url),
'from': '1',
'appid': '311',
'typeid': '0',
'abstime': str(times),
'fid': str(his_url).split('/')[-1],
'active': '0',
'fupdate': '1'
}
url='https://user.qzone.qq.com/proxy/domain/w.qzone.qq.com/cgi-bin/likes/internal_dolike_app?'
url=url + urllib.parse.urlencode(data)
html=requests.post(url,headers=headers,cookies=cookie,data=post_data)
if html.status_code==200:print("點(diǎn)贊成功" if len(html.text)==469 else "點(diǎn)贊失敗")
因?yàn)闃漭刹⒉皇呛懿诲e(cuò)的問(wèn)題,這個(gè)代碼做不到絕對(duì)的秒贊。
def run_tolike():
if os.path.exists('time_out.txt'):
with open('time_out.txt','r') as f:
time_out=f.read()
else:time_out=None
while True:
get_friends_list()
time.sleep(__import__('random').randint(0,5)) # 秒贊?
if not time_out or time_out !=time_out:
time_out=time_out
get_zan(times,his_url)
return True
else:log('說(shuō)說(shuō)無(wú)更新,等待中...')
with open('time_out.txt','w') as f:
f.write(str(times))