前段时间,需要在微信上的一个公众号进行登陆、并进行公众号内的操作。这篇文章主要记录通过两种方式进行模拟登陆并操作该公众号,分别为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 正 - 关注人工智能及互联网的个人博客
文章地址:微信公众号上的一次爬虫

微信公众号上的一次爬虫相关推荐

  1. 为什么我不在微信公众号上写文章

    作者: 陈浩 原文: https://coolshell.cn/articles/17391.html 很多朋友问我为什么不在微信公众号上写文章.我都没有直接回答,老实说,我也是扭扭捏捏的,才去开了个 ...

  2. 工具类产品适合在微信公众号上运营吗?

    1. 工具类产品适合在微信公众号上运营吗? 问题描述:如果工具类的产品,主要的核心服务功能搬到微信公众号上运营会有些什么优势和劣势,以及如何在公众号上实现流量变现? 答:微信公众号之前有三种分类:服务 ...

  3. 时序分解股票数据并部署在微信公众号上

    目的 将股票价格进行时序分解,得到趋势图.周期图和误差图.然后放到微信公众号上,让用户输入"002581.SZ"等股票代码,即可自动回复以上的图片. 主要思路 用tushare获得 ...

  4. CSDN的文章如何快速转移到微信公众号上

    简单做个介绍,因为需要同时维护CSDN和微信公众号上的文章.所以就涉及到如何不做重复的工作. 所以这里推荐下我个人刚刚发现的比较好用的一个Chrome上用的一个插件,叫"Markdown N ...

  5. 微信公众号上部署自己训练的聊天机器人(腾讯云服务器+TensorFlow2.1+Django3.1)

    文章目录 前言 1. 模型介绍 1.1 Encoder-Decoder框架 1.2 Attention机制 1.3 代码实现 2. 安装依赖库 3. 模型部署 4. 测试 前言   哈哈,重头戏终于来 ...

  6. 【安信可A9G专题②】A9G在微信公众号上的定位功能笔记分享;

    本系列博客学习由 安信可科技 - 官方博客 技术分享,如有疑问请留言或联系邮箱. 1.A9G环境在windows上搭建并编译,串口打印 Hello GPRS 2.A9G在微信公众号上的定位功能笔记分享 ...

  7. 在微信公众号上显示指定位置的地图

    在微信公众号上显示指定位置的地图 需求:公众号获取用户上报的位置,展示出当前位置的地图 解决方案:通过公众号消息事件存储用户经纬度后,将经纬度作为参数打开腾讯地图一个可以自定义地图标记的url 链接, ...

  8. 封装微信公众号上传照片方法

    1.微信公众号上传照片方法 wxPic.js // 弹出提示消息的组件 import { Toast } from "vant"; // 微信JS-SDK文件,微信开发者官方有 i ...

  9. Java 微信公众号上传永久素材的方法

    用 Java 实现微信公众号上传永久素材,代码如下: /*** 上传其他永久素材(图片素材的上限为5000,其他类型为1000)* @param appid* @param secret* @retu ...

最新文章

  1. C# 写了个获取本机外网IP发送邮件的服务- 分享。
  2. 第四次作业 结对编程-黄金点游戏
  3. 【Linux】时间同步设置+防火墙设置+SELinux设置
  4. .net通过获取客户端IP地址反查出用户的计算机名
  5. trie树和后缀树的应用
  6. VS2010中打开VS2013/VS2012项目
  7. 2020邮储银行实习面试经验
  8. cocos2dx[3.x](11)——拖尾渐隐效果MotionStreak
  9. CloudStack快速安装使用
  10. 科里奥利质量流量计的4个检定方法
  11. 谷歌浏览器自带记笔记功能
  12. idfa码如何查看_小E告诉你:如何快速登录和高效使用华为电子邮件
  13. 2021年全球圆锥破碎机收入大约1357.4百万美元,预计2028年达到1665.6百万美元
  14. javascript 编码_我们的1,600小时JavaScript编码课程
  15. 十进制转换成十六进制小程序(强制转换和移位运算符)
  16. python中text函数的语法_【01】Python基础语法
  17. mac 备份android 手机,Mac怎么备份_Windows怎么备份_iOS怎么备份_安卓怎么备份-太平洋IT百科手机版...
  18. 旅游自助管理信息系统概要设计规格 .
  19. PMP证书有什么用,考试时间是什么时候啊?
  20. os_cpu_c.c

热门文章

  1. 英语中‘s的几种用法
  2. 小程序开发框架详细介绍
  3. android 远程控制服务,基于Android的远程控制系统
  4. 调整台式机电脑屏幕亮度的方法
  5. 2-opencv增加图片对比度和亮度
  6. 一个初级测试工程师必须知道的功能测试重点
  7. 新版标准日本语初级_第四十课
  8. 微信调整小程序和公众号流量主广告收入分成比例
  9. 苹果手机设置灰度,不沉迷手机
  10. repost 分布式学习