python + selenium 爬淘宝登录

2023-11-07

淘宝的反爬虫机制如果更强大那么该文章方法也没用了,记录于2023.08.07。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver import ActionChains
from selenium.webdriver import ChromeOptions
import datafile

from time import sleep


option = ChromeOptions()
option.add_argument('--start-maximized')#最大化窗口
option.add_experimental_option('excludeSwitches',['enable-automation'])#禁用自动化栏
option.add_experimental_option('useAutomationExtension', False)#禁用自动化栏的原理:将window.navigator.webdriver改为undefined。


#屏蔽密码提示框
prefs = {
    'credentials_enable_service' : False,'profile.password_manager_enabled' : False
}
option.add_experimental_option('prefs',prefs)

#反爬虫特征处理
option.add_argument('--disable-blink-features=AutomationControlled')
driver = webdriver.Chrome(options=option)
driver.get('https://login.taobao.com/member/login.jhtml?redirectURL=http%3A%2F%2Fi.taobao.com%2Fmy_taobao.htm%3Fspm%3Da21bo.jianhua.754894437.1.5af92a89zyJDZq%26pm_id%3D1501036000a02c5c3739')


action = ActionChains(driver)

username = driver.find_element(By.XPATH,'//*[@id="fm-login-id"]')
username.clear()
username.send_keys(datafile.username)
password = driver.find_element(By.XPATH,'//*[@id="fm-login-password"]')
password.clear()
password.send_keys(datafile.password)
login_button = driver.find_element(By.XPATH,'//*[@id="login-form"]/div[4]/button')
login_button.click()
sleep(5)

代码解释:

1.add_experimental_option()方法

add_experimental_option 方法向 ChromeOptions 中添加一个实验性选项。具体来说,它添加了一个名为 'excludeSwitches' 的选项,并将其值设置为 ['enable-automation'],用于禁用自动化标记。

Chrome 浏览器在运行时通常会检测自动化程序(例如 Selenium)的存在,并通过 enable-automation 这个标记来判断是否由自动化控制。通过禁用这个标记,你可以尝试规避网站的一些反自动化措施,以更好地模拟真实用户的行为。

需要注意的是,excludeSwitches 是一个实验性选项,可能会在未来的 Chrome 版本中被删除或更改。因此,使用该选项时,你需要关注 Selenium 和 Chrome 浏览器版本的兼容性,确保代码的可靠性和稳定性。

2.add_experimental_option()

add_experimental_option 方法向 ChromeOptions 中添加一个实验性选项。具体来说,它添加了一个名为 'useAutomationExtension' 的选项,并将其值设置为 False,用于禁用自动化扩展。

在过去,Selenium 通过自动化扩展与浏览器进行交互,但某些网站可能会检测这种扩展的存在,从而发现自动化测试或爬虫行为。通过禁用这个自动化扩展,你可以尝试规避网站的一些反自动化措施,增加你的自动化脚本的稳定性和安全性。

与之前提到的 excludeSwitches 类似,useAutomationExtension 也是一个实验性选项,可能会在未来的 Chrome 版本中被删除或更改。因此,同样需要注意 Selenium 和 Chrome 浏览器版本的兼容性。

综合来说,这两行代码的目的是为了优化 Selenium 自动化脚本,避免被网站检测到使用了自动化工具,从而增加自动化测试和网页爬取的成功率。

3.

prefs = {
    'credentials_enable_service' : False,'profile.password_manager_enabled' : False
}
option.add_experimental_option('prefs',prefs)

这部分代码使用了 add_experimental_option 方法来向 ChromeOptions 中添加一个实验性选项。具体来说,它添加了一个名为 'prefs' 的选项,并将其值设置为一个包含两个键值对的字典 prefs

这个字典 prefs 包含两个键值对:

  1. 'credentials_enable_service': False: 这个键值对用于禁用 Chrome 浏览器的凭据服务,也就是浏览器中的保存密码功能。将其设置为 False 可以防止 Chrome 浏览器保存和自动填充密码,以增加安全性。

  2. 'profile.password_manager_enabled': False: 这个键值对用于禁用 Chrome 浏览器的密码管理器功能。将其设置为 False 可以阻止 Chrome 浏览器询问是否保存密码,同样也是为了增强安全性。

通过向 ChromeOptions 中添加这个实验性选项,你的自动化脚本将在启动 Chrome 浏览器时应用这些特定的偏好设置,以提高安全性并避免在自动化过程中处理密码相关的提示。

需要注意的是,prefs 是一个实验性选项,可能会在未来的 Chrome 版本中被删除或更改。因此,同样需要注意 Selenium 和 Chrome 浏览器版本的兼容性。

4.option.add_argument('--disable-blink-features=AutomationControlled')

这行代码是将 --disable-blink-features=AutomationControlled 参数添加到 ChromeOptions 中。这个参数的作用是禁用 Chrome 浏览器中与自动化控制相关的特性,通常是为了规避某些网站对自动化测试或爬虫的检测。

在过去,Chrome 浏览器中的一些 Blink 引擎特性(也称为 Blink Features)可以被网站用来检测是否由自动化控制。通过使用 --disable-blink-features=AutomationControlled 参数,你可以禁用这些与自动化相关的特性,从而避免被网站识别为自动化程序。

需要注意的是,--disable-blink-features=AutomationControlled 参数也是一个实验性选项,可能会在未来的 Chrome 版本中被删除或更改。因此,使用该参数时,你需要关注 Selenium 和 Chrome 浏览器版本的兼容性。

综合来说,这行代码的作用是增加 Selenium 自动化测试或网页爬取的安全性,使其更隐蔽地模拟真实用户的行为。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python + selenium 爬淘宝登录 的相关文章

  • 通过 Scrapy 抓取 Google Analytics

    我一直在尝试使用 Scrapy 从 Google Analytics 获取一些数据 尽管我是一个完全的 Python 新手 但我已经取得了一些进展 我现在可以通过 Scrapy 登录 Google Analytics 但我需要发出 AJAX
  • Python 的键盘中断不会中止 Rust 函数 (PyO3)

    我有一个使用 PyO3 用 Rust 编写的 Python 库 它涉及一些昂贵的计算 单个函数调用最多需要 10 分钟 从 Python 调用时如何中止执行 Ctrl C 好像只有执行结束后才会处理 所以本质上没什么用 最小可重现示例 Ca
  • 将 saxon 与 python 结合使用

    我需要使用 python 处理 XSLT 目前我正在使用仅支持 XSLT 1 的 lxml 现在我需要处理 XSLT 2 有没有办法将 saxon XSLT 处理器与 python 一起使用 有两种可能的方法 设置一个 HTTP 服务 接受
  • 如何在flask中使用g.user全局

    据我了解 Flask 中的 g 变量 它应该为我提供一个全局位置来存储数据 例如登录后保存当前用户 它是否正确 我希望我的导航在登录后在整个网站上显示我的用户名 我的观点包含 from Flask import g among other
  • 使用带有关键字参数的 map() 函数

    这是我尝试使用的循环map功能于 volume ids 1 2 3 4 5 ip 172 12 13 122 for volume id in volume ids my function volume id ip ip 我有办法做到这一点
  • 从字符串中删除识别的日期

    作为输入 我有几个包含不同格式日期的字符串 例如 彼得在16 45 我的生日是1990年7月8日 On 7 月 11 日星期六我会回家 I use dateutil parser parse识别字符串中的日期 在下一步中 我想从字符串中删除
  • 以编程方式停止Python脚本的执行? [复制]

    这个问题在这里已经有答案了 是否可以使用命令在任意行停止执行 python 脚本 Like some code quit quit at this point some more code that s not executed sys e
  • 绘制方程

    我正在尝试创建一个函数 它将绘制我告诉它的任何公式 import numpy as np import matplotlib pyplot as plt def graph formula x range x np array x rang
  • 从 Flask 访问 Heroku 变量

    我已经使用以下命令在 Heroku 配置中设置了数据库变量 heroku config add server xxx xxx xxx xxx heroku config add user userName heroku config add
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • 如何在Python中对类别进行加权随机抽样

    给定一个元组列表 其中每个元组都包含一个概率和一个项目 我想根据其概率对项目进行采样 例如 给出列表 3 a 4 b 3 c 我想在 40 的时间内对 b 进行采样 在 python 中执行此操作的规范方法是什么 我查看了 random 模
  • 将图像分割成多个网格

    我使用下面的代码将图像分割成网格的 20 个相等的部分 import cv2 im cv2 imread apple jpg im cv2 resize im 1000 500 imgwidth im shape 0 imgheight i
  • 向 Altair 图表添加背景实心填充

    I like Altair a lot for making graphs in Python As a tribute I wanted to regenerate the Economist graph s in Mistakes we
  • 有人用过 Dabo 做过中型项目吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们正处于一个新的 ERP 风格的客户端 服务器应用程序的开始阶段 该应用程序是作为 Python 富客户端开发的 我们目前正在评估 Dabo
  • 使用 Python 绘制 2D 核密度估计

    I would like to plot a 2D kernel density estimation I find the seaborn package very useful here However after searching
  • Scrapy:如何使用元在方法之间传递项目

    我是 scrapy 和 python 的新手 我试图将 parse quotes 中的项目 item author 传递给下一个解析方法 parse bio 我尝试了 request meta 和 response meta 方法 如 sc
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • java.lang.IllegalStateException:驱动程序可执行文件的路径必须由 webdriver.chrome.driver 系统属性设置 - Similiar 不回答

    尝试学习 Selenium 我打开了类似的问题 但似乎没有任何帮助 我的代码 package seleniumPractice import org openqa selenium WebDriver import org openqa s
  • 导入错误:没有名为 site 的模块 - mac

    我已经有这个问题几个月了 每次我想获取一个新的 python 包并使用它时 我都会在终端中收到此错误 ImportError No module named site 我不知道为什么会出现这个错误 实际上 我无法使用任何新软件包 因为每次我

随机推荐

  • 使用kali破解win7密码

    虚拟机密码忘了 修改启动顺序为CD 设置虚拟机光盘镜像为kali ISO 这里用的是kali 2017 2 开启按f2进入kali live 模式 fdisk l 查看磁盘分区 找到win7虚拟机所使用的磁盘 mount dev sda1
  • 以前的windows安装文件可以删除吗_C盘里的文件夹都有何用?可以删除吗?哪些可以删除?...

    众所周知 C盘里的文件不能随意动 特别重要 那么打开C盘 我们可以在根目录下看到一些特定的文件夹 这些文件夹是干嘛用的呢 里面放着什么东西 哪些可以删除呢 今天蝈蝈就来给大家谈谈这个问题 以下是文件夹名及其介绍 不同系统 不同用户C盘里的文
  • 初识冯诺依曼体系结构

    目录 1 冯诺依曼体系结构 2 冯诺依曼体系的原理 3 数据流向 4 冯诺依曼体系的意义 1 冯诺依曼体系结构 我们常见的计算机 如笔记本 我们不常见的计算机 如服务器 大部分都遵守冯诺依曼体系 1 输入单元 包括键盘 鼠标 扫描仪 写板等
  • .NET混淆器Dotfuscator怎样利用切除和水印保护应用程序?

    Dotfuscator是一个 NET的Obfuscator 它提供企业级的应用程序保护 大大降低了盗版 知识产权盗窃和篡改的风险 Dotfuscator的分层混淆 加密 水印 自动失效 防调试 防篡改 报警和防御技术 为世界各地成千上万的应
  • Html小知识点和sublime部分用法

    主要的开发工具 chrome sublime photoshop 二 web标准有三个标准组成 1 结构标准 结构用于对网页元素进行整理和分类 我们主要学的是HTML 2 表现标准 表现用于设置网页的版式 颜色 大小等外观样式 主要指的是c
  • metaq/rocketmq入门学习

    MetaQ是一款分布式 队列模型的消息中间件 基于发布订阅模式 有Push和Pull两种消费方式 支持严格的消息顺序 亿级别的堆积能力 支持消息回溯和多个维度的消息查询 metaq是rocketmq的开源版本 rocketmq的一些文档 h
  • 创建QT项目

    经过了令人苦恼的版本选择 然后又经历了IDE熟悉以及纯C 应用的创建 接下来终于进入了激动人心的时刻 开启第一个QT项目 使用创建向导创建QT项目 文件 gt 新建文件或项目 选择应用 窗口应用 根据自己的实际情况 配置项目名称和项目保存的
  • 画流程图都可以用哪些工具?

    在日常生活中 我相信我们很多人都看到过流程图 对于设计师来说 它还需要涉及流程图来反映用户的旅程和交互方式 那么你知道哪些流行的流程图设计软件呢 作为高级设计师 我今天推荐10款流程图设计软件 你可以和我一起读这篇文章 即时设计 即时设计是
  • uni-app 从零开始第三章:底部 tabBar

    pages json 页面路由 uni app官网 一 新建 home页面 找到pages目录 新增一个home的页面 勾选上同时新建文件夹 新建完成后 pages json 中 会自动添加上刚刚新建的文件信息 二 新增tabBar数据 在
  • Seaborn做图系列①——直方图&箱型图&散点图&变量关系图&回归图&热力图&条形图

    数据可视化系列汇总 Matplotlib可视化 二维图表绘制 折线图 直方图 散点图 条形图 箱形图 Matplotlib可视化 3D绘制散点图 曲面图 折线图 等高线图 Excel数据分析高级技巧 动态图表制作 offset vlooku
  • 26_Java判断String是否以某个字符串开头或结尾

    Java判断String是否以某个字符串开头 String mobile 8618730600000 System out println mobile startsWith 86 输出true System out println mob
  • VSCode+PHPstudy配置PHP开发环境

    第一步 下载安装VSCode编辑器 第二步 下载安装PHPstudy集成环境 第三步 打开PHPstudy 选择界面左侧中的环境 第四步 点击右侧PHP运行环境下面的更多 选择适合的PHP版本 第五步 点击PHPstudy左侧环境 再点击右
  • 基于 Docker 来安装 FastDFS

    文章目录 百度百科 FastDFS 简介 FastDFS 存储策略 上传交互过程 下载交互过程 FastDFS的文件同步 FastDFS 为什么要结合 Nginx 其他资源 FastDFS 安装 环境准备 创建工作目录 docker com
  • Qt 自定义颜色下拉控件

    效果 其实 在这里之前看了许多自定义颜色控件 有的是采用继承QPushButton 点击后 直接弹出 QColorDialog 然后重写 paintEvent 函数 绘制背景为选中的颜色 但是 没有下拉选择颜色的感觉 也有的继承 QComb
  • 微信小程序实战之实现富文本编辑器

    前言 这是我参加掘金启航计划的第三篇文章 这次总结的是实现一个简单的富文本编辑器 相信阅读文章后 观众老爷们 能够实现富文本编辑器 在微信小程序中发布自己的文章 希望观众老爷们多多支持 1 实现效果 实现的效果如下图 1 文本加粗 斜体 下
  • AIX 6.1环境 yum的安装方法

    smit使用方法介绍 因为后面会用到 所以先介绍一下smit的使用方法 输入smitty installp或smitty install 选择Install and Update Software 选择Install Software 在I
  • java打印日志时,如何对字段进行脱敏?

    在我们开发项目的时候 有些字段比较敏感 比如用户信息 这就需要在打印日志的时候对相关字段脱敏处理 本文提供的脱敏方案是使用conversionRule标签的方式 通过继承MessageConverter 在打印日志的时候对相关字段进行脱敏
  • 【RNA-seq】表达矩阵的归一化处理(RPKM,TPM,FPKM,RPM(CPM))

    在RNA seq上游的流程中 所得到的产物为表达矩阵 一般指通过RSEM HTseq等量化工具统计得到的 各个样本比对到参考基因组中各个基因的reads数 一般成为raw read count 这也是最简单的表达定量形式 但是在分析不同样本
  • Linux实现查看文件内容的多种方式

    目录 1 more 分屏显示文件内容 2 less 文本内容查看器 3 head n 显示文件前n行到终端 4 tail n 显示文件后n行到终端 5 实现实时查看文件内容 追踪文件 除了使用vi vim 编辑器查看文件内容和使用cat命令
  • python + selenium 爬淘宝登录

    淘宝的反爬虫机制如果更强大那么该文章方法也没用了 记录于2023 08 07 from selenium import webdriver from selenium webdriver common by import By from s