selenium + webdriver 在登录淘宝时会出现反爬滑块,该滑块无论怎么滑也滑不成功,只会出现 哎呀,出错了,点击刷新再来一次
当我们正常打开chrome浏览器时window.navigator.webdriver的值是为undefined,
而通过chromedriver调起的chrome浏览器时window.navigator.webdriver的值是为true
使用Notepad++ 编辑器,右击打开 chromedriver.exe ,出现一堆乱码时不要慌ctrl + f,输入$cdc,查找会看到有这么一串key值 $cdc_asdjflasutopfhvcZLmcfl_
通过key值我们可以发现该值与淘宝JS检测selenium的值一致!
之后我们把上面key值标志为红色部分的字符串进行修改替换即可。
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 爬取淘宝信息
pyqt5在textBrowser添加文本并自动滑动到底说明:1、按下按钮pushButton,把单行文本框lineEdit里的内容循环不断的添加到多行文本展示框textBrowser。2、必须要用线程做这件事,不然主程序会卡死。3、必须添加sleep(),不然主程序会卡死。4、用函数的闭包做这样的事情,效果很好。 信号与槽的连接:1 self.push...
解决 android 高低版本 webView 里内容 自适应屏幕的终极方法
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实现简易RaftRaft简介官方动画golang实现raftRaft简介随着大型网站的各种高并发访问、海量数据处理等场景越来越多,如何实现网站的高可用、易伸缩、可扩展、安全等目标就显得越来越重要。为了解决这样一系列问题,大型网站的架构也在不断发展。提高大型网站的高可用架构,不得不提的就是分布式。任何一个分布式系统都无法同时满足 Consistency(一致性),Availability(可用性),Partition tolerance(分区容错性
1、前言 前一段时间出去面试,被问到同步、异步与阻塞、非阻塞的区别。我一时半会没有想出来,作为一个工作三年的人来说,实在很惭愧。我当时理解同步、异步属于两个进程中间的协作关系,例如使用浏览器访问一个网站,需要多次请求服务端,才能加载完整个页面的内容。同步的操作如下:浏览器首先发送第一个请求,等待服务器回复后,再发送第二个请求,依次类推,直到所有请求完成。异步的操作如下:浏览器发送第一个请求,...
文章目录一、labelimg的安装二、labelimg的使用一、labelimg的安装 Labelimg是一款开源的数据标注工具,可以标注三种格式。 1 、VOC标签格式,保存为xml文件。 2 、yolo标签格式,保存为txt文件。 3 、createML标签格式,保存为json格式。 这里主要讲的是在window系统中的安装,首先打开cmd命令行(快捷键:win+R)。进入cmd命令行控制台。输入如下的命令:pip install labelimg -i https://
<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.
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
英国天文学家爱丁顿很喜欢骑车。据说他为了炫耀自己的骑车功力,还定义了一个“爱丁顿数”E,即满足有E天骑车超过E英里的最大整数E。据说爱丁顿自己的E等于87。现给定某人N天的骑车距离,请你算出对应的爱丁顿数E(<=N)。输入格式:输入第一行给出一个正整数N(<=10^5^),即连续骑车的天数;第二行给出N个非负整数,代表每天的骑车距离。输出格式:在一行中给出N天的爱丁...
转自:http://hi.baidu.com/jrckkyy/blog/item/e86835d61e60722506088b6a.html构造函数构造函数的主要动作就是调用CreateIoCompletionPort创建了一个初始iocp。Dispatch和post的区别Post一定是PostQueuedCompletionStatus并且在GetQueuedCompletion
一、什么是ThymeleafThymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。类似 JSP,Velocity,FreeMaker 等模版,它也可以轻易的与 Spring MVC 等 Web 框架进行集成作为 Web 应用的模板引擎。可以在Web和非Web环境中工作。 它更适合在基于MVC的Web应用程序的视图层提供XHTML / HTML5,但它甚至可以在脱机环境中处理任何XML文件。 它提供完整的Spring Framework。与其它模板引擎相比,Thymeleaf