Python Selenium 实现 CSDN 自动登录与滑动验证码处理

山海之间
山海之间
发布时间:2026-10-15 | 6人浏览过
原创

本文介绍如何使用 Python 的 Selenium 库结合 Chrome 驱动,实现 CSDN 网站的自动登录流程。内容涵盖定位账号密码输入框、点击登录按钮触发验证,以及通过 ActionChains 模拟鼠标拖拽动作处理滑动验证码。文中提供了完整的代码示例及针对初学者的滑动验证策略建议,帮助读者掌握自动化测试中的常见验证绕过技巧。

环境准备与依赖

实现该功能需要引入 Selenium 库,并确保本地已安装对应版本的 Chrome 浏览器驱动。关于驱动的具体安装步骤此处不再赘述。

CSDN 登录流程模拟

本文以模拟 CSDN 网站的登录过程为例进行演示。

**

登录操作与验证码触发

第一步,访问目标网页,选择用户名和密码登录方式。接着定位用户名和密码的输入框,填入相应信息后点击登录按钮,此时页面会弹出滑动验证条。


 def __init__(self):
 self.url = 'https://passport.csdn.net/login'
 self.browser = webdriver.Chrome()
 

 #获取登录按钮对象 选择 账号密码登录 
 def get_pass_button(self):
 
 button= self.browser.find_element_by_xpath('//*[@id="app"]/div/div/div[1]/div[2]/div[5]/ul/li[2]/a')
 return button
 
 #打开网址,输入用户名。密码
 def open(self,username,password):
 
 self.browser.get(self.url)
 self.get_pass_button().click()

 

视图跳转处理

第二步,页面跳转至登录视图界面。


 self.browser.find_element_by_xpath('//*[@id="all"]').send_keys(username) 
 self.browser.find_element_by_xpath('//*[@id="password-number"]').send_keys(password)

 

滑动验证码处理策略

第三步,处理滑动验证条。


补充说明:个人经验认为,上述通过鼠标事件拖动验证条的方法同样适用于其他类型的滑动验证码。具体策略是将整个滑动区域划分为 3 到 4 等份,编写循环逻辑每次拖动约 1/3 的距离,通常经过 3 到 4 次拖动即可通过验证。这种方法无需像网上部分教程那样获取原图与缺口图进行像素比对,操作更为简便,非常适合初学者使用。此为个人建议,仅供参考。


 # 获取拖拽的滑动验证码块
 # 按钮xpath 
 slideblock = self.browser.find_element_by_xpath('//*[@id="nc_1_n1z"]')
 
 # 鼠标点击滑动块不松开
 ActionChains(self.browser).click_and_hold(slideblock).perform()
 # 将圆球滑至相对起点位置的 右边xx
 ActionChains(self.browser).move_by_offset(xoffset=260, yoffset=0).perform()
 
 time.sleep(10)
 # 放开滑动块
 ActionChains(self.browser).release(slideblock).perform()
 
#  time.sleep(10)

完整代码示例

以下是完整的代码实现:


#coding=utf-8
import time
from selenium import webdriver
from selenium.webdriver import ActionChains

class Login():
 #打开浏览器驱动
 def __init__(self):
 self.url = 'https://passport.csdn.net/login'
 self.browser = webdriver.Chrome()
 #获取登录按钮对象 选择 账号密码登录 
 def get_pass_button(self):
 button= self.browser.find_element_by_xpath('//*[@id="app"]/div/div/div[1]/div[2]/div[5]/ul/li[2]/a')
 return button
 #打开网址,输入用户名。密码
 def open(self,username,password):
 self.browser.get(self.url)
 self.get_pass_button().click()
 self.browser.find_element_by_xpath('//*[@id="all"]').send_keys(username) 
 self.browser.find_element_by_xpath('//*[@id="password-number"]').send_keys(password)
 #调用 open方法,输入用户名。密码,
 #调用 get_geetest_button方法,点击按钮
 def log(self):
 # 输入用户名密码
 self.open('33289317','1111')
 # 点击登录按钮
 self.browser.find_element_by_xpath('//*[@id="app"]/div/div/div[1]/div[2]/div[5]/div/div[6]/div/button').click()
 time.sleep(5)
  # 获取拖拽的滑动验证码块
 # 按钮xpath 
 slideblock = self.browser.find_element_by_xpath('//*[@id="nc_1_n1z"]')
 # 鼠标点击滑动块不松开
 ActionChains(self.browser).click_and_hold(slideblock).perform()
 # 将圆球滑至相对起点位置的 右边xx
 ActionChains(self.browser).move_by_offset(xoffset=260, yoffset=0).perform()
 time.sleep(10)
 # 放开滑动块
 ActionChains(self.browser).release(slideblock).perform()
#  time.sleep(10)
 #关闭浏览器,释放资源
 # self.browser.close()
# 程序主入口
if __name__ == '__main__':
 login = Login()
 login.log()

总结

总结

至此,关于使用 Python 实现自动登录、点击及滑动验证的文章介绍完毕。如需了解更多相关内容,建议搜索本站往期文章或继续浏览后续内容。感谢大家的支持!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表