Python爬虫实战之“网易云音乐绝对互粉”
Python爬虫实战之“网易云音乐绝对互粉”
登录-注册 发表于1年前
Python爬虫实战之“网易云音乐绝对互粉”
  • 发表于 1年前
  • 阅读 78
  • 收藏 1
  • 点赞 0
  • 评论 0

移动开发云端新模式探索实践 >>>   

摘要: 接触python的时间不算短,最开始了解的时候还是2013年,学习之后对这种灵活的动态语言感到手足无措。最近又看了一遍语法自己尝试做了几个例子,对python算是有所入门了。 那么这次所做的例子是什么呢? 答案就是“网易云音乐绝对互粉”,名字看起来很奇怪哈!:-D;用网易云音乐的朋友都知道它上边有“歌友”之间互为粉丝这个功能,但是有些人呢对你加了关注了呢,然后就悄悄地取消关注了。这就让人很恼火了,尤其是看着每天粉丝一个个地掉感觉“我的感情被玩弄了!”。作为金牛座牛脾气上来绝对不能忍,一个个点进去“取关”,太low了,我有一个更low的办法哈哈哈。 下面进入正题。开发
  • 这里是列表文本启动fiddler,打开网易晕音乐官网,进入个人中心粉丝模块 输入图片说明

  • 这里是列表文本查看在fiddler中抓到的包,进行分析 惊奇地发现有个方法叫做 getfollows 好巧哦! 输入图片说明

  • 这里是列表文本对比分析对你已经偷偷取消关注的人与没有对你取消关注的人的数据区别 输入图片说明

  • 这里是列表文本找一个已经对你取消关注的人进行“取消关注操作” 输入图片说明

  • 这里是列表文本编码分两步 第一步:获取你关注的但没有关注你的人 第二部:将这些人进行取关操作 在这个过程中遇到了一些麻烦主要是,网易云音乐对页码进行了加密,没法轻松地获取所有的对你取关的人,我这里采用的是比较笨的办法就是把三十多个跳也页的参数都手动复制下来放到文本文件中。 输入图片说明

  • 三十条页码参数记录- 输入图片说明

import urllib
import http.cookiejar
import ssl
import requests

抓取那些对你取关的人

def getNoMutal(params,enSecKey):
    print(params)
    print(enSecKey)
    data = {'params': str(params.strip()),
            'encSecKey':str(enSecKey.strip())}
    headers = {
    'POST http':'//music.163.com/weapi/user/getfollows/112272936?csrf_token=8c133a69f9cbf30a37e04ef55af6444f HTTP/1.1',
    'Host':'music.163.com',
    'Connection':' keep-alive',
    'Content-Length':' 512',
    'Originv http':'//music.163.com',
    'User-Agent':' Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36',
    'Content-Type':' application/x-www-form-urlencoded',
    'Accept':' */*',
    'Referer':' http://music.163.com/user/follows?id=112272936',
    'Accept-Encoding':' gzip, deflate',
    'Accept-Language':' zh-CN,zh;q=0.8',
    'Cookie':'你的cookie在fiddler中粘过来'}
    r = requests.post('http://music.163.com/weapi/user/getfollows/112272936?csrf_token=8c133a69f9cbf30a37e04ef55af6444f', data=data, headers=headers)
    print(r.text)
    import json
    data = json.loads(r.text)
    defollows=[]
    for follower in data['follow']:
        if follower['mutual']==False:
            defollows.append(follower['userId'])
    print('defollows:'+str(defollows))
    return defollows

对这些用户进行取关

def defollowed(defollows):
    data = {'params': 'c3S6p3BC4SU7idoGy4GpyJ/Az7LlSC0KmIcCfi9435TbeYMrSBtOqgFAqdIwoLecalp1RBLHOvfpuZ/RT3OfwSnJ/zs5TEW'
                       '+PqRWMrCHVcoqm4qFYK72Tm7aLSTCbATvINJ1JPBmDRFntv4TLRNaSA==',
            'encSecKey':'d577dd3f46d316483db1ea103e3e55d4d07cefb055135c4ae462c703c1d24061c6b0b67aa94c3eb10a52da65cc9321f6'
                        'd92b8e2b8635909ae4e0679e01f56a42dd4ff6f34375d0cfbd11cce355bdbfab385b3ea4834e777d17da4631a959b7e9f2'
                        'be23da3e908925bdb2500b5187a57dda16704b1fa9069cae85bdb02344d732'}
    header={
    #'POST http://music.163.com/weapi/user/delfollow/127028008?csrf_token=8c133a69f9cbf30a37e04ef55af6444f HTTP/1.1'
    'Host':' music.163.com',
    'Connection':' keep-alive',
    'Content-Length':' 438',
    'Origin':' http://music.163.com',
    'User-Agent':' Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36',
    'Content-Type':' application/x-www-form-urlencoded',
    'Accept':' */*',
    'Referer':' http://music.163.com/user/home?id=127028008',
    'Accept-Encoding':' gzip, deflate',
    'Accept-Language':' zh-CN,zh;q=0.8',
    'Cookie':'你的cookie在fiddler中粘过来''            
    }
    for id in defollows:
        print('id:'+str(id))
        url='http://music.163.com/weapi/user/delfollow/{userid}?csrf_token=8c133a69f9cbf30a37e04ef55af6444f'.format(userid=str(id))
        print('url:'+url)
        r = requests.post(url,data=data,headers=header)
        print('defollow {userid} {result}'.format(userid=id,result=r.text))

最后运行

if __name__ == '__main__':
    defollows=[]#getNoMutal()

    file = open("params&key")
    index=0
    while 1:
        index=index+1
        line = file.readline()
        if not line:
            break
        else:
            params=line.split('#')[0]
            enSecKey=line.split('#')[1]
            defollows.extend(getNoMutal(params,enSecKey))
    defollowed(defollows)
  • 运行脚本前

输入图片说明

  • 运行脚本后

输入图片说明

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
登录-注册
粉丝 37
博文 36
码字总数 11215
作品 5
×
登录-注册
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: