微信公众号上的一次爬虫
前段时间,需要在微信上的一个公众号进行登陆、并进行公众号内的操作。这篇文章主要记录通过两种方式进行模拟登陆并操作该公众号,分别为selenium以及requests两种方式。
前期准备工作
1. 利用fiddler进行手机代理的设置
由于手机查看请求不方便,因此利用fiddler进行手机代理的设置,从而在电脑端的fiddler获取到手机所有对外发起的请求,具体设置步骤如下:
1>设置fiddler允许远程计算机连接:
2>下载fiddler证书:
3>在手机端导入证书,步骤为:代理、导入、手动导入,然后设置IP、端口。此时即完成fiddler手机代理的设置。
2. burpsite手机代理的设置
由于fiddler只能截取到请求,但是不能对参数进行修改,因此使用burpsite进行请求的截取以及修改。其中burpsite手机代理的设置只需要设置允许远程计算机连接,并在手机端进行代理的相应IP、端口设置即可。
此时前期工作完成,以上两部是两种方式都需要进行设置的,其中两种代理各种好处,fiddler是为了更清楚地看清公众号操作的每一个请求,从而更好地进行模拟操作;burpsite是为了修改请求的参数,从而发现请求参数中,哪些参数是重要的,并且发现那些参数修改后就可修改了登陆公众号的用户信息(也就是新用户)。
selenium进行模拟登陆操作
1. chrome进行模拟手机网页的设置
chrome是可以设置为手机网页样式的,也就是模拟手机查看网页,具体设置只需要设置两处:
其中上面是设置模拟手机的型号,设置后,也就不用进行user-agent的设置了。
在selenium内设置为:
mobile_emulation = {"deviceName": "Pixel 2 XL",}
options = Options()
options.add_experimental_option("mobileEmulation", mobile_emulation)
# options.add_argument("--proxy-server=http://139.224.233.9:80")
driver = webdriver.Chrome(chrome_options=options)
2. chrome修改cookie插件的设置
chrome修改cookie的插件,我使用的是EditThisCookie,进行下载安装后,可直接对cookie进行修改。
3. 进行cookie的设置
此次进行登陆公众号并进行操作,最重要的也就是cookie,通过burpsite发现,只需要修改请求内的一个参数也就可以成功切换用户,从而进行多次操作,其实也就是cookie的改变。
需要注意的是,cookie同名不同域也需要分别进行设置,slenium设置不同域的cookie的方为:
cookie1 = {'name': '.ASPXAUTH', 'domain': 'xxx','value': 'xxx','httpOnly': False, 'secure': False, 'path': '/'}
cookie2 = {'name': 'JSESSIONID', 'value': 'xxx', 'domain': 'xxx','httpOnly': False, 'secure': False, 'path': '/'}
driver.add_cookie(cookie1)
driver.add_cookie(cookie2)
此时逐步获取模拟点击的元素进行点击、填写的操作即可,同时循环修改cookie的关键参数,就完成了用户地切换,代码实例如下:
# wait = WebDriverWait(driver, 1)
in_activity = wait.until(
EC.presence_of_element_located((By.CSS_SELECTOR, "#enrollBtn > p"))
)
print('print(in_activity.text)' + in_activity.text)
in_activity.click()
unselect_activity = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,"#content > div.even-wrapper > li:nth-child(3) > div > div.img-holder > img")))
unselect_activity.click()
requests进行操作
相对于selenium,此种方法更快,但是编写代码需要更仔细,认真分析fiddler地每一次请求,最好每一次请求都进行模拟,避免缺漏某次请求的cookie设置或返还参数缺漏,导致程序的失败。
通过分析一次完成的操作,在fiddler内进行每一次get、post请求的,在编写代码时,将每次请求都使用requests进行请求,同时循环的将关键参数进行修改,从而完成对用户地切换。在分析地过程中,需要对一些参数进行分析,比如该用户是否已经进行了操作等。
在分析地过程中,关键是需要逐步进行,确认返回的参数是正确的、是成功切换了用户的。
由于需要修改cookie,因此使用到requests的session,此时就需要进行header的设置了(可能每次请求需要的header都不一样)。
程序完善
1. 保存可用用户
为了更快的进行操作,对可用用户、已进行操作的用户进行记录,利用mysql数据库进行记录,同时抽取未操作的用户也是在mysql内抽取。
2. 多线程进行操作
每个程序若单线程进行,就算开了多个程序也比较慢,同时占用内存。进行单程序的多线程设置,需要注意的是如何能避免不会同时抽取到统一用户,实现代码如下:
from multiprocessing.pool import Pool
# 获取所有可用的用户
list = get_id_all(0)[0:max_number]
pool = Pool()
# 将函数、可变的参数参入
pool.map(main,list)
3. 代理的设置
此次操作未进行设置,若公众号对IP访问有限制,可使用代理池进行代理的设置。
个人博客:Loak 正 - 关注人工智能及互联网的个人博客
文章地址:微信公众号上的一次爬虫
微信公众号上的一次爬虫相关推荐
- 为什么我不在微信公众号上写文章
作者: 陈浩 原文: https://coolshell.cn/articles/17391.html 很多朋友问我为什么不在微信公众号上写文章.我都没有直接回答,老实说,我也是扭扭捏捏的,才去开了个 ...
- 工具类产品适合在微信公众号上运营吗?
1. 工具类产品适合在微信公众号上运营吗? 问题描述:如果工具类的产品,主要的核心服务功能搬到微信公众号上运营会有些什么优势和劣势,以及如何在公众号上实现流量变现? 答:微信公众号之前有三种分类:服务 ...
- 时序分解股票数据并部署在微信公众号上
目的 将股票价格进行时序分解,得到趋势图.周期图和误差图.然后放到微信公众号上,让用户输入"002581.SZ"等股票代码,即可自动回复以上的图片. 主要思路 用tushare获得 ...
- CSDN的文章如何快速转移到微信公众号上
简单做个介绍,因为需要同时维护CSDN和微信公众号上的文章.所以就涉及到如何不做重复的工作. 所以这里推荐下我个人刚刚发现的比较好用的一个Chrome上用的一个插件,叫"Markdown N ...
- 微信公众号上部署自己训练的聊天机器人(腾讯云服务器+TensorFlow2.1+Django3.1)
文章目录 前言 1. 模型介绍 1.1 Encoder-Decoder框架 1.2 Attention机制 1.3 代码实现 2. 安装依赖库 3. 模型部署 4. 测试 前言 哈哈,重头戏终于来 ...
- 【安信可A9G专题②】A9G在微信公众号上的定位功能笔记分享;
本系列博客学习由 安信可科技 - 官方博客 技术分享,如有疑问请留言或联系邮箱. 1.A9G环境在windows上搭建并编译,串口打印 Hello GPRS 2.A9G在微信公众号上的定位功能笔记分享 ...
- 在微信公众号上显示指定位置的地图
在微信公众号上显示指定位置的地图 需求:公众号获取用户上报的位置,展示出当前位置的地图 解决方案:通过公众号消息事件存储用户经纬度后,将经纬度作为参数打开腾讯地图一个可以自定义地图标记的url 链接, ...
- 封装微信公众号上传照片方法
1.微信公众号上传照片方法 wxPic.js // 弹出提示消息的组件 import { Toast } from "vant"; // 微信JS-SDK文件,微信开发者官方有 i ...
- Java 微信公众号上传永久素材的方法
用 Java 实现微信公众号上传永久素材,代码如下: /*** 上传其他永久素材(图片素材的上限为5000,其他类型为1000)* @param appid* @param secret* @retu ...
最新文章
- C# 写了个获取本机外网IP发送邮件的服务- 分享。
- 第四次作业 结对编程-黄金点游戏
- 【Linux】时间同步设置+防火墙设置+SELinux设置
- .net通过获取客户端IP地址反查出用户的计算机名
- trie树和后缀树的应用
- VS2010中打开VS2013/VS2012项目
- 2020邮储银行实习面试经验
- cocos2dx[3.x](11)——拖尾渐隐效果MotionStreak
- CloudStack快速安装使用
- 科里奥利质量流量计的4个检定方法
- 谷歌浏览器自带记笔记功能
- idfa码如何查看_小E告诉你:如何快速登录和高效使用华为电子邮件
- 2021年全球圆锥破碎机收入大约1357.4百万美元,预计2028年达到1665.6百万美元
- javascript 编码_我们的1,600小时JavaScript编码课程
- 十进制转换成十六进制小程序(强制转换和移位运算符)
- python中text函数的语法_【01】Python基础语法
- mac 备份android 手机,Mac怎么备份_Windows怎么备份_iOS怎么备份_安卓怎么备份-太平洋IT百科手机版...
- 旅游自助管理信息系统概要设计规格 .
- PMP证书有什么用,考试时间是什么时候啊?
- os_cpu_c.c