python之微博批量关注,互粉

想做自己的微博自媒体,微博大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是请求第几页数据,

详细数据请查看下图


接下来我们要写代码了。

import requests
import sys
import json
import time
reload(sys)
sys.setdefaultencoding('utf8')

headetr2 = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
    'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Cache-Control': 'max-age=0',
    'Connection': 'keep-alive',
    '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',
    'Host': 'm.weibo.cn',
    'RA-Sid': 'B781E81A-20150402-024118-ce25e1-ba5345',
    'RA-Ver': '3.0.8',
    'Upgrade-Insecure-Requests': '1',
    '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'
}
urluser = "https://m.weibo.cn/groupChat/userChat/groupMembersList?group_id=4185365567283109&page=1"#地址
userjson = requests.get(urluser, headers=headetr2).content#发getq
print userjson#原数据
json_base = json.loads(userjson)#json数据

json的数据格式是这个样子的

[
    {
        "card_group": [
            {
                "member": {
                    "id": 2577089961,
                    "profile_image_url": "http://tva2.sinaimg.cn/crop.0.0.0.0.50/999b45a9tw1efrou9m6tzj2050050mx3.jpg",
                    "remark": "",
                    "screen_name": "霸气田春_丽_923",
                    "verified": false,
                    "verified_type": -1
                },
                "mod_type": "mod/groupChat/memberItem"
            },
            {
                "member": {
                    "id": 5637550097,
                    "profile_image_url": "http://tva2.sinaimg.cn/crop.0.0.750.750.50/0069wAjnjw8fcw5bic0pwj30ku0kugme.jpg",
                    "remark": "",
                    "screen_name": "搞笑博主的日常",
                    "verified": false,
                    "verified_type": -1
                },
                "mod_type": "mod/groupChat/memberItem"
            },
            {
                "member": {
                    "id": 6361289052,
                    "profile_image_url": "http://tvax2.sinaimg.cn/crop.0.0.664.664.50/006WvjSkly8foxdg12pj8j30ig0ig75j.jpg",
                    "remark": "",
                    "screen_name": "JK-晗",
                    "verified": false,
                    "verified_type": -1
                },
                "mod_type": "mod/groupChat/memberItem"
            }
        ],
        "mod_type": "mod/pagelist",
        "next_cursor": "",
        "previous_cursor": ""
    }
]

接下来我们就要开始解析json 拿我我们需要的数据就可以了。


 card_group = json_base[0]['card_group']
    for num in range(0, len(json_base[0]['card_group'])):

        member = card_group[num]
        print member['member']['id']
        print member['member']['screen_name']

这里我们要放一放了,我们需要找到点击关注需要调用的接口了

步骤如下图



下面画箭头的都是需要的数据


数据源,接口都知道了,我们改写代码了

postData2 = { "uid": member['member']['id'],'st':'8cc84b'}
        url = 'https://m.weibo.cn/api/friendships/create'
        json_str = requests.post(url, data=postData2, headers=headetr2).content
        print json_str.decode('gbk').encode('utf-8').decode('unicode_escape')

*****************************分割线*************************************

我们到这里就已经可以 

不过需要注意的是,请求过快会报错,所以最好我们隔几秒在请求。

如果报10027错误,就代表需要输入验证码,批量请求多了以后微博会限制的

如果报校验失败,代表需要重新用以上的方法获取关注接口中的st 这个值

如果报token失效,那就需要重新登陆获取Cookie。

完整代码如下

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import requests
import sys
import json
import time
reload(sys)
sys.setdefaultencoding('utf8')

headetr2 = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
    'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Cache-Control': 'max-age=0',
    'Connection': 'keep-alive',
    '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',
    'Host': 'm.weibo.cn',
    'RA-Sid': 'B781E81A-20150402-024118-ce25e1-ba5345',
    'RA-Ver': '3.0.8',
    'Upgrade-Insecure-Requests': '1',
    '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'
}
for nums in range(1,50):这里是模拟页数 
    urluser = "https://m.weibo.cn/groupChat/userChat/groupMembersList?group_id=4185365567283109&page=%s"%nums
    userjson = requests.get(urluser, headers=headetr2).content
    json_base = json.loads(userjson)
    card_group = json_base[0]['card_group']
    for num in range(0, len(json_base[0]['card_group'])):

        member = card_group[num]
        print member['member']['id']
        print member['member']['screen_name']
        postData2 = { "uid": member['member']['id'],'st':'8cc84b'}#post请求传的数据
        url = 'https://m.weibo.cn/api/friendships/create'
        json_str = requests.post(url, data=postData2, headers=headetr2).content
        print json_str.decode('gbk').encode('utf-8').decode('unicode_escape')

        time.sleep(3)

    time.sleep(10)

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值