- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 Selenium WebDriver.chromedriver 获取 json 结果数据时遇到问题,服务器将响应 http 状态代码 429 太多请求。
但是当我直接使用 chrome 获取这个 url "https://shop.coles.com.au/search/resources/store/20501/productview/2364711P "时,它会正常工作。
我认为服务器端有一些验证逻辑,但是如何交叉,请帮助非常感谢~
我明白为什么被服务器阻止了
下面的这个 js 代码检测到我使用 webdriver 然后阻止我,然后不创建 cookie ..
"use strict";
!function() {
function e(e) {
var r = (void 0 !== e.stack ? e.stack : "").replace(/"/g, '"')
, t = {
stack: r,
message: e.message,
name: e.name
};
(new Image).src = l + "/error?e=" + encodeURIComponent(JSON.stringify(t)),
console.log("Error", "\n name: " + t.name, "\n message: " + t.message, "\n stack: " + t.stack)
}
function r(e) {
return "true" === e
}
function t(e) {
return void 0 !== e && e.indexOf("canvas") > -1
}
function n(e) {
return void 0 !== e.ActiveXObject && null !== e.ActiveXObject
}
function a(e) {
return void 0 !== e.Fingerprint2 && null !== e.Fingerprint2
}
function i(e) {
return null !== ("" + e.userAgent).match(/PhantomJS/)
}
function o(e) {
return void 0 !== e.webdriver
}
function c(e) {
try {
return e.appName = "Chrome macIntel IE",
"Chrome macIntel IE" === e.appName
} catch (e) {
return !1
}
}
function s(e) {
var r = o(e.navigator) && !1 !== e.navigator.webdriver
, t = "webdriver"in e
, n = "true" === document.getElementsByTagName("html")[0].getAttribute("webdriver");
return r || t || n
}
function u(e) {
try {
return (0,
(0,
e.constructor.constructor)("return process")().mainModule.require)("fs"),
!0
} catch (e) {
return !1
}
}
function tEibEnv() {
var e = ["stack", "stackTrace", "description"];
try {
[]()[[+[]] + []]
} catch (r) {
return void 0 !== r[e[0]] ? r[e[0]] : void 0 !== r[e[1]] ? r[e[1]] : void 0 !== r[e[2]] ? r[e[2]] : ""
}
}
function I() {
if ("undefined" == typeof XMLHttpRequest)
try {
return new ActiveXObject("Msxml2.XMLHTTP.6.0")
} catch (e) {
try {
return new ActiveXObject("Msxml2.XMLHTTP.3.0")
} catch (e) {
try {
return new ActiveXObject("Microsoft.XMLHTTP")
} catch (e) {
throw new Error("AJAX requests appear to be unsupported by this browser")
}
}
}
return new XMLHttpRequest
}
function E(e, r) {
for (var t in r)
if (Object.prototype.hasOwnProperty.call(r, t)) {
var n = r[t];
void 0 !== n && e.setRequestHeader(t, n)
}
return e
}
function d(e, r, t, n, a) {
try {
var i = I();
i.open(r, e, !0),
void 0 !== t.headers && E(i, t.headers),
i.onreadystatechange = function() {
if (4 === i.readyState) {
var e = "" + i.status;
if ("4" === e.charAt(0) || "5" === e.charAt(0))
return void n(new Error("Error issuing AJAX request (status code: " + e + ")"));
a(i.responseText)
}
}
,
i.send(t.body)
} catch (e) {
n(e)
}
}
function N(e, r, t, n) {
var a = n;
try {
d(l, "POST", {
headers: {
"Content-Type": "application/json; charset=utf-8"
},
body: JSON.stringify({
t: e,
d: r
})
}, t, function(e) {
try {
a(JSON.parse(e))
} catch (e) {
t(e)
}
})
} catch (e) {
t(e)
}
}
function _(e, r, t, a, o, I, E, d, _, v, l) {
var f = window
, R = window.navigator
, L = {
a719076e644f9e643a85b5c16b391623abd18d1b37c4b5629c4de8f2f01b4704f: e,
ab78473b1c731bfc01032f3ee7df063b3fd085b3ba6c9eb186df3ed4f92442b1a: r,
a6c7ed91d806b6bb3b5a3bdcc4091c4f8dc081db7ffc0831f955e2bcb3aab7355: t,
a061a12d2fd8497ae57a06624b04b9c7faa35b77b803402a0da22f03b78e99a62: a,
a2159e86126934a65811ace05974f8a36ae2b6d5de0bbf5824d3605e5d7077ab4: o,
af5ea0bb3bdbaa142a206ed65324c1eb45469bf2cabbecdc7a180d27a49332bac: I,
ab47f0a3cf8da04ff7dd6196f6ae6a06b906bc4a0b30cfc71c2730bb70efd2940: E,
ab9cec510ce9fb76e79882a7f612275b083c607c17fe9dd44438da49625c08cfc: void 0 !== d ? d : [],
a89ee5f18b07459773463dfd370524376e8b4d997c13436c62b763cc649f548ea: void 0 !== _ ? _ : [],
a083c50eb73edc35f752e1b1d3925114d5a53f93352752e88d87e13f9432b05ce: tEibEnv(),
ac54ffdaf47ba30b6e1c02994c2a77cd822c023cf55c8679fcd2b1e722a33fd88: u(f),
a14559ea59a0352ae64faa9bbc92eec821130e9b560f420bb16d8542699952a87: s(f),
a8d2114495f1bc2c3adeb4a7f0e99553e252ad79a39ad72c0be1f1ebdf3cf1cdb: void 0 !== R && i(R),
a701bb64a76ab3877ebf146a5dd709778eb2fc99de0005972eda2dae28dc12fb7: void 0 !== R && c(R),
ac57c5637ca15e2901d75b3953d35d492e6c700a554e58cf00f302d8ab82d0ac4: n(f)
};
N(T, L, v, l)
}
function v(n) {
(new (0,
n.Fingerprint2)).get(function(n, a) {
for (var i = {}, o = 0; o < a.length; o++) {
var c = a[o];
i[c.key] = c.value
}
_(n, i.user_agent, r(i.has_lied_browser), r(i.has_lied_os), r(i.adblock), t(i.canvas), i.available_resolution, i.regular_plugins, i.ie_plugins, e, function(e) {
e.redirect && window.location.reload(!0)
})
})
}
var l = "/149e9513-01fa-4fb0-aad4-566afd725d1b/2d206a39-8ed7-437e-a3be-862e0f06eea3/fingerprint"
, T = "94dbc0cc-d783-c10b-3612-c657311fecb9";
if (a(window))
try {
v(window)
} catch (r) {
e(r)
}
else
!function(e, r, t, n) {
var i = e
, o = setInterval(function() {
return i <= 0 ? (clearInterval(o),
t(new Error("Library is not defined"))) : a(window) ? (clearInterval(o),
n(window)) : void (i -= 1)
}, r)
}(100, 100, function(r) {
e(r)
}, function(r) {
try {
v(r)
} catch (r) {
e(r)
}
})
}();
//# sourceMappingURL=fingerprint.js.map
最佳答案
我找到了解决方案。
在使用 webdriver 之前,将此添加到您的 python 脚本中
options = webdriver.ChromeOptions()
options.add_experimental_option('excludeSwitches', ['enable-automation'])
wdriver = webdriver.Chrome(options=options)
关于selenium-chromedriver - chromedriver 在请求时导致状态代码 429,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54587922/
我正在通读 Windows Phone 7.5 Unleashed,有很多代码看起来像这样(在页面的代码隐藏中): bool loaded; protected override void OnNav
在cgi服务器中,我这样返回 print ('Status: 201 Created') print ('Content-Type: text/html') print ('Location: htt
我正在查看 esh(easy shell)的实现,无法理解在这种情况下什么是 22 和 9 信号。理想情况下,有一个更具描述性的常量,但我找不到列表。 最佳答案 信号列表及其编号(包括您看到的这两个)
我的Oozie Hive Action 永远处于运行模式。 oozie.log文件中没有显示错误。
我正在编写一个使用 RFCOMM 通过蓝牙连接到设备的 Android 应用程序。我使用 BluetoothChat 示例作为建立连接的基础,大部分时间一切正常。 但是,有时由于出现套接字已打开的消息
我有一个云调度程序作业,它应该每小时访问我的 API 以更新一些价格。这些作业大约需要 80 秒才能运行。 这是它的作用: POST https://www.example.com/api/jobs/
我正在 Tomcat 上访问一个简单的 JSP 页面: 但是当我使用 curl 测试此页面时,我得到了 200 响应代码而不是预期的 202: $ curl -i "http://localhos
有时 JAR-RS 客户端会发送错误的语法请求正文。服务器应响应 HTTP status 400 (Bad Request) , 但它以 HTTP status 500 (Internal Serve
我正在尝试通过 response.send() 发送一个整数,但我不断收到此错误 express deprecated res.send(status): Use res.sendStatus(sta
我已经用 Excel 和 Java 做过很多次了……这次我需要用 Stata 来做,因为保存变量更方便'labels .如何将 dataset_1 重组为下面的 dataset_2? 我需要转换以下
我正在创建一个应用程序,其中的对象具有状态查找功能。为了提供一些上下文,让我们使用以下示例。 帮助台应用程序,其中创建作业并通过以下工作流程移动: 新 - 工作已创建但未分配 进行中 - 分配给工作人
我想在 Keras 中运行 LSTM 并获得输出和状态。在 TF 中有这样的事情 with tf.variable_scope("RNN"): for time_step in range
有谁知道 Scala-GWT 的当前状态 项目? 那里的主要作者 Grzegorz Kossakowski 似乎退出了这个项目,在 Spring 中从事 scalac 的工作。 但是,在 interv
我正在尝试编写一个 super 简单的 applescript 来启动 OneDrive App , 或确保打开,当机器的电源设置为插入时,将退出,或确保关闭,当电源设置为电池时。 我无法找到如何访问
目前我正在做这样的事情 link.on('click', function () { if (link.attr('href') !== $route.current.originalPath
是否可以仅通过查看用户代理来检测浏览器上是否启用/禁用 Javascript。 如果是,我应该寻找什么。如果否,检测用户浏览器是否启用/禁用 JavaScript 的最佳方法是什么 最佳答案 不,没有
Spring 和 OSGi 目前的开发状况如何? 最近好像有点安静了。 文档的最新版本 ( http://docs.spring.io/osgi/ ) 来自 2009 年。 我看到一些声明 Sprin
我正在从主函数为此类创建一个线程,但即使使用 Thread.currentThread().interrupt() 中断它,输出仍然包含“Still Here”行。 public class Writ
为了满足并发要求,我想知道如何在 Godog 中的多个步骤之间传递参数或状态。 func FeatureContext(s *godog.Suite) { // This step is ca
我有一个UIButton子类,它不使用UIImage背景,仅使用背景色。我注意到的一件事是,当您设置按钮的背景图像时,有一个默认的突出显示状态,当按下按钮时,该按钮会稍微变暗。 这是我当前的代码。
我是一名优秀的程序员,十分优秀!