替代人工操作,模拟浏览器的“行为”


前言:如果你接触到的系统是浏览器的形式打开的话,而且你又是经常跟系统做交互的话,那你千万要继续往下看。对于普通用户而言,可能只需要了解人工的交互就行了,不过作为系统背后的工作人员,不管是做前后端开发、测试、运维或其他,如果都是靠着人工的方式去进行操作,那效率肯定是非常低的。举个最近发生小例子最近我开发了一个自动化python工具就帮运维人员足足节省了手动刷数据两三天的时间。
下面我将讲一下几种模拟浏览器行为的思路供大家选择。(按照 由复杂到简单的顺序)

一、模拟用户的行为

用户跟浏览器直接交互无非就是输入网页地址,输入用户,输入密码,输入验证码,点击某些按钮等等

1.1 如果你喜欢偏极客操作

我建议是通过python来实现,借助一些现有的一些库来实现,废话不多说,直接看操作步骤:

  1. 安装浏览器驱动扩展(一般我是使用Chrome浏览器),这里需要注意使用对应浏览器版本的扩展 → chrome扩展下载地址

  2. 下载后解压,将chromedriver.exe复制到python目录下的Scripts文件夹内这样就可以直接使用,不过我喜欢放在我的浏览器路径下面用的使用再去指定路径,因为有可能电脑安装了多个版本的浏览器这样就做到代码和驱动扩展的解耦

  3. cmd执行:python -m pip install selenium

  4. 编写python代码,这块涉及的内容就需要根据你们所需要的场景和系统的情况进行对应学习和了解,像获取cookie,防止爬虫检测,验证码图片识别等等,这里我简单编搭个架子供大家参考

    from selenium import webdriver
    import os
    
    if __name__ == '__main__':
        chromedriver = "C:/Users/DreamKite/AppData/Local/Google/Chrome/Application/chromedriver"
        os.environ["webdriver.chrome.driver"] = chromedriver
        driver = webdriver.Chrome(chromedriver) #模拟打开浏览器
        print('cookies:', driver.get_cookies())
        driver.get("https://www.baidu.com/") #打开网址
        driver.maximize_window() #窗口最大化(无关紧要哈)
        # 做各种找元素、按钮进行点击输入的代码编写~~
        # driver.quit()```
    
    

1.2 如果你还会前端语言

这块就简单了,不过这里可能没法直接跟浏览器交互,需要依附浏览器,不过也问题不大

我们利用浏览器跟系统做交互一般是用到一种动态前端语言,一般是js

这里我简单编搭个架子供大家参考(自动填写密码进行登录)

javascript:(function() {
var username = document.getElementById("username");
var pwd = document.getElementById("value");
if(null == username || null == pwd){
    console.log("no found!!")
    return;
}
username.value = "DreamKite";
pwd.value = "iamapasswd";
var loginButten = document.getElementById("submitId");
loginButten.click();
})();

这里可能有人就在想,这里放在哪里执行,我理解console也是可以的,这种一般我是做成"插件",通过收藏添加书签的方式(网页形式),这样我只要这么轻轻一点我创建的书签,就可以实现自动输入用户密码登录的操作了~
在这里插入图片描述

二、模拟系统的接口1.0

模拟浏览器,其实就利用了前端的代码替代了用户直接跟后端交互,在当前微服务架构比较流行的情况,如果不是涉及非常复杂的前端操作往往我们是可以绕过前台直接跟后台的服务做交互的,我们这里需要用到一点点前端小技巧,也是非常的简单,上操作:

2.1 前端获取跟服务的交互接口

输入网页地址-》F12 -》点击Network-》Fetch/XHR-》F5刷新-》选择跳出来的接口,点击一下这样你就获取到所有该请求的所有信息

如下图:
在这里插入图片描述

2.2 下载一个postman的工具软件

比较常规的操作就是新建一个调用请求,然后输入url/header/body,选择接口类型,部分安全要求比较高的还需要进行证书、秘钥的导入(在File→Settings→Certificates),就这么简单

这里需要讲一下为什么使用postman软件而不是用浏览器呢,因为postman的操作更加灵活,而且还能diy(例如加载某个json文件进行接口调用,需要调用,进行性能测试),而且还做到跟浏览器的解耦

2.3 下面讲授一波骚操作: 复制粘贴大法

Ctrl+C:
在这里插入图片描述

Ctrl+V:
在这里插入图片描述
然后就替代了手动的那些繁琐的操作了,懂的都懂~~

三、模拟系统的接口2.0(代码自动生成!!)

因为大部分场景都是涉及到接口调用,因此有种方法能够实现对接口的入参、header这些能够自动化处理,那就不需要写繁琐的代码去做这种无聊的事情了

步骤一: 同2.3的复制操作

步骤二:上链接:https://curlconverter.com/ , 粘贴

然后代码就来了
在这里插入图片描述

上面这种操作非常有效,因为我们通过代码的方式进行可以做到更加灵活,实现更复杂的事情,例如:调用接口获取到的数据重组织去调用另外一个接口等等

个人的话喜欢使用python,因为效率更高,操作也更加灵活~

(以上为DreamKite本人原创,转载请附上原文链接)

以上是我编写开发生活栏目的第一篇博客,后续还会陆续推出旨在能提高“开发幸福感”的博客,欢迎大家关注我和在评论区进行交流~

<think>嗯,用户想了解如何用Python模拟人工点击百度的登录按钮。首先,我得确定他们是想做自动化测试还是其他用途,但可能他们需要自动化登录百度账号。不过,直接模拟点击可能会涉及到反爬机制,得提醒他们注意遵守网站规则。 接下来,可能需要用到的库,比如Selenium或者PyAutoGUI。Selenium更适合网页自动化,而PyAutoGUI是控制鼠标键盘的。但百度登录页面可能有动态元素,比如iframe或者动态ID,这需要定位正确的元素。 然后,步骤大概是这样的:打开浏览器,找到登录按钮,点击它。但百度的登录按钮可能在页面加载后才会出现,可能需要等待。使用WebDriverWait和expected_conditions来等待元素可点击。 还需要考虑选择定位方式,比如ID、XPath或者CSS选择器。检查百度登录按钮的HTML结构,可能发现它在一个iframe里,需要先切换进去。或者,按钮的ID是“TANGRAM__PSP_11__submitButton”,但可能变化,所以需要确认。 另外,登录后可能有验证码,这会增加复杂度。需要提醒用户处理可能的验证码,或者考虑其他登录方式,比如API,但百度可能不提供公开的登录API。 安全问题也很重要,提醒用户不要硬编码用户名密码,使用环境变量或输入方法。还有法律和道德问题,确保用户的操作符合百度服务条款,避免被封禁。 总结步骤:安装Selenium和浏览器驱动,编写脚本打开页面,等待登录按钮出现并点击。处理可能的iframe和动态元素,处理验证码的问题。最后,给出示例代码,并强调注意事项。</think>要使用 Python 模拟人工点击百度登录按钮,可以通过浏览器自动化工具(如 **Selenium**)实现。以下是基本流程和示例代码,但请注意:**自动化操作需遵守网站规则**,避免高频请求或滥用。 --- ### 一、技术原理 1. **Selenium**:模拟浏览器操作,定位页面元素并触发点击事件。 2. **元素定位**:通过 HTML 元素的 ID、XPath 或 CSS 选择器找到登录按钮。 3. **等待机制**:确保页面加载完成后再操作元素,避免因延迟导致失败。 --- ### 二、实现步骤 #### 1. 安装依赖库 ```bash pip install selenium # 还需下载对应浏览器驱动(如 ChromeDriver) ``` #### 2. 示例代码 ```python from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 初始化浏览器(以 Chrome 为例) driver = webdriver.Chrome(executable_path='你的Chrome驱动路径') driver.get("https://www.baidu.com") try: # 等待并点击“登录”按钮(首页的登录入口) login_entry = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.ID, "s-top-loginbtn")) ) login_entry.click() # 切换到登录弹窗的 iframe(如果有) # 注意:百度登录框可能在动态加载的 iframe 中,需检查实际页面结构 # 输入用户名和密码(假设已定位到输入框) # username = driver.find_element(By.ID, "TANGRAM__PSP_11__userName") # password = driver.find_element(By.ID, "TANGRAM__PSP_11__password") # username.send_keys("你的账号") # password.send_keys("你的密码") # 定位并点击登录按钮(示例定位方式,需根据实际页面调整) submit_button = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.ID, "TANGRAM__PSP_11__submit")) ) submit_button.click() except Exception as e: print("操作失败:", e) finally: # driver.quit() # 关闭浏览器 pass ``` --- ### 三、关键注意事项 1. **反爬机制**:百度可能有动态 ID、验证码或行为检测,直接操作可能被拦截。 2. **元素定位**:需通过开发者工具(F12)分析页面结构,确保定位准确。 - 使用 `By.ID`、`By.XPATH` 或 `By.CSS_SELECTOR`。 3. **等待策略**:使用 `WebDriverWait` 避免因网络延迟导致元素未加载。 4. **账号安全**:避免在代码中明文存储账号密码,可通过输入或环境变量获取。 --- ### 四、替代方案 如果遇到反爬限制,可尝试: 1. **PyAutoGUI**:通过屏幕坐标控制鼠标点击(依赖界面布局,可靠性低)。 2. **API 请求**:分析登录接口直接发送 POST 请求(需处理加密参数,难度较高)。 --- ### 五、法律与道德提醒 - **遵守规则**:确保你的操作符合百度《服务协议》,勿用于爬虫或恶意行为。 - **风险提示**:频繁自动化操作可能导致 IP 或账号被封禁。 如果需要更具体的实现细节,建议进一步分析目标页面的 HTML 结构和网络请求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dream_Kite

你的鼓励,是我不断创作的动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值