精华内容
下载资源
问答
  • 最新微信公众号采集方案详细介绍

    千次阅读 2020-07-16 15:45:23
    个人及小团体对公众号内容获取数量不多的情况下一般都会采用前两种相对简单便捷成本低的方式去获取内容,不差钱的团队肯定就买第三方服务了,靠提供微信公众号采集接口的服务盈利的肯定就是逆向工程了.我介绍第一种...

    目前比较有效的几种微信公众号的采集方式:
    1、通过web端素材管理接口的方式
    2、通过appium从手机端
    3、通过逆向工程暴力获取
    4、通过第三方服务接口
    5、搜狗微信公众号接口(已凉)
    个人及小团体对公众号内容获取数量不多的情况下一般都会采用前两种相对简单便捷成本低的方式去获取内容,不差钱的团队肯定就买第三方服务了,靠提供微信公众号采集接口的服务盈利的肯定就是逆向工程了.我介绍第一种比较简单适合小规模采集的方案

    1、首先我们需要注册个属于自己的公众号平台微信公众号注册地址
    2、注册成功后进入点击如图所示的素材管理在这里插入图片描述
    3、点击素材管理后点击如图所示的新建图文消息在这里插入图片描述
    4、点击新建图文消息后点击如图所示的超链接在这里插入图片描述
    5、点解超链接后点击如图所示的选择其他公众号在这里插入图片描述
    6、这时候就可以输入我们想要获取公众号内容的名字去搜索查询
    在这里插入图片描述
    7、我们通过抓包查看分析下
    在这里插入图片描述在这里插入图片描述
    通过抓包也不难分析出请求参数的话就是我截图那样,稍后代码中将会呈现出来,然后通过请求response返回的内容也可以看到例如title、link、概要、更新时间等等的内容这里我们主要取title和url,我要说明一下我们通过这种方式获取的link是临时链接并不是手机端打开那样的永久链接但是也无妨我们只要通过访问临时链接把内容下载下来就可以了这个临时链接的有效时长其实也是很长时间的,如果我们想转换成永久链接我们可以通过手机端打开得到的就是永久链接地址了

    大体概述下代码流程
    1、调用登录函数login_wechat通过webdrive扫码登录微信公众号,这里不采用自动输入账号密码的方式登录是因为即便输入账号密码还是需要扫码确认
    2、登录成功获取cookie信息保存本地cookie.txt文件
    3、调用采集函数get_content获取cookie.txt的cookie值并提取token
    4、拼接好我们需要的请求参数后请求素材管理中接口中我们待采集公众号信息
    5、通过请求接口获取文章的title、link并实现翻页功能
    6、拿到我们待采集文章的link后请求link地址下载文章内容
    7、将title、link、内容对应保存csv文件

    # -*- coding: utf-8 -*-
    import re
    import csv
    import json
    import time
    import random
    import requests
    from selenium import webdriver
    
    
    def login_wechat():
        browser = webdriver.Chrome()
        browser.get("https://mp.weixin.qq.com/")
        time.sleep(2)
        print("请拿手机扫码二维码登录公众号")
        time.sleep(30)
        print("登录成功")
        # 获取cookies
        cookie_items = browser.get_cookies()
        post = {}
        # 获取到的cookies是列表形式,将cookies转成json形式并存入本地名为cookie的文本中
        for cookie_item in cookie_items:
            post[cookie_item['name']] = cookie_item['value']
        cookie_str = json.dumps(post)
        with open('cookie.txt', 'w+', encoding='utf-8') as f:
            f.write(cookie_str)
        print("cookies信息已保存到本地")
        browser.quit()
    
    
    def get_content(ky):
        # ky为要爬取的公众号名称
        url = 'https://mp.weixin.qq.com' # 公众号主页
        header = {
            "HOST": "mp.weixin.qq.com",
            "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
        }
        # 读取上一步获取到的cookies
        with open('cookie.txt', 'r', encoding='utf-8') as f:
            cookie = f.read()
        cookies = json.loads(cookie)
        # 增加重试连接次数
        session = requests.Session()
        session.keep_alive = False
        # 增加重试连接次数
        session.adapters.DEFAULT_RETRIES = 10
        time.sleep(5)
        # 登录之后的微信公众号首页url变化为:https://mp.weixin.qq.com/cgi-bin/home?t=home/index&lang=zh_CN&token=657944522,从这里获取token信息
        response = session.get(url=url, cookies=cookies)
        token = re.findall(r'token=(\d+)', str(response.url))[0]
        time.sleep(2)
        # 搜索微信公众号的接口地址
        search_url = 'https://mp.weixin.qq.com/cgi-bin/searchbiz?'
        # 搜索微信公众号接口需要传入的参数,有三个变量:微信公众号token、随机数random、搜索的微信公众号名字
        query_id = {
            'action': 'search_biz',
            'token': token,
            'lang': 'zh_CN',
            'f': 'json',
            'ajax': '1',
            'random': random.random(),
            'query': ky,
            'begin': '0',
            'count': '5'
        }
        # 打开搜索微信公众号接口地址,需要传入相关参数信息如:cookies、params、headers
        search_response = session.get(search_url,cookies=cookies,headers=header,params=query_id)
        # 取搜索结果中的第一个公众号
        lists = search_response.json().get('list')[0]
        print(lists)
        # 获取这个公众号的fakeid,后面爬取公众号文章需要此字段
        fakeid = lists.get('fakeid')
    
        # 微信公众号文章接口地址
        appmsg_url = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
        # 搜索文章需要传入几个参数:登录的公众号token、要爬取文章的公众号fakeid、随机数random
        query_id_data = {
            'token': token,
            'lang': 'zh_CN',
            'f': 'json',
            'ajax': '1',
            'random': random.random(),
            'action': 'list_ex',
            'begin': '0',  # 不同页,此参数变化,变化规则为每页加5
            'count': '5',
            'query': '',
            'fakeid': fakeid,
            'type': '9'
        }
        # 打开搜索的微信公众号文章列表页
        appmsg_response = session.get(appmsg_url,cookies=cookies,headers=header,params=query_id_data)
        # 获取文章总数
        max_num = appmsg_response.json().get('app_msg_cnt')
        # 每页至少有5条,获取文章总的页数,爬取时需要分页爬
        num = int(int(max_num) / 5)
        print(num)
        # 起始页begin参数,往后每页加5
        begin = 0
        seq = 0
        while num + 1 > 0:
            query_id_data = {
                'token': token,
                'lang': 'zh_CN',
                'f': 'json',
                'ajax': '1',
                'random': random.random(),
                'action': 'list_ex',
                'begin': '{}'.format(str(begin)),
                'count': '5',
                'query': '',
                'fakeid': fakeid,
                'type': '9'
            }
            print('正在翻页:--------------', begin/5)
            time.sleep(8)
    
            # 获取每一页文章的标题和链接地址,并写入本地文本中
            query_fakeid_response = session.get(appmsg_url,cookies=cookies,headers=header,params=query_id_data)
            fakeid_list = query_fakeid_response.json().get('app_msg_list')
            if fakeid_list:
                for item in fakeid_list:
                    content_link = item.get('link')
                    content_title = item.get('title')
                    fileName = ky + '.txt'
                    seq += 1
                    content_body = session.get(content_link).text
                    info = [content_title, content_link, content_body]
                    save(ky,info)
            begin = int(begin)
            begin += 5
    
    # csv head
    def csv_head(ky):
        ky = ky
        head = ['content_title', 'content_link', 'content_body',]
        csvFile = open(fr'{ky}.csv', 'w', newline='', encoding='utf-8-sig')  # 设置newline,否则两行之间会空一行
        writer = csv.writer(csvFile)
        writer.writerow(head)
        csvFile.close()
    
    
    # 存储csv
    def save(ky,info):
        ky = ky
        csvFile = open(fr'{ky}.csv', 'a+', newline='', encoding='utf-8-sig')  # 设置newline,否则两行之间会空一行
        writer = csv.writer(csvFile)
        writer.writerow(info)
        csvFile.close()
    
    if __name__ == '__main__':
        ky = '肯德基'
        login_wechat()
        csv_head(ky)
        get_content(ky)
    
    展开全文
  • 微信公众号采集方案(基于Windows逆向)

    千次阅读 热门讨论 2020-11-02 09:17:37
    目前微信公众号采集基本只有几种特定的方法了 搜狗微信 无法采集历史了,而且搜索也不按时间排序。获取的数据的价值不高,不过可以通过他来获取公众号的biz。 微信公众平台 微信公众平台虽然可采集历史,但限制...

    引言

    目前主流的公众号采集方案只有以下几种方法

    1. 搜狗微信
      无法采集历史了,而且搜索也不按时间排序。获取的数据的价值不高,不过可以通过它来获取公众号的biz。

    2. 微信公众平台
      微信公众平台虽然可采集历史,但限制很大,没抓多少就被封接口了。只适用于少量数据采集,或者配合其他一起使用,毕竟肉少也是肉。

    3. 安卓端微信
      xposed hook微信消息并不难,网上能找到相关的代码和教程。但是网上公开的文章都是基于旧版本的,恰巧的是旧版本微信大部分号都无法正常登陆,一般都会提示当前版本低的问题。而新版本微信已经对xposed有强检测(旧版你用xposed hook微信都不见得会封你,新版直接检测到手机装了xposed就封)。所以关键点是如何过掉xposed检测或者低版本登录限制。这种方法估计也就某部分人掌握着,不会公开的。当然你不是针对微信来过掉检测,直接魔改xposed的话,当我没说

    4. 一些第三方的平台
      有很多第三方的平台会提供一些微信的数据,比如最热文章等。可看需求要不要抓取。

    5. 网页端微信
      基本没啥用,能登上去的都是很老的号了。

    6. Windows端微信和Mac

      • 和安卓端微信一样,微信有Windows客户端和mac。功能其实该有的都有了,所以我们也可以通过hook来获取公众号推送数据。
      • 历史和阅读数可以使用模拟点击加拦截来采集。看使用工具和语言的不同,步骤也有所区别。比如有些人用fiddler拦截到参数,在用参数请求接口获取数据,这人工操作过多,不适合大批量。或者是使用mitmproxy加点击,参数失效就模拟点击在打开一次链接,如果拦截到参数则请求接口获取数据,这比fiddler部署到正式环境方便的多,但是也需要过多的人工操作。
      • 浏览器js注入。将模拟点击这一步简单化。大概就是拦截响应并修改它,加入一些js让他等待一小段时间打开下一个链接,这样就可以一直让浏览器打开链接,在Windows、mac和安卓端都可以实现。不过这些虽然技术简单但实现较繁琐,部署比较麻烦。
      • 逆向打开url:你点击链接打开url不过是调用了一段代码段,那找到这段代码写个dll注入到微信并开一个服务就可以在外部操作微信打开url。技术含量过高,搞爬虫的基本不会,需要找Windows或者mac逆向大佬。这样就可以省略模拟点击和js注入这两个步骤。(已经实现了)
      • mitmproxy还要装证书,写脚本,还要保证一直运行。能不能连这个步骤也省略呢?当然可以,完全可以做到不用拦截工具就获取到历史接口所需的参数。

    插曲

    既然hook Windows能获取到公众号数据,当然也可以弄一个微信自动收发消息机器人。我已经做成了成品软件,代码半开源(涉及公众号的不开源):https://blog.csdn.net/Qwertyuiop2016/article/details/112609920

    正文

    微信的采集难度对刚接触的人来说不算简单,新手基本都是在Windows端模拟点击加拦截,而且模拟点击使用的还都是Python,需要显示器才能正常操作,而且只能操作一个客户端。操作麻烦不说,这样的效率也很低。

    我接触微信采集也有小半年了,研究了很久,甚至找了一些Windows逆向的大佬直接买代码,最终实现了一种还可以接受的采集方法。当然也是针对Windows端微信。

    1. 公众号实时的发文采用hook拦截,如果你真有时间的话,完全可以参考网上的免费教程自己研究,这个相关教程很多,搜PC微信拦截消息hook就行(关键词不要加公众号,有时候技术是互通的,只是因为人的需求而被限制了)。只需要找到接收消息的call。有兴趣的可以看看这个大佬关于微信机器人的文章:https://blog.csdn.net/qq_38474570。

    2. 自动关注和取消关注,有两种实现,第一种:基于逆向rpc调用微信内部代码,需要公众号原始ID(一般gh_开头,和wxid是类似的,可以关注和取消关注)。另一种是用biz拼链接打开公众号主页,模拟点击(只能关注,无法取关)。而且biz关注还会占用一次历史接口,本来一天历史接口大概只有330,关注就会占用一部分,不太合适。

    3. 获取微信已关注公众号列表,也有两种实现,第一种:基于逆向hook相关call,这种方法局限性大,无法实时获取关注列表,因为只有在登录时才会加载全部的公众号。第二种:读取内存(这种数据一般是全局数据,所以可以直接从内存中读取),可以实时读取,一般采用这种方法更合适。

    4. 打开链接(文章链接和公众号主页链接)也有多种方法,比如模拟点击,基于逆向等。试了很久,针对不同情况使用不同的方法,文章链接使用逆向方式打开比较方便。模拟点击一般用于公众号主页获取参数。

    5. 模拟点击需要基于控件句柄的方式(Windows窗口都有自己的句柄,不同微信窗口的句柄也不一样),如果只是基于屏幕坐标的话,不是很准确,当然如果配合ocr使用就更好了(就是有点费CPU)。

    6. 输入url这个步骤其实也可以简化,不需要模拟鼠标或者键盘,直接逆向调用发送消息call,给文件传输助手发消息就行。另外,如何找出最后一条发送的链接我尝试过很多种方法,其实都可行。从屏幕搜图、屏幕ocr到现在的通过窗口句柄遍历元素。前两种成功率虽然也很高,基本不会出错,但是资源消耗较大,所以最后还是使用遍历元素的方式 具体资料请参考微软官方文档:https://docs.microsoft.com/en-us/windows/win32/api/oleacc/nn-oleacc-iaccessible

    所有功能

    • 可实时监控公众号的推送,即公众号新发布的文章。误差在5-10分钟(3.0以上版本更改了推送规则,当收到消息或者微信窗口受到焦点才会主动推送,不然需要隔一段时间向服务器请求一次,所以误差会在5-10分钟,对延迟要求较高的可以使用2.8版本的)

    • 可以不关注采集公众号的所有历史文章

    • 可以采集文章的内容、评论和阅读数等

    • 可以获取到微信关注的公众号列表(只有公众号名称、公众号ID(gh_开头的唯一id)、公众号(类似于微信号)等,不包含biz字段)

    • 可自动化关注和取消关注公众号

    • 多开免扫码登录。主要是突破微信只能记住一个账号的登录信息,可以点击登录不需要扫码(并没有用于生产中,实际使用是直接将登录二维码传给控制端)

    • 可以激活登录二维码,并获取登录二维码传给控制端(主要是不用远程每台服务器去登录,通过逆向hook实现)

    • 多开控制不会冲突(比如模拟点击),不考虑封号的话无限多开也没问题

    • 心跳检测:微信发送消息的接口也逆向了,用于心跳检测。即用你的微信发送指定消息到服务器微信,服务器通过逆向的接口回复你,用于判断微信和采集程序是否正常运行 已废弃,后面都是采用http接口操作

    • 登录状态检测:有时候微信会莫名的退出登录,所以加了这个

    • 版本的话,支持2.8.0.121和3.1.0.41,目前在更新3.2.1.154

    其他

    技术太复杂学不会怎么办?我已经将所有功能封装成exe,只需要操作界面就可以采集微信文章(需要懂得基础的东西,比如json和网页解析),解析需要你自己写,因为我不知道你需要哪些字段。如果软件不满足你的要求,你也可以找我单独定制一款。另外,如果需要自己二次封装扩展功能的话,可以提供代码和指导,如果只是想要数据的话也可以合作。

    演示

    监控推送(图中监控账号就是我的,欢迎添加交流)

    程序中监控是指要监控哪个微信好友的消息,当收到该好友指定格式消息时,开启采集程序采集相应内容。设置是设置邮箱发送的一些信息,当微信意外退出登录时会发邮件通知。
    在这里插入图片描述

    Windows版本

    家用电脑:Windows7、window10
    服务器:WinServer2012、winserver2016

    其他未测试的并不是不能用,目前发现不能用的版本是Windows8,有些必须的软件装不上,无法成功注入dll

    接口文档

    这是目前的软件已经实现的功能,软件通过http接口控制

    https://www.showdoc.com.cn/1353409027945629

    温馨提示

    需要软件的请联系上面图片中的微信。如果你不是工作需要,只是想学技术的话,请勿打扰。当然,有钱可以随意。

    展开全文
  • 详细介绍了采集架构、手机号购买注意事项、微信注册注意事项、微信号养号注意事项、公众号采集方式,以及采集过程中遇到的问题等。 1.2 整体架构 微信数据采集主要分为四个阶段: 一、采集准备阶段:手机、手机号...

    ​1 整体概述

    1.1 编写目的

    本文主要用于描述微信采集过程中,各流程节点的解决方案。详细介绍了采集架构、手机号购买注意事项、微信注册注意事项、微信号养号注意事项、公众号采集方式,以及采集过程中遇到的问题等。

    1.2 整体架构

    微信数据采集主要分为四个阶段:

    一、采集准备阶段:手机、手机号、XPosed插件、手机支架、HUB集线器、智能插座等;

    二、公众号处理阶段:公众号收集、公众号添加、公众号管理等;

    三、文章采集阶段:文章链接URL获取、解析、正文分布式采集等;

    四、数据存储阶段:文章URL数据、文章正文数据等。

    大致框架如下图1-1所示: 

    2 资源准备

    微信采集主要需要手机和手机号,但由于需要大批量采集,手机的统一管理尤为重要。所以,同时需要手机支架、HUB集线器及智能插座等辅助设备,同时需要一个6.5~7.8平方米的空间。下面是对各个设备的配置等作以详细的说明。

    2.1 手机购买

    由于使用XPosed插件进行采集,所以对手机本身本身硬件要求较高,为了保证采集正常,手机不出现卡死、假死等现象,需要手机内存最低2G,操作系统版本要求为Android 5.X及以上版本。同时,为了降低充电的次数,减少电池损耗,尽量选择待机长的机型。综合以上几个因素,手机每台费用在400-600元之间。

    注意事项:

    最好购买有“永不锁屏”设置的手机,因为在锁屏状态下无法接收到微信公众号自动推送的信息。

    2.2 号码购买

    手机号购买注意事项:

    1. 一定要用4G网络,最好用电信号的。
    
    2. 注册手机号不能连号,相邻手机号码之差的绝对值至少大于2000,可相同号段号码不同时间注册降低封号风险。
    
    3. 号码需要不同号段(号码前3位和前7位随机获取),比如:不能全是153的号码,需要153、152、154的都有,前7位举例:1531002***、1531003***,不能全是1531001***的号码
    
    4. 手机号码,不要选 170、 171、149这个些虚拟号段,选传统号段 130、137这些,手机号码最好不要挨着,如果挨着,也没关系。
    
    5. 不要在市面上去买什么免实名卡,0 月租卡,大部分是骗子或者无法长期使用。 
    
    6. 建议买实名电话卡,一个身份证在一家电信业者可办理5卡。
    

    注意事项:

    也可以直接购买流量卡。但是如果微信异常或封号,解封没有手机号就比较麻烦了。

    2.3 手机支架

    由于微信采集需要使用大量的手机,且手机需要长时间处于非锁屏状态,需要长时间充电、散热、封号处理等。所以,手机的统一管理就显得尤为重要。如下图2-1所示(费用782元左右),需要特定的支架,用于安放手机,方便手机的管理、充电、微信号异常(封号)处理等。

    图 2-1

    2.4 HUB集线器

    由于整体采集使用的手机较多,每个手机通过独立的插座转接头的方式进行充电、USB链接等比较麻烦,不易于管理。所以,需要使用HUB集线器进行统一管理,如下图2-2、2-3所示,目前,市场上20个USB口的HUB大概在250-400元;30至32个USB口的HUB在400~550元  图 2-2
     图 2-3

    2.5 智能插座

    由于采集使用的手机较低端,硬件质量较差,电池使用时间过长或者长期充电,容易导致手机电池鼓包,存在较大的安全隐患。所以,使用智能插座可以在每周的固定时间,统一给手机充电N小时,然后自动断电,依次循环往复。如下图2-3所示。其中智能插座的费用大概在:50~150元之间。  图 2-4

    2.6 人员需求

    需要一名运维人员(可为实习生)专门负责采集监控、手机监控、微信号监控、微信号解封等。

    3 公众号采集

    3.1 监测范围

    根据目前了解到的市面上微信采集情况,一个比较完善微信采集平台,每天需要处理的大概任务量如下所示:

    ① 每天活跃的公众号数:45-50万/天
    
    ② 每天的文章总量:90-110万篇/天
    
    ③ 每天的点赞阅读数:30万次/天
    
    ④ 每天的评论总数:30万条/天
    
    ⑤ 每天新增公众号总数:5000个/天
    

    每个微信号最多只能关注1000个公众号。所以,需要450~500个微信号。微信一般的封号概率在20%左右,为了保证采集的稳定性,需要多出100个左右的微信号作为备用。

    3.2 采集方式

    3.2.1 目前情况

    目前微信采集主要有以下三种方式:

    (一)通过微信PC版采集,在电脑正常登陆微信PC版后,通过模拟鼠标键盘操作的方式来进行采集。该方式硬件投入较大。
    
    (二)通过微信网页版采集,直接调用程序扫码登录微信网页版,登录后,微信关注的微信公众号,有新的信息推送到微信时,程序会自动获取推送信息。该方式下微信连接容易中断,无法保证采集的稳定性。
    
    (三)直接通过VirtualXposed监控微信。这种方式是程序直接装在手机上,自动拦截推送的信息。通过分析拦截的数据包,解析出有用的数据。该方式成本相对较低,且稳定性较好。
    

    经过各方面比对,最终选取第三种方式,也就是直接通过VirtualXposed监控微信APP发出和接收的所有请求数据包,对其进行解析,分析出符合要求的文章链接。

    3.2.2 备用方案

    由于使用VirtualXposed拦截微信推送信息的方式,会对微信客户端进行篡

    改,腾讯有可能升级技术,导致VirtualXposed插件无法再使用。或者,腾讯能通过技术准确的检测手机是否安装了VirtualXposed插件,从而大量封号,导致采集无法稳定进行。目前了解到的可行的备用方案有以下几种方式:

    (一)使用3.2.1中的第二种方式。该种方式需要微信号在2017年10月份以前注册,否则无法登陆网页版;
    
    (二)使用AnyProxy抓包的方式。该种方式对技术要求较高,目前尚未进行详细的测试。
    

    3.3 采集流程

    微信采集整体流程如下图3-1所示:

     图 3-1

    其中主要分为三部分:

    1) 公众号的收集与添加;
    
    2) 文章URL获取与解析;
    
    3) 正文分布式采集;
    

    3.3.1 公众号收集与添加

    公众号收集可以通过以下步骤进行处理:

    1) 遍历ES中八友历史数据,解析文章正文中存在的公众号信息,并保存数据;
    
    2) 根据项目关键词,通过搜狗微信公众号搜索,进行搜索解析并保存入库;
    
    3) 特殊需求的公众号由各个项目自行提供;
    

    微信公众号添加详见4.3节。

    3.3.2 文章URL获取与解析

    微信文章URL处理流程如下图3-2所示:  图 3-2

    3.3.3 正文采集

    文章正文处理流程如下图3-3所示: 3-3.png 图 3-3

    3.4 数据存储

    微信采集过程中的数据存储主要分为三块,一是微信号和公众号的存储;二是公众号文章列表的存储;三是文章正文信息的存储。各个模块的存储详见下述介绍。

    3.4.1 微信号存储

    3.4.2 公众号存储

    3.4.3 文章URL存储

    在每个微信关注的公众号推送文章后,通过手机中安装的VirtualXposed插件,获取接收到的数据包,然后把数据包+手机号,一同发送到Redis接口,接口对数据包进行解析,把文章URL数据存放到Redis集群中。

    根据八友微信接口每日的数据量分析,微信全量采集时需要处理的比较活跃的公众号在40~50万个,每天文章量在80~120万左右。为了便于管理,计划在Redis集群中,每天生成一个hash类型的缓存表,表名格式为:WeChat_yyyyMMdd,其中数据格式为key=URL,value=当前添加时间。如下图3-4所示 3-4.png 图 3-4

    3.4.4 采集历史记录存储

    微信文章通过分布式方式进行,每个采集脚本请求Redis接口服务,获取一定量的文章URL,然后采集正文,推送到kafka中。同时,请求过的URL信息,Redis接口会把信息从WeChat_yyyyMMdd缓存中删除,并保存到采集历史缓存中。hash类型的缓存表表名格式为:WeChat_History_yyyyMMdd,如下图3-2所示。其中key=URL,value=请求时的当前系统时间。如下图3-5所示 3-5.png 图 3-5

    3.5 采集监控

    整个采集流程中需要监控的节点主要为:XPosed插件;Redis接口服务接收和解析、入库;正文采集(源码获取、解析,kafka推送)。具体处理如下:

    3.5.1 XPosed监控

    主要分为两部分,一是XPosed插件自身的监控,防止长时间运行导致死机等;二是XPosed数据包发送。

    XPosed插件:自身缺陷机长时间运行,导致的死机等现象,目前尚未找到好的处理方式,只能通过重启插件或手机;

    XPosed数据包:数据包异常主要体现在调用Redis集群接口服务时,需要在接口服务异常的情况下,把获取到的数据推送到数据库或写到文件里,当接口服务正常时重新发送。

    3.5.2 Redis接口服务监控

    主要监控XPosed数据包解析和保存另两个步骤,在出现异常时把数据写到本地文件,待正常时重新进行二次处理。

    3.5.3 正文采集监控

    正文采集监控点主要包括:已采集URL记录、正文源码下载、正文解析,以及信息推送kafka等四部分。

    ① 已采集URL记录在历史信息表中,保留一个月,用于对采集异常的追溯;
    
    ② 正文源码下载:记录请求状态码;
    
    ③ 正文解析:记录解析状态;0:成功;1:失败;
    
    ④ 信息推送:推送异常数据保存在本地文件,待服务正常时进行二次推送。如果一条信息推送三次均未成功,则表示推送失败,同时删除内容。
    

    同时,需要监控服务器IP被封的情况;

    3.5.4 新增公众号监控

    目前有些网站有公众号的搜索功能,前期可以使用项目相关的关键词在这些网站上进行搜索,获取部分新注册的公众号。搜索平台如下表3-1:

    搜狗微信公众号搜索 http://weixin.sogou.com/weixin?type=1&query=%E9%93%B6%E8%A1%8C&ie=utf8&s_from=input&sug=y&sug_type=

    推信网微信公众号推荐 http://www.tuixinwang.cn/so.aspx?wd=%e9%87%91%e8%9e%8d&t=weixin&p=16

    聚微信 https://www.juweixin.com/weixin/index/0/1?a=1&per_page=1540

    4 采集运维管理

    微信公众号数据的采集运维工作,主要体现在微信号的注册、养号、解封等工作上,至于微信文章的采集,基于现有的服务器,使用分布式可以较容易的进行处理。在微信号前期注册和养号期间,计划分配到数据管理中心各人员,作为一个KPI加分指标。由各人员在家中或者上下班路上,进行微信号注册、养号(发朋友圈、点赞、聊天)等。

    4.1 微信注册

    由于微信号的监管逐步加强,新注册的微信号被封的概率较大,所以微信号在注册时需要追寻一定的规则,具体注意事项如下:

    ① 注册请用官微,不要用那些多开软件注册
    
    ② 使用4G网络,千万不要用wifi,不要开GPS。同一个Wifi或GPS多个微信号注册,相当容易被封号的。
    
    ③ 每个手机必须提前存3-5个手机号进去,注册成功的时候,可以直接加上微信好友
    
    ④ 选择不同位置注册,可使用不同出行方式(公交、地铁、步行),每次注册的距离大于1.5km,每次注册间隔时间大于10分钟,最好分开时间段注册,尽量一批号不要是同一天,最好是分散到 3-5 天注册完成。
    
    ⑤ 注册时如果5分钟之内收不到验证码,先暂停该号码注册,不要频繁发送验证码
    
    ⑥ 随意关注几个公众号(搜索微信安全中心、京东、爱奇艺搞笑等公众账号)
    
    ⑦ 注册后一定先自己任意使用微信,之后注册其他号完成后也要使用一下之前注册的微信
    
    ⑧ 注册之后不能将手机关闭
    
    ⑨ 新微信号注册,密码不要一样。建议采用:相同字符+手机号的形式,也比较容易记。
    
    ⑩ 个人资料的地区一定不要填写,因为一点开就开始获取位置了,这个记录宁可不让微信知道。个人资料不要一次性全部填完,每天填一点,分批填写,可以增加活跃的权重。
    
    ⑪  设置头像,注意,头像图片必须每张都不一样,如果一定需要设置同样的头像,请通过制图软件修改图片的大小,亮度等,另存成不同的图片,这样对于微信系统来说,可以绕过一定的检测。
    
    ⑫ 名字最好多个号都不一样 。
    

    注意事项:

    现在有专门卖微信号,买回来以后就可以使用,不过为了安全起见,还是建议登录一周,期间发一些朋友圈,或加一些微信,每天随便聊几句,这样可以降低异常概率

    4.3 公众号添加

    由于每个微信号每天最多只能关注40-50个公众号,同时为了保证微信号的稳定性(不被封号),需要公众号的添加分布在不同时间、不同地点。可以所有采集相关人员参与,同时根据实际情况做出相应的奖罚。

    具体实施步骤如下:

    (1) 根据手机编号,把每一部手机分配到人;
    
    (2) 根据时间节点,合理安排每人每日需要处理的微信号(每天5台 /人)
    
    (3) 通过自动脚本,给每个人当天负责的每个微信号上,通过聊天的方式,给每个微信号发送需要关注的40~50个公众号文章;
    
    (4) 相关人员在办公室(尽量少)、上下班或者家中,添加微信接收到的文章的公众号为关注;
    

    按上述方式,

    每天可以添加公众号:2400~3000个【5(台/人·天)*40~50(公众

    号)*12(总人数)】。40~50万个公众号最快需要123个工作日

    可以通过奖惩的方式,鼓励相关人员进行处理,加快进度。具体如下:

    ① 每周每人需正常关注1200个,每多关注1000个奖励200元。
    
    ② 如果未达到正常关注数量,当月考核降一级。
    

    4.4 微信号解封

    4.4.1 导致封号的情况

    ① 平时微信会封禁的账户类型(诈骗,色情营销,吸粉账号等)。
    
    ② 添加好友过于频繁,尤其是新号,必封!
    
    ③ 微信信息发布中出现累计超过10次的敏感词语
    
    包含:支付宝、银行、银行卡、汇款、打款、打钱、帐号、帐户、转帐、网银、多少钱、怎么卖、价格”会被封号,或提醒账号有风险(解决方案:信息发布中,不要包含有和钱有关的字语)
    
    ④ 微信发送的内容被好友举报。 一般是2-5人的举报就会封号。
    
    ⑤ 频繁更换账号登陆,或是同一个账号频繁在不同的手机上登陆。
    
    ⑥ 传播色情,暴利,反动,辱骂、QQ号码、手机号码、广告类网址等信息,被发现就会封号
    
    ⑦ 手机上安装了 Xposed 、Magisk 框架(激活或者未激活)的用户。
    
    ⑧ 一部分只 ROOT 手机的用户(存疑)和使用越狱后 iOS 的用户。
    
    ⑨ 使用手机自带/第三方的微信分身功能同时使用多个微信账户。
    
    ⑩ 少部分什么都没装无辜躺枪的 Play 商店版微信用户。
    
    ⑪ 在多开上注册的微信账号。
    
    ⑫ 在聊天过程中频繁使用一些敏感词汇(如:转账、付款、色情等词)。
    

    4.4.2 微信号解封

    ① 永久封号的,可以注销手机号重新申请;
    
    ② 临时封号,使用微信的自助解封功能进行处理;
    

    4.5 采集部署管理

    由于微信采集需要大批量的手机作为支撑。为了保证采集的稳定性,以及手机的安全性(主要为手机电池),手机的统一管理极为重要。主要通过以下步骤来方便实现统一管理:

    4.5.1 手机支架管理

    购买统一手机支架:要求手机支架稳定、利于手机散热、充电、拿取等;如下图4-1

     图 4-1

    同时对手机支架进行编号:

    ① 对每个手机支架进行编号;
    
    ② 对每个支架的每层进行编号;
    
    ③ 对每层每个手机位进行编号;
    

    4.5.2 手机管理

    主要是对手机进行编号,分为以下几步:

    ① 把购买的手机号添加到信源系统的微信号管理功能下;
    
    ② 手机编号规则:手机支架编号+每层编号+手机位编号+信源系统中手机号ID,作为每个手机的编号;
    

    对手机支架和手机进行编号以后,在每个支架、支架每层、每个手机位上贴上相应的标签;然后,根据规则生成手机编号,贴于手机背部。最终效果类似下图4-2  图 4-2

    4.5.3 手机群控管理 手机群系统,内部是套软件,外部是一台电脑和多个手机,逻辑是模拟手机的人工操作,使用手机自己的流量,不容易被封号。方便养号、解封等操作,群控软件效果如下图4-3、4-4所示:  图 4-3  图 4-4

    手机群控软件(Total Control)报价如下:

    项目									官方价格		
    多设备控制 (10)				¥260/年
    
    多设备控制 (20)				¥540/年
    
    多设备控制 (30)				¥800/年
    
    多设备控制 (50) (40)		¥1400/年 (¥1600/年)
    
    多设备控制 (70) (60)		¥2800/年 (¥3200/年)
    
    多设备控制 (100)				¥4460/年 (¥5000/年)
    
        表 4-1
    

    Total Control有以下主要特点:

    ① 无需手机root;
    
    ② 只适用于Android 4.0以上;
    
    ③ 可将手机自定义分组,分组控制/执行各种任务;
    
    ④ 消息集中管理;
    

    4.6 运维工具开发

    4.6.1 自动聊天工具

    主要用于在公众号添加阶段,给每个手机发送待关注的公众号文章,方便相关人员进行公众号的关注;

    展开全文
  • windows微信公众号采集系统

    千次阅读 热门讨论 2020-11-05 16:53:02
    采集目标: 微信公众号文章的阅读数、在看数、评论数、评论列表,还有微信公众号的账号基本信息。 采集难点: 采集以上数据需要客户端的一些参数,比如 x-wechat-key 、 __biz 、appmsg_token 、pass_ticket等。 ...


    采集目标: 微信公众号文章的阅读数、在看数、评论数、评论列表,还有微信公众号的账号基本信息。

    采集难点: 采集以上数据需要客户端的一些参数,比如 x-wechat-key__bizappmsg_tokenpass_ticket等。

    采集方式: 通过Windows客户端+mitmproxy的方式获取加密参数

    采集流程:
    在这里插入图片描述

    备注: 一个微信号每天只能获取5000-8000篇文章的阅读/点赞/评论等数据

    github: https://github.com/lixi5338619/weixin-spider


    环境配置

    1. mitmproxy安装:

    在python3下直接使用pip进行安装,如果下载缓慢需要换源下载。

    pip install mitmproxy==4.0.4 --use-feature=2020-resolver
    

    安装完成之后,在cmd命令行中输入 mitmdump ,默认是8080端口。

    mitmdump
    

    启动成功后,下载mitm证书:访问 http://mitm.it/
    点击windows,下载安装。

    如果网页显示 If you can see this, traffic is not passing through mitmproxy。
    按照第二步设置windows本地代理后再次安装。
    在这里插入图片描述

    2. windows本地代理:

    windows10本地: 设置 ==> 网络 ==> 代理 ==> 手动设置代理 中打开使用代理并将IP地址修改为127.0.0.1 端口修改为默认8080或修改后的端口。 (记得点击保存)
    在这里插入图片描述

    3. 数据库

    mysql: 下载完成之后启动服务,修改项目settings配置文件,创建数据库weixin_spider,字符集utf8mb4。

    create database weixin_spider  DEFAULT CHARACTER SET utf8mb4;
    

    redis: 下载安装后启动服务,修改项目settings配置文件,以及addons.py文件。

    4. 本地模块

    参照 requirements文件安装 python库,如有遗漏,根据提示自行安装


    准备工作

    首先确定使用环境安装完毕,然后请确保端口(5000、8080)不冲突。

    1、确定mysql 、redis服务开启状态,并可正常连接

    2、运行 webapp\models.py 文件创建数据库表,查看表结构是否生成正确
    在这里插入图片描述
    3、登录微信PC版,找到 文件传输助手 对话框, 双击 文件传输助手 ,文件传输助手会自动弹出单独的对话窗口,把对话框锁死在屏幕左上角,具体位置可能需要根据显示器调整。
    在这里插入图片描述
    4、依次运行py脚本(亦可运行.sh文件代替)

    • 运行 wx_monitor.py ,确定程序是否成功启动
    • 运行 manage.py ,打开网页 http://127.0.0.1:5000/ ,确认成功开启web服务。

    5、开启mitmproxy,确保可以拦截到数据(需要cd到tools目录下)

    cd tools/ && mitmdump -s ./addons.py  --ssl-insecure
    

    在这里插入图片描述


    启动测试

    准备工作完成之后,访问 http://127.0.0.1:5000/ 。
    在这里插入图片描述
    添加公众号,该公众号需要微信已经关注过

    点击启动,即可进行采集。

    在这里插入图片描述


    目录结构

    weixin-spider
    │ manage.py (web服务启动文件)
    │ README.md (项目说明文档)
    │ requirements.txt (项目安装包)
    │ wx_monitor.py (任务调度中心)

    ├─api
    │ │ crawlerapi.py (爬虫文件)
    │ │ init.py
    │ │
    ├─exceptions (异常捕获目录)

    ├─tools
    │ │ addons.py (mitm配置)
    │ │ handle.py (自动化操作)
    │ │ keys.py (redis-keys管理)
    │ │ proxy.py (本地代理)

    ├─webapp
    │ │ models.py (数据库表模型)
    │ │ _init_.py
    │ ├─static (静态资源目录)
    │ ├─templates(html文件目录)
    │ │
    │ ├─wxapp
    │ │ │ selffilter.py (过滤器)
    │ │ │ views.py (视图文件、接口)


    github: https://github.com/lixi5338619/weixin-spider

    在这里插入图片描述

    展开全文
  • 微信公众号文章批量采集工具(微信公众号文章一键采集程序)是一款功能强大的微信公众号文章批量采集工具。微信公众号文章批量采集的软件用久了,想换吗?那就来绿色先锋下载微信公众号文章批量采集工具绿色版使用。...
  • 微信公众号采集,万能Key批量采集

    万次阅读 热门讨论 2018-12-26 19:27:10
    微信采集的重点就是微信公众号相关的数据、主要是发布的文章、其他的话还有点赞阅读以及公众号的账号信息等。下面会大家一一说明如何采集、以及采集的一些限制。 首先是数据来源、主要分为两大块。客户端采集和...
  • 微信公众号采集小爬虫

    千次阅读 2019-03-15 09:48:51
    最近在做一个自己的项目,涉及到需要通过python爬取微信公众号的文章,因为微信独特一些手段,导致无法直接爬取,研究了一些文章大概有了思路,并且网上目前能搜到的方案思路都没啥问题,但是里面的代码因为一些三方...
  • 微信公众号这个自媒体平台无人不知,我们想要采集下载公众号上面的图片和文章,要怎么操作呢?接下来小编要用一个小工具固乔电商图片助手演示一下,我是如何批量保存微信公众号的文章和图片,是怎么样把文章存到WORD...
  • 微信采集的重点就是微信公众号相关的数据、主要是发布的文章、其他的话还有点赞阅读以及公众号的账号信息等。下面会大家一一说明如何采集、以及采集的一些限制。 首先是数据来源、主要分为两大块。客户端采集和搜狗...
  • 采集目标: 微信公众号文章的阅读数、在看数、评论数、评论列表,还有微信公众号的账号基本信息。 采集难点: 采集以上数据需要客户端的一些参数,比如 x-wechat-key 、 __biz 、appmsg_token 、pass_ticket等。 ...
  • 根据搜狗搜索 关键词采集 微信公众号和相应推文 采集策略:深度搜索采集 核心代码: package main; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; ...
  • ★ 一键采集微信公众号所有群发文章,也可通过关键词搜索所有公众号相关文章,支持按时间段采集,内置强大本地数据库,所有搜索到的文章自动永久保存本地; ★ 文章可一键导出Pdf、Word、Excel、txt和Html格式,同时...
  • 最近我需要将一些在微信上优秀的文章收集起来,或加工再利用,或引用到别处,或转发到...打开微信公众号文章搜索导出助手此软件,将刚刚复制好的链接粘贴到下面图片的位置。 第三步,开始采集。打开电脑上的微信文章,
  • 微信公众号采集教程、附详细分析过程

    千次阅读 热门讨论 2019-01-11 20:14:55
    本次主要讲解微信公号下的文章数据如何采集。相信有干过采集的小伙伴对抓包工具应该都比较熟悉,这里我们主要用到fiddler、然后需要一个微信号、采集设备(微信客户端或者手机)。 使用手机的话可以打开wifi功能、...
  • 首先你将需要导出的微信 文章复制到该软件,微信公众号文章搜索导出助手V1.5.8 其次将它粘贴后,进行采集,注意采集的同时,大部分人他是不需要所有的文章都获取微信阅读数,所以先不要勾选那个同步获取阅读数,等你...
  • 主要讲解公号下的数据如何采集
  • 最近不知道大家有没有一键采集阅读数的需求,反正我是遇到了,老板让我把所有发过的文章都给做成表格,一一复制粘贴下来,这样粘贴到猴年马月才能弄...以上就是采集微信公众号文章阅读数的教程呐,是不是非常简单,大家
  • 批量公众号采集
  • 自定义公众号采集 采集指定公众号的历史文章,可以选择采集时间范围(今天,昨天,一周,一月,全部,自定义时间天数) 公众号数量和文章数量都没有限制 定时采集任务 采集方式:自定义公众号,选择分类可以按...
  • 微信公众号数据采集

    2020-10-12 11:15:10
    一、采集公众号文章URL 1.运行环境 1.Webdriver 2.python运行环境 3.cx-oracle 4.lxml 5.注册一个微信公众号 2.采集文章连接 1.配置config.txt 2.启动程序 二、采集文章详细信息 1.配置detail_config.txt...
  • 公众号名称放在一个文本文件中,软件自动轮流查询公众号是否有更新,可以提醒最新的公众号文章,保存文章记录。
  • 在网上能搜索到的公众号文章采集相关的信息来看来看,这是最多、最直接、也是最简单的一种方案。 一般流程是: 搜狗微信搜索入口进行公众号搜索 选取公众号进入公众号历史文章列表 通过文章列表获取文章链接,通过...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 902
精华内容 360
关键字:

公众号采集