Python实现简单自动评论自动点赞自动关注脚本

目录
  • 前言
    • 开发环境
    • 原理:
    • 1. 请求伪装
    • 2. 获取搜索内容的方法
    • 3. 获取作品评论
    • 4. 自动评论
    • 5. 点赞操作
    • 6. 关注操作
    • 7. 获取创作者信息
    • 8. 获取创作者视频
    • 9. 调用函数

前言

今天的这个脚本,是一个别人发的外包,交互界面的代码就不在这里说了,但是可以分享下自动评论、自动点赞、自动关注、采集评论和视频的数据是如何实现的

开发环境

python 3.8 运行代码
pycharm 2021.2 辅助敲代码
requests 第三方模块

原理:

模拟客户端,向服务器发送请求

代码实现

1. 请求伪装

def __init__(self):
    self.headers = {
        'content-type': 'application/json',
        'Cookie': 'kpf=PC_WEB; kpn=KUAISHOU_VISION; clientid=3; did=web_ea128125517a46bd491ae9ccb255e242; client_key=65890b29; didv=1646739254078; _bl_uid=pCldq3L00L61qCzj6fytnk2wmhz5; userId=270932146; kuaishou.server.web_st=ChZrdWFpc2hvdS5zZXJ2ZXIud2ViLnN0EqABH2BHihXp4liEYWMBFv9aguyfs8BsbINQIWqgoDw0SimMkpXwM7PKpKdJcZbU12QOyeKFaG4unV5EUkkEswL0HnA8_A9z2ujLlKN__gRsxU2B5kIYgirTDPiVJ3uPN1sU9mqvog3auoNJxDdbKjVeFNK1wQ5HTM_yUvYvmWOx9iC8IKcvnmo9YnG_J9ske-t-wiCWMgSCA25HN6MRqCMxuhoSnIqSq99L0mk4jolsseGdcwiNIiC8rjheuewIA1Bk3LwkNIYikU2zobcuvgAiBbMnBuDixygFMAE; kuaishou.server.web_ph=55c7e6b2033ea94a3447ea98082642cd6f1a',
        'Host': 'www.ks.com',
        'Origin': 'https://www.ks.com',
        'Referer': 'https://www.ks.com/search/video?searchKey=%E9%BB%91%E4%B8%9D',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36',
    }
    self.url = 'https://www.ks.com/graphql'

2. 获取搜索内容的方法

def get_search(self, keyword, pcursor):
    """
    :param keyword: 关键词
    :param pcursor: 页码
    :return: 搜索作品
    """
    json = {
        'operationName': "visionSearchPhoto",
        'query': "fragment photoContent on PhotoEntity {\n  id\n  duration\n  caption\n  likeCount\n  viewCount\n  realLikeCount\n  coverUrl\n  photoUrl\n  photoH265Url\n  manifest\n  manifestH265\n  videoResource\n  coverUrls {\n    url\n    __typename\n  }\n  timestamp  \n  animatedCoverUrl\n  distance\n  videoRatio\n  liked\n  stereoType\n  profileUserTopPhoto\n  __typename\n}\n\nfragment feedContent on Feed {\n  type\n  author {\n    id\n    name\n    headerUrl\n    following\n    headerUrls {\n      url\n      __typename\n    }\n    __typename\n  }\n  photo {\n    ...photoContent\n    __typename\n  }\n  canAddComment\n  llsid\n  status\n  currentPcursor\n  __typename\n}\n\nquery visionSearchPhoto($keyword: String, $pcursor: String, $searchSessionId: String, $page: String, $webPageArea: String) {\n  visionSearchPhoto(keyword: $keyword, pcursor: $pcursor, searchSessionId: $searchSessionId, page: $page, webPageArea: $webPageArea) {\n    result\n    llsid\n    webPageArea\n    feeds {\n      ...feedContent\n      __typename\n    }\n    searchSessionId\n    pcursor\n    aladdinBanner {\n      imgUrl\n      link\n      __typename\n    }\n    __typename\n  }\n}\n",
        'variables': {'keyword': keyword, 'pcursor': pcursor, 'page': "search"}
    }
    response = requests.post(url=self.url, json=json, headers=self.headers)
    json_data = response.json()
    print(json_data)
    return json_data

3. 获取作品评论

def get_comments(self, photoId, pcursor):
    """
    :param photoId: 作品id
    :param pcursor: 页码
    :return: 评论内容
    """
    json = {
        'operationName': "commentListQuery",
        'query': "query commentListQuery($photoId: String, $pcursor: String) {  visionCommentList(photoId: $photoId, pcursor: $pcursor) {\n    commentCount\n        rootComments {\n      commentId\n      authorId\n      authorName\n      content\n      headurl\n      timestamp\n      likedCount\n      realLikedCount\n      liked\n      status\n      subCommentCount\n      subCommentsPcursor\n      subComments {\n        commentId\n        authorId\n        authorName\n        content\n        headurl\n        timestamp\n        likedCount\n        realLikedCount\n        liked\n        status\n        replyToUserName\n        replyTo\n        __typename\n      }\n      __typename\n    }\n    __typename\n  }\n}\n",
        'variables': {'photoId': photoId, 'pcursor': pcursor}
    }
    response = requests.post(url=self.url, json=json, headers=self.headers)
    json_data = response.json()
    print(json_data)
    return json_data

4. 自动评论

def post_comment(self, content, photoAuthorId, photoId):
    """
    :param content: 评论内容
    :param photoAuthorId: 该作品的作者id
    :param photoId: 作品id
    :return: 有没有成功
    """
    json = {
        'operationName': "visionAddComment",
        'query': "mutation visionAddComment($photoId: String, $photoAuthorId: String, $content: String, $replyToCommentId: ID, $replyTo: ID, $expTag: String) {  (photoId: $photoId, photoAuthorId: $photoAuthorId, content: $content, replyToCommentId: $replyToCommentId, replyTo: $replyTo, expTag: $expTag) {\n    result\n    commentId\n    content\n    timestamp\n    status\n    __typename\n  }\n}\n",
        'variables': {
            'content': content,
            'expTag': "1_a/2005158523885162817_xpcwebsearchxxnull0",
            'photoAuthorId': photoAuthorId,
            'photoId': photoId
        }
    }
    response = requests.post(url=self.url, json=json, headers=self.headers)
    json_data = response.json()
    print(json_data)
    return json_data

5. 点赞操作

def is_like(self, photoId, photoAuthorId):
    """
    :param photoId: 作品id
    :param photoAuthorId: 该作品的作者id
    :return: 有没有成功
    """
    json = {
        'operationName': "visionVideoLike",
        'query': "mutation visionVideoLike($photoId: String, $photoAuthorId: String, $cancel: Int, $expTag: String) {\n  visionVideoLike(photoId: $photoId, photoAuthorId: $photoAuthorId, cancel: $cancel, expTag: $expTag) {\n    result\n    __typename\n  }\n}",
        'variables': {
            'cancel': 0,
            'expTag': "1_a/2005158523885162817_xpcwebsearchxxnull0",
            'photoAuthorId': photoAuthorId,
            'photoId': photoId
        }
    }
    response = requests.post(url=self.url, json=json, headers=self.headers)
    json_data = response.json()
    print(json_data)
    return json_data

6. 关注操作

def is_follow(self, touid):
    """
    :param touid: 用户id
    :return:
    """
    json = {
        'operationName': "visionFollow",
        'query': "mutation visionFollow($touid: String, $ftype: Int, $followSource: Int, $expTag: String) {\n  visionFollow(touid: $touid, ftype: $ftype, followSource: $followSource, expTag: $expTag) {\n       followStatus\n    hostName\n    error_msg\n    __typename\n  }\n}\n",
        'variables': {
            'expTag': "1_a/2005158523885162817_xpcwebsearchxxnull0",
            'followSource': 3,
            'ftype': 1,
            'touid': touid
        }
    }
    response = requests.post(url=self.url, json=json, headers=self.headers)
    json_data = response.json()
    print(json_data)
    return json_data

7. 获取创作者信息

def get_userInfo(self, userId):
    """

    :param userId: 用户ID
    :return: 用户信息
    """
    json = {
        'operationName': "visionProfile",
        'query': "query visionProfile($userId: String) {\n  visionProfile(userId: $userId) {\n       hostName\n    userProfile {\n      ownerCount {\n        fan\n        photo\n        follow\n        photo_public\n        __typename\n      }\n      profile {\n        gender\n        user_name\n        user_id\n        headurl\n        user_text\n        user_profile_bg_url\n        __typename\n      }\n      isFollowing\n      __typename\n    }\n    __typename\n  }\n}\n",
        'variables': {'userId': userId}
    }
    response = requests.post(url=self.url, json=json, headers=self.headers)
    json_data = response.json()
    print(json_data)
    return json_data

8. 获取创作者视频

def get_video(self, userId, pcursor):
    """
    :param userId: 用户id
    :param pcursor: 页码
    :return: 作品
    """
    json = {
        'operationName': "visionProfilePhotoList",
        'query': "fragment photoContent on PhotoEntity {\n    duration\n  caption\n  likeCount\n  viewCount\n  realLikeCount\n  coverUrl\n  photoUrl\n  photoH265Url\n  manifest\n  manifestH265\n  videoResource\n  coverUrls {\n    url\n    __typename\n  }\n  timestamp\n  expTag\n  animatedCoverUrl\n  distance\n  videoRatio\n  liked\n  stereoType\n  profileUserTopPhoto\n  __typename\n}\n\nfragment feedContent on Feed {\n  type\n  author {\n    id\n    name\n    headerUrl\n    following\n    headerUrls {\n      url\n      __typename\n    }\n    __typename\n  }\n  photo {\n    ...photoContent\n    __typename\n  }\n  canAddComment\n  llsid\n  status\n  currentPcursor\n  __typename\n}\n\nquery visionProfilePhotoList($pcursor: String, $userId: String, $page: String, $webPageArea: String) {\n  visionProfilePhotoList(pcursor: $pcursor, userId: $userId, page: $page, webPageArea: $webPageArea) {\n    result\n    llsid\n    webPageArea\n    feeds {\n      ...feedContent\n      __typename\n    }\n    hostName\n    pcursor\n    __typename\n  }\n}\n",
        'variables': {'userId': userId, 'pcursor': pcursor, 'page': "profile"}
    }
    response = requests.post(url=self.url, json=json, headers=self.headers)
    json_data = response.json()
    print(json_data)
    return json_data

9. 调用函数

if __name__ == '__main__':
    kuaishou = KuaiShou()
    # 获取评论
    kuaishou.get_comments('3xzry7secwhunai', '')
    # 发布评论
    kuaishou.post_comment('爱你', '3xgz9zaku7hig96', '3xydesqbvtrvcuq')
    # 点赞
    kuaishou.is_like('3xydesqbvtrvcuq', '3xgz9zaku7hig96')
    # 关注
    kuaishou.is_follow('3xxhfqquuachnje')
    # 创作者信息
    kuaishou.get_userInfo('3xxhfqquuachnje')
    # 获取创作者作品
    kuaishou.get_video('3xxhfqquuachnje', '')

以上就是Python实现简单自动评论自动点赞自动关注脚本的详细内容,更多关于Python自动评论点赞关注脚本的资料请关注我们其它相关文章!

(0)

相关推荐

  • 用Python写脚本自动评论再也不怕碰到喷子

    自从上次在B站看到一个喷子,一个人喷一堆人,当时我就看不过去了,直接用Python写了个自动评论软件,他说一句我能说十句,当场教育喷子~ 于是乎,顺便整理一下,做了一手教程,分享给大家,当然不是教大家去做喷子,只是学学这么个技术~ 不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以加这个群点我免费领取资料 包括今天的代码,过几天我还会做个视频教程出来,有需要也可以领取~ 给大家准备的学习资料包括但不限于: Python

  • Python超简单分析评论提取关键词制作精美词云流程

    目录  一.抓取全部评论 1.找到评论接口 2.Python 获取评论 二.文本分词.词云制作 1.文本分析 2.生成词云 3.初步效果-模糊不清 4.最终效果-高清无马  一.抓取全部评论 吾的这篇文章,有 1022 次评论,一条条看,吾看不过来,于是想到 Python 词云,提取关键词,倒也是一桩趣事. 评论情况: {'android': 545 次, 'ios': 110 次, 'pc': 44 次, 'uniapp': 1 次} 一个小细节:给我评论的设备中,安卓苹果比是 5:1. Bu

  • Python实现简单自动评论自动点赞自动关注脚本

    目录 前言 开发环境 原理: 1. 请求伪装 2. 获取搜索内容的方法 3. 获取作品评论 4. 自动评论 5. 点赞操作 6. 关注操作 7. 获取创作者信息 8. 获取创作者视频 9. 调用函数 前言 今天的这个脚本,是一个别人发的外包,交互界面的代码就不在这里说了,但是可以分享下自动评论.自动点赞.自动关注.采集评论和视频的数据是如何实现的 开发环境 python 3.8 运行代码pycharm 2021.2 辅助敲代码requests 第三方模块 原理: 模拟客户端,向服务器发送请求 代

  • 还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)

    获取评论贴的请求头与表单数据 下一篇在这里 这里,我们随便选取一个网站,获取该贴评论后的请求头,表单数据以及评论贴链接.(因为涉及敏感信息,自己看图片是哪个网址) 比如这个网站,经常有不定时的盖楼活动推出,我们随便评论一条,通过chrome F12功能,获取其请求头与表单数据. 可以看到其右侧的表单数据(评论参数)有: message:盖楼的内容,一般来说这个内容可以提供一个文档随机选择评论,可以规避自动盖楼导致评论一模一样. posttime:标识数据,一般具有唯一性,确定是否是人为操作.(各

  • Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)

    一.分析链接 上一篇文章指路 一般来说,我们参加某个网站的盖楼抽奖活动,并不是仅仅只参加一个,而是多个盖楼活动一起参加. 这个时候,我们就需要分析评论的链接是怎么区分不同帖子进行评论的,如上篇的刷帖链接,具体格式如下: https://club.hihonor.com/cn/forum.php?mod=post&action=reply&fid=154&tid=21089001&extra=page%3D1&replysubmit=yes&infloat=y

  • python 30行代码实现蚂蚁森林自动偷能量

    @[toc] 虽然我支付宝加了好多好友,平时有很多能量可以偷,但由于太懒,至今一棵树都没种成,所以心心念念把偷能量这事自动化.之前通过用代码模拟手机点按的方式,实现了朋友圈自动点赞,但当时蚂蚁森林的操作流程要比朋友圈点赞复杂很多,所以当时就没有实现自动偷能量.不过我那篇博客评论下面有网友推荐了appium和uiautomator2这俩工具,最近抽空研究了下,发现用uiautomator2的话这事简单了好多,而且由于蚂蚁森林改版,连续偷能量的操作流程也简单了好多,于是乎我就实现了自动偷能量,效果如

  • Python 自动化处理Excel和Word实现自动办公

    今天我来分享一些Python办公自动化的方法,欢迎收藏学习,喜欢点赞支持,欢迎畅聊. Openpyxl Openpyxl 可以说是 Python 中最通用的工具模块了,它使与 Excel 交互pip install openpyxl pip install python-docx简直就像在公园里漫步一样. 有了它,你就可以读写所有当前和传统的 excel 格式,即 xlsx 和 xls. Openpyxl 允许填充行和列.执行公式.创建 2D 和 3D 图表.标记轴和标题,以及大量可以派上用场的

  • 基于Python实现给喜欢的主播自动发弹幕

    目录 前言 实现步骤 全部代码 前言 发弹幕只是其中一个小小的功能,还可以自动点赞.收藏.投币.自动播放.私信等等,但是我们只演示这个,其它的不做展示. 实现步骤 先打开一个视频或者直播,F12打开开发者工具,点击network. 然后点这个清空一下 再发送一个弹幕,然后可以看到这个send,有一个post请求. 点击payload可以看到我们刚刚发送的弹幕相关数据 然后来写代码 首先导入模块 import random import time 这是我们的url url = 'https://a

  • python中matplotlib实现随鼠标滑动自动标注代码

    Python+matplotlib进行鼠标交互,实现动态标注,数据可视化显示,鼠标划过时画一条竖线并使用标签来显示当前值. Python3.6.5,代码示例: import matplotlib.pyplot as plt import numpy as np def Show(y): #参数为一个list len_y = len(y) x = range(len_y) _y = [y[-1]]*len_y fig = plt.figure(figsize=(960/72,360/72)) ax

  • Auto.JS实现抖音刷宝等刷视频app,自动点赞,自动滑屏,自动切换视频功能

    什么是auto.js Auto.js 是个基于 JavaScript 语言运行在Android平台上的脚本框架,可以编写各种自动化脚本,它主要有以下优点: 无需root:基于无障碍服务: 基于控件:以坐标为基础的按键精灵.脚本精灵很容易出现分辨率问题,而以控件为基础的Auto.js则没有这个问题: 上手简单:使用javascript编写,支持中文变量名: 可打包 :可以将JavaScript打包为apk文件,这一点可以简化用户操作,对上了年纪的用户很重要: 另外auto.js还有结合Tasker

随机推荐