破解C/S架构客户端反爬虫利器(第一步:pyautogui自动化控制鼠标和键盘操作)

我们在抓取数据时,目标网站通常是浏览器网页B/S架构的,当需要爬取客户端C/S架构时就不是那么好抓包了,虽然可以下载网络代理如 Fiddler ,Proxifier,不是每个客户端都可以抓到包的,也许你会通过dnSpy反编译查看源代码,也不一定能够反编译成功,很多是C++写的,你没有学过C++,去看去分析人家的源代码,那有多苦涩是吧。

废话不多说,就简单说一下如何利用pyautogui来获取我们想要的数据吧

PyAutoGUI 中文帮助文档-简介

PyAutoGui是一个跨平台GUI自动化库。

PyAutoGUI是一个Python模块,用于以编程方式控制鼠标和键盘。

PyPutoGUI可以从pip工具安装或从PyPI下载:

https://pypi.python.org/pypi/PyAutoGUI

源代码可在以下网址获得:https://github.com/asweigart/pyautogui

1.简介

目的

PyAutoGUI的目的是为GUI自动化提供跨平台的Python模块。 API的设计尽可能简单,具有合理的默认值。                               

 pyautogui基本用法

1.安装pyautogui

pip install pyautogui -i https://pypi.douban.com/simple/

2.pyautogui常用操作

import pyautogui

# 常用操作--控制鼠标**********

pyautogui.PAUSE = 1  # 调用在执行动作后暂停的秒数
pyautogui.FAILSAFE = True  # 启用自动防故障功能,左上角的坐标为(0,0),将鼠标移到屏幕的左上角,来抛出failSafeException异常

# 判断(x,y)是否在屏幕上
x, y = 180, 180
pyautogui.onScreen(x, y)  # 结果为true

width, height = pyautogui.size()  # 获取屏幕的宽度和高度,等于你屏幕设置的显示分辨率
print(width, height)

currentMouseX, currentMouseY = pyautogui.position()  # 鼠标当前位置。正在执行的脚本,你强行介入,可以加入判断一下,是不是在自动化操作范围内
print(currentMouseX, currentMouseY)

pyautogui.moveTo(250, 250, duration=0.25)  # 鼠标移动到(250,250),移动的速度是0.25

pyautogui.dragTo(200, 400, button='left')  # 按住鼠标左键,把鼠标拖拽到(200, 400)位置
pyautogui.dragTo(300, 400, 2, button='left')  # 按住鼠标左键,用2秒钟把鼠标拖拽到(300, 400)位置
pyautogui.dragRel(0, -60, duration=0.2)   # 按住鼠标左键,用0.2秒钟把鼠标向上拖拽

# pyautogui.click(x=moveToX, y=moveToY, clicks=num_of_clicks, interval=secs_between_clicks, button='left')
# 其中,button属性可以设置成left,middle和right。
pyautogui.click(110, 200, 2, 0.25, button='left')
pyautogui.click(x=100, y=200, duration=2)  # 先移动到(100, 200)再单击
pyautogui.click()  # 鼠标当前位置点击一下
pyautogui.doubleClick()  # 鼠标当前位置左击两下
pyautogui.doubleClick(x=100, y=150, button="left")  # 鼠标在(100,150)位置左击两下
pyautogui.tripleClick()  # 鼠标当前位置左击三下

pyautogui.mouseDown()  # 鼠标左键按下再松开
pyautogui.mouseUp()
pyautogui.mouseDown(button='right')  # 按下鼠标右键
pyautogui.mouseUp(button='right', x=100, y=200)  # 移动到(100, 200)位置,然后松开鼠标右键

# scroll函数控制鼠标滚轮的滚动,amount_to_scroll参数表示滚动的格数。正数则页面向上滚动,负数则向下滚动
# pyautogui.scroll(clicks=amount_to_scroll, x=moveToX, y=moveToY)
pyautogui.scroll(5, 20, 2)
pyautogui.scroll(5)  # 向上滚动5格
pyautogui.scroll(-5)  # 向下滚动5格
pyautogui.scroll(10, x=100, y=100)  # 移动到(100, 100)位置再向上滚动10格


# 常用操作--控制键盘**********

pyautogui.typewrite('Hello world!')  # 输入Hello world!字符串
pyautogui.typewrite('Hello world!', interval=0.25)  # 每次输入间隔0.25秒,输入Hello world!

pyautogui.press('enter')  # 按下并松开(轻敲)回车键
pyautogui.press(['left', 'left', 'left', 'left'])  # 按下并松开(轻敲)四下左方向键
pyautogui.keyDown('ctrl')  # 按下`ctrl`键
pyautogui.keyUp('ctrl')  # 松开`ctrl`键

pyautogui.keyDown('shift')
pyautogui.press('7')
pyautogui.keyUp('shift')  # 输出 & 符号的按键
pyautogui.hotkey('ctrl', 'c')  # 组合按键(Ctrl+C),复制功能,按下并松开'ctrl'和'c'按键
pyautogui.hotkey('ctrl', 'v')  # 组合按键(Ctrl+V),粘贴功能,按下并松开'ctrl'和'v'按键


# 常用操作--弹窗操作**********

pyautogui.alert(text='采集完成!', title='采集提示', button='好的')

# 显示一个简单的带文字、OK和Cancel按钮的消息弹窗,用户点击后返回被点击button的文字,支持自定义数字、文字的列表。
a = pyautogui.confirm(text='', title='', buttons=range(10))  # 10个按键0-9的消息弹窗
print(a)  # 输出结果为你选的数字
# 可以输入的消息弹窗,带OK和Cancel按钮。用户点击OK按钮返回输入的文字,点击Cancel按钮返回None。
pyautogui.prompt(text='', title='请输入账号', default='')
# 样式同prompt(),用于输入密码,消息用*表示。带OK和Cancel按钮。用户点击OK按钮返回输入的文字,点击Cancel按钮返回None。
pyautogui.password(text='', title='请输入密码', default='', mask='*')


# 常用操作--截图操作**********

im = pyautogui.screenshot(r'my_screenshot.png')  # 截全屏并设置保存图片的位置和名称
print(im)  # 打印图片的属性

# 不截全屏,截取区域图片。截取区域region参数为:左上角X、Y坐标值、宽度和高度
pyautogui.screenshot(r'region_screenshot.png', region=(0, 0, 300, 500))

# 获得文件图片在现在的屏幕上面的坐标,返回的是一个元组(top, left, width, height)
# 如果截图没找到,pyautogui.locateOnScreen()函数返回None
a = pyautogui.locateOnScreen(r'region_screenshot.png')
if a:
    print("找到点击按钮")
else:
    print("未找到点击按钮")
# 当需要被识别的图片,出现多个,可以用一下来识别过滤掉
# 匹配屏幕所有与目标图片的对象,可以用for循环和list()输出
for pos in pyautogui.locateAllOnScreen(r'region_screenshot.png'):
    print(pos)
# 打印结果为Box(left=0, top=0, width=300, height=500)
a = list(pyautogui.locateAllOnScreen(r'region_screenshot.png'))
print(a)  # 打印结果为[Box(left=0, top=0, width=300, height=500)]


以上就是pyautogui的简单操作,利用pyautogui这些方法来控制我们需要爬取的c/s架构客户端,能够正常的自动化操作,这是第一步操作 ,第二步操作采用AI技术来提取数据,完成数据采集。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值