selenium 成功绕过淘宝登录反爬机制_selenium为什么能规避反爬_吃货路飞的博客-程序员宝宝

技术标签: 爬虫  java  selenium  

前言

selenium + webdriver 在登录淘宝时会出现反爬滑块,该滑块无论怎么滑也滑不成功,只会出现 哎呀,出错了,点击刷新再来一次

淘宝登录时出现反爬滑块

有两个问题存在,导致 selenium + webdriver 在登录时被检测出来

一:淘宝页面加载的JS中有检测selenium的,如下图:

在这里插入图片描述

二:window.navigator.webdriver的值为true

当我们正常打开chrome浏览器时window.navigator.webdriver的值是为undefined

而通过chromedriver调起的chrome浏览器时window.navigator.webdriver的值是为true
在这里插入图片描述

针对以上两个问题 我们做出相对应措施即可绕过

一:修改chromedriver.exe

使用Notepad++ 编辑器,右击打开 chromedriver.exe ,出现一堆乱码时不要慌ctrl + f,输入$cdc,查找会看到有这么一串key值 $cdc_asdjflasutopfhvcZLmcfl_

通过key值我们可以发现该值与淘宝JS检测selenium的值一致!

之后我们把上面key值标志为红色部分的字符串进行修改替换即可。

注意 :查找的字符只有$cdc四个字符,没有空格 没有空格 没有空格

注意 :修改后的字符长度要和原来的一致!

在这里插入图片描述

二:设置Chrome为开发者模式
ChromeOptions option = new ChromeOptions();
option.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
ChromeDriver driver = new ChromeDriver(option);

实例

就这,就这样成功绕过登录反爬啦!
ps:这里的用户和密码是随便输的哈,输入正确的用户名和密码是可以登录的!
成功绕过淘宝登录反爬滑块

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

import java.util.Collections;

/**
 * @author 吃货路飞
 * @date 2020/8/11 15:21
 */ 
public class TaoBaoSelenium {
    

    private final static String CHROME_DRIVER_NAME = "webdriver.chrome.driver";
    private final static String CHROME_DRIVER_PATH = "C:\\drive\\chromedriver.exe";
    private final static String LOGIN_NAME = "66666666666";
    private final static String LOGIN_PWD = "66666666666";

    public static void main(String[] args) throws InterruptedException {
    
        System.setProperty(CHROME_DRIVER_NAME, CHROME_DRIVER_PATH);
        ChromeOptions option = new ChromeOptions();
        //去掉chrome 正受到自动测试软件的控制
        option.addArguments("disable-infobars");
        //开启开发者模式
        option.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
        WebDriver driver = new ChromeDriver(option);
        driver.manage().window().maximize();
        driver.get("https://login.taobao.com/member/login.jhtml?style=mini");
        driver.findElement(By.xpath("//*[@id=\"fm-login-id\"]")).sendKeys(LOGIN_NAME);
        driver.findElement(By.xpath("//*[@id=\"fm-login-password\"]")).sendKeys(LOGIN_PWD);
        driver.findElement(By.xpath("//*[@id=\"login-form\"]/div[4]/button")).click();
        Thread.sleep(3000);
        driver.getTitle();
        driver.close();
    }
}

参考文章:
[1]: selenium 淘宝登入反爬虫解决方案(亲测有效)
[2]: 最新爬虫(2019.07)淘宝页面登陆滑块验证 selenium + chromedriver 爬取淘宝信息

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xlw_like/article/details/107939072

智能推荐

pyqt5中textBrowser添加文本并自动滑动到底【重点】_textbrowser.movecursor_'初十一的博客-程序员宝宝

pyqt5在textBrowser添加文本并自动滑动到底说明:1、按下按钮pushButton,把单行文本框lineEdit里的内容循环不断的添加到多行文本展示框textBrowser。2、必须要用线程做这件事,不然主程序会卡死。3、必须添加sleep(),不然主程序会卡死。4、用函数的闭包做这样的事情,效果很好。  信号与槽的连接:1 self.push...

spring 测试中配置hsqldb,与运行时数据库分开_luffy_1993的博客-程序员宝宝

How do I configure my Spring Boot application so that when I run unit tests it will use in-memory database such as H2/HSQL but when I run Spring Boot application it will use production database [Postg...

数据结构和算法----数组_龍丶胤的博客-程序员宝宝

数组数组的定义数组是一种线性表的数据结构,在内存中表现为一组连续的存储单元,用来存储一组相同数据类型的数据 线性表:数组、链表、队列、栈 非线性表:树 图数组的效率低效数组的插入和删除操作是低效的,为了保持数组的连续行所以在进行插入和删除操作时要做数组进行最坏时间复杂度为O(n)的操作。(1)、插入 插入数据时为了保持存储单元的连续性,我们需要将数组中插...

golang实现简易Raft_golang raft_Onemorelight95的博客-程序员宝宝

golang实现简易Raft文章目录golang实现简易RaftRaft简介官方动画golang实现raftRaft简介随着大型网站的各种高并发访问、海量数据处理等场景越来越多,如何实现网站的高可用、易伸缩、可扩展、安全等目标就显得越来越重要。为了解决这样一系列问题,大型网站的架构也在不断发展。提高大型网站的高可用架构,不得不提的就是分布式。任何一个分布式系统都无法同时满足 Consistency(一致性),Availability(可用性),Partition tolerance(分区容错性

关于同步、异步与阻塞、非阻塞的理解_weixin_34332905的博客-程序员宝宝

1、前言  前一段时间出去面试,被问到同步、异步与阻塞、非阻塞的区别。我一时半会没有想出来,作为一个工作三年的人来说,实在很惭愧。我当时理解同步、异步属于两个进程中间的协作关系,例如使用浏览器访问一个网站,需要多次请求服务端,才能加载完整个页面的内容。同步的操作如下:浏览器首先发送第一个请求,等待服务器回复后,再发送第二个请求,依次类推,直到所有请求完成。异步的操作如下:浏览器发送第一个请求,...

随便推点

从0开始学视觉(3)——利用labelimg制作自己的深度学习目标检测数据集用于安全帽识别_yolo win labelimg_从0开始深度学习的博客-程序员宝宝

文章目录一、labelimg的安装二、labelimg的使用一、labelimg的安装  Labelimg是一款开源的数据标注工具,可以标注三种格式。   1 、VOC标签格式,保存为xml文件。   2 、yolo标签格式,保存为txt文件。   3 、createML标签格式,保存为json格式。  这里主要讲的是在window系统中的安装,首先打开cmd命令行(快捷键:win+R)。进入cmd命令行控制台。输入如下的命令:pip install labelimg -i https://

使用Vant框架的组件van-pull-refresh搭配van-list和van-card完成上滑加载更多列表数据,下拉刷新当前列表数据(等同于翻页功能)_vant pullrefresh怎么滚动列表_柠檬加栤的博客-程序员宝宝

<template> <div class="sg-page-body"> <div class="sg-list"> <van-pull-refresh v-model="pullLoading" @refresh="onPullRefresh" success-text="刷新成功"> <van-list v-model="listLoading" @load="onL.

借用runtime来实现UITextView的占位符placehold功能_90后纳税人的博客-程序员宝宝

1、 首先我们需要倒入runtime的头文件 #import <objc/runtime.h>unsigned int count = 0; Ivar *ivars = class_copyIvarList([UITextView class], &count); for (int i = 0; i < count; i ++) { Ivar ivar = ivars

1060 爱丁顿数(25)(25 分)_weixin_30279671的博客-程序员宝宝

英国天文学家爱丁顿很喜欢骑车。据说他为了炫耀自己的骑车功力,还定义了一个“爱丁顿数”E,即满足有E天骑车超过E英里的最大整数E。据说爱丁顿自己的E等于87。现给定某人N天的骑车距离,请你算出对应的爱丁顿数E(&lt;=N)。输入格式:输入第一行给出一个正整数N(&lt;=10^5^),即连续骑车的天数;第二行给出N个非负整数,代表每天的骑车距离。输出格式:在一行中给出N天的爱丁...

boost asio io_service学习笔记_k1988的博客-程序员宝宝

转自:http://hi.baidu.com/jrckkyy/blog/item/e86835d61e60722506088b6a.html构造函数构造函数的主要动作就是调用CreateIoCompletionPort创建了一个初始iocp。Dispatch和post的区别Post一定是PostQueuedCompletionStatus并且在GetQueuedCompletion

Spring Boot(3):Thymeleaf模版引擎_码农渔夫的博客-程序员宝宝

一、什么是ThymeleafThymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。类似 JSP,Velocity,FreeMaker 等模版,它也可以轻易的与 Spring MVC 等 Web 框架进行集成作为 Web 应用的模板引擎。可以在Web和非Web环境中工作。 它更适合在基于MVC的Web应用程序的视图层提供XHTML / HTML5,但它甚至可以在脱机环境中处理任何XML文件。 它提供完整的Spring Framework。与其它模板引擎相比,Thymeleaf

推荐文章

热门文章

相关标签