想做自己的微博自媒體,微博大v,剛開始我們肯定要有粉絲才可以,但是我們上哪裡去找粉絲那?花錢買,都是僵屍粉,也就是湊湊數而已,所以我們需要加入互粉群,一個群大概1000人,我們每天關註的人上限大概500個,我們總不能一個一個點進去關註吧,好累的,所以我要批量關註,市面上很多批量關註的軟體不太敢用還是 ...
想做自己的微博自媒體,微博大v,剛開始我們肯定要有粉絲才可以,但是我們上哪裡去找粉絲那?花錢買,都是僵屍粉,也就是湊湊數而已,所以我們需要加入互粉群,一個群大概1000人,我們每天關註的人上限大概500個,我們總不能一個一個點進去關註吧,好累的,所以我要批量關註,市面上很多批量關註的軟體不太敢用還是自己動手寫吧。
思路如下:1.登錄我們自己的微博賬號,加入互粉群
2.我們需要獲取互粉群里大量用戶id;
3.我們需要調用微博關註介面
說乾就乾
步驟一,前提是我們已經加了一個互粉群
我們用電腦登陸微博這類推薦用谷歌瀏覽器,按F12進入調試模式,如圖
這個時候我們應該會看到全是白色的界面,這個時候我們需要在地址欄替換地址為:https://m.weibo.cn/
或者 自己刪除地址欄u/2109066367/.... 別忘了敲個回車
我們會可以切換到消息頁面並且點進去,如圖,
進去群信息之後點擊更多成員,接下來重點來了*********
https://m.weibo.cn/groupChat/userChat/groupMembersList?group_id=4185365567283109&page=3
group_id是群的id
page是請求第幾頁數據,
詳細數據請查看下圖
接下來我們要寫代碼了。
1 import requests 2 import sys 3 import json 4 import time 5 reload(sys) 6 sys.setdefaultencoding('utf8') 7 8 headetr2 = { 9 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 10 'Accept-Encoding': 'gzip, deflate, br', 11 'Accept-Language': 'zh-CN,zh;q=0.9', 12 'Cache-Control': 'max-age=0', 13 'Connection': 'keep-alive', 14 'Cookie': 'browser=d2VpYm9mYXhpYW4%3D; h5_deviceID=da4db009e6ae38320111cc4fbc8d1998; _T_WM=46f8072dc2db4752c9f5f1bb610d6934; ALF=1523607764; SCF=AlPdz7Wu9iu_xwiWfMtd1hBGr6mZqaKtCcidCgPrDl6oFAuKmtz3fEopj83TsqAVcRKfrT-DDGed9yNoxpYCYks.; SUB=_2A253rKuyDeRhGeRP61sR9ijPzTuIHXVVbjX6rDV6PUJbktAKLXLmkW1NUFPZQTk64zbcwwxo3HMutNZNPULhugpG; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9W5MyLbIiX5quKaqF190KSgT5JpX5K-hUgL.Fozpeh.7Soq0SoM2dJLoIEXLxKMLBKML12zLxK-L1hqLB-eLxKqL1-2L1KqLxKnL1h.LBozLxKMLBoeLB.zt; SUHB=0YhgX4j3ItdpY-; SSOLoginState=1521015778; H5_INDEX=1; H5_INDEX_TITLE=%E7%A7%8B%E5%86%AC%E6%9A%96%E8%89%B2%E7%B3%BB; M_WEIBOCN_PARAMS=featurecode%3D20000320%26luicode%3D10000011%26lfid%3D1076036364474102', 15 'Host': 'm.weibo.cn', 16 'RA-Sid': 'B781E81A-20150402-024118-ce25e1-ba5345', 17 'RA-Ver': '3.0.8', 18 'Upgrade-Insecure-Requests': '1', 19 'User-Agent': 'Mozilla/5.0 (Linux; Android 5.1.1; Nexus 6 Build/LYZ28E) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Mobile Safari/537.36' 20 } 21 urluser = "https://m.weibo.cn/groupChat/userChat/groupMembersList?group_id=4185365567283109&page=1"#地址 22 userjson = requests.get(urluser, headers=headetr2).content#發getq 23 print userjson#原數據 24 json_base = json.loads(userjson)#json數據
json的數據格式是這個樣子的
1 [ 2 { 3 "card_group": [ 4 { 5 "member": { 6 "id": 2577089961, 7 "profile_image_url": "http://tva2.sinaimg.cn/crop.0.0.0.0.50/999b45a9tw1efrou9m6tzj2050050mx3.jpg", 8 "remark": "", 9 "screen_name": "霸氣田春_麗_923", 10 "verified": false, 11 "verified_type": -1 12 }, 13 "mod_type": "mod/groupChat/memberItem" 14 }, 15 { 16 "member": { 17 "id": 5637550097, 18 "profile_image_url": "http://tva2.sinaimg.cn/crop.0.0.750.750.50/0069wAjnjw8fcw5bic0pwj30ku0kugme.jpg", 19 "remark": "", 20 "screen_name": "搞笑博主的日常", 21 "verified": false, 22 "verified_type": -1 23 }, 24 "mod_type": "mod/groupChat/memberItem" 25 }, 26 { 27 "member": { 28 "id": 6361289052, 29 "profile_image_url": "http://tvax2.sinaimg.cn/crop.0.0.664.664.50/006WvjSkly8foxdg12pj8j30ig0ig75j.jpg", 30 "remark": "", 31 "screen_name": "JK-晗", 32 "verified": false, 33 "verified_type": -1 34 }, 35 "mod_type": "mod/groupChat/memberItem" 36 } 37 ], 38 "mod_type": "mod/pagelist", 39 "next_cursor": "", 40 "previous_cursor": "" 41 } 42 ]
接下來我們就要開始解析json 拿我我們需要的數據就可以了。
1 card_group = json_base[0]['card_group'] 2 for num in range(0, len(json_base[0]['card_group'])): 3 4 member = card_group[num] 5 print member['member']['id'] 6 print member['member']['screen_name']
這裡我們要放一放了,我們需要找到點擊關註需要調用的介面了
步驟如下圖
下麵畫箭頭的都是需要的數據
數據源,介面都知道了,我們改寫代碼了
1 postData2 = { "uid": member['member']['id'],'st':'8cc84b'} 2 url = 'https://m.weibo.cn/api/friendships/create' 3 json_str = requests.post(url, data=postData2, headers=headetr2).content 4 print json_str.decode('gbk').encode('utf-8').decode('unicode_escape')
*****************************分割線*************************************
我們到這裡就已經可以
不過需要註意的是,請求過快會報錯,所以最好我們隔幾秒在請求。
如果報10027錯誤,就代表需要輸入驗證碼,批量請求多了以後微博會限制的
如果報校驗失敗,代表需要重新用以上的方法獲取關註介面中的st 這個值
如果報token失效,那就需要重新登陸獲取Cookie。
完整代碼如下
1 #!/usr/bin/python 2 # -*- coding: UTF-8 -*- 3 import requests 4 import sys 5 import json 6 import time 7 reload(sys) 8 sys.setdefaultencoding('utf8') 9 10 headetr2 = { 11 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 12 'Accept-Encoding': 'gzip, deflate, br', 13 'Accept-Language': 'zh-CN,zh;q=0.9', 14 'Cache-Control': 'max-age=0', 15 'Connection': 'keep-alive', 16 'Cookie': 'browser=d2VpYm9mYXhpYW4%3D; h5_deviceID=da4db009e6ae38320111cc4fbc8d1998; _T_WM=46f8072dc2db4752c9f5f1bb610d6934; ALF=1523607764; SCF=AlPdz7Wu9iu_xwiWfMtd1hBGr6mZqaKtCcidCgPrDl6oFAuKmtz3fEopj83TsqAVcRKfrT-DDGed9yNoxpYCYks.; SUB=_2A253rKuyDeRhGeRP61sR9ijPzTuIHXVVbjX6rDV6PUJbktAKLXLmkW1NUFPZQTk64zbcwwxo3HMutNZNPULhugpG; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9W5MyLbIiX5quKaqF190KSgT5JpX5K-hUgL.Fozpeh.7Soq0SoM2dJLoIEXLxKMLBKML12zLxK-L1hqLB-eLxKqL1-2L1KqLxKnL1h.LBozLxKMLBoeLB.zt; SUHB=0YhgX4j3ItdpY-; SSOLoginState=1521015778; H5_INDEX=1; H5_INDEX_TITLE=%E7%A7%8B%E5%86%AC%E6%9A%96%E8%89%B2%E7%B3%BB; M_WEIBOCN_PARAMS=featurecode%3D20000320%26luicode%3D10000011%26lfid%3D1076036364474102', 17 'Host': 'm.weibo.cn', 18 'RA-Sid': 'B781E81A-20150402-024118-ce25e1-ba5345', 19 'RA-Ver': '3.0.8', 20 'Upgrade-Insecure-Requests': '1', 21 'User-Agent': 'Mozilla/5.0 (Linux; Android 5.1.1; Nexus 6 Build/LYZ28E) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Mobile Safari/537.36' 22 } 23 for nums in range(1,50):這裡是模擬頁數 24 urluser = "https://m.weibo.cn/groupChat/userChat/groupMembersList?group_id=4185365567283109&page=%s"%nums 25 userjson = requests.get(urluser, headers=headetr2).content 26 json_base = json.loads(userjson) 27 card_group = json_base[0]['card_group'] 28 for num in range(0, len(json_base[0]['card_group'])): 29 30 member = card_group[num] 31 print member['member']['id'] 32 print member['member']['screen_name'] 33 postData2 = { "uid": member['member']['id'],'st':'8cc84b'}#post請求傳的數據 34 url = 'https://m.weibo.cn/api/friendships/create' 35 json_str = requests.post(url, data=postData2, headers=headetr2).content 36 print json_str.decode('gbk').encode('utf-8').decode('unicode_escape') 37 38 time.sleep(3) 39 40 time.sleep(10)