我试图找出一种方法,每当我在这个特定的脚本中通过Selenium(在Python中)打开Chrome时,Chrome页面会自动打开并选择另一个用户代理 - 在这种情况下,Microsoft Edge Mobile(但我会是从桌面访问它).
因此,在做了一些研究后,我已经能够拼凑出以下代码,我认为这些代码会在Chrome中执行用户代理切换,然后打开一个新的Bing.com页面:
来自selenium import webdriver
来自selenium.webdriver.chrome.options
导入选项opts =选项()
opts.add_argument("user-agent = Mozilla/5.0(Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 640 XL LTE)AppleWebKit/537.36(KHTML,与Gecko一样)Chrome/42.0.2311.135 Mobile Safari/537.36 Edge/12.10166 ")
driver = webdriver.Chrome(chrome_options = opts)
driver = webdriver.Chrome("D:_")
driver.get(" https://www.bing.com/ ")
但是,在打开指定的网页之前,代码似乎没有工作并停止.我很确定上半部分代码是关闭的,但我不太清楚如何.任何和所有的帮助将深表感谢.
我想确保我的网站阻止Selenium和QTP等自动化工具.有没有办法做到这一点 ?网站上的哪些设置是Selenium失败的?
我写了一个简单的网络刮刀来抓expedia.com.使用Java Selenium HtmlUnitDriver,如果我在本地运行它,我能够成功从网站上抓取数据.
然而,当我上到EC2服务器部署此,它总是返回我在哪里Expedia的检测它作为一个机器人的页面,因此,它会显示这个验证码,以证明人类正在访问它.
我认为它可能与ecpedia服务器的IP地址有关,这些服务器被expedia.com以某种方式列入黑名单?
我试过抓不同的网站,他们不关心/不做人体测试.
知道如何解决这个问题吗?
我尝试但仍被检测为机器人的东西:
更新:实际设置代理服务器给我一个不同的错误:
当前网址为https://www.expedia.com/things-to-do/search?location=Paris&pageNumber=1
htmlString:
<!--?xml version="1.0" encoding="ISO-8859-1"?-->
<html>
<head>
<title>
500 Internal Server Error
</title>
</head>
<body>
<h1> Internal Server Error </h1>
<p> The server encountered an internal error or misconfiguration and was unable to complete your request. </p>
<p> Please contact the server administrator at [no address given] to inform them of the time this error occurred, and the actions you performed just before this error. </p>
<p> More …Run Code Online (Sandbox Code Playgroud) selenium htmlunit web-scraping selenium-webdriver htmlunit-driver
我很好奇Recaptcha v3的工作方式。特别是浏览器指纹。
当我通过selenium / chromedriver启动chrome实例并针对ReCaptcha 3(https://recaptcha-demo.appspot.com/recaptcha-v3-request-scores.php)进行测试时,使用selenium /时我总是得到0.1分chromedriver。
在正常实例中使用隐身模式时,我得到0.3。
我通过注入JS并修改Web驱动程序对象并从源代码重新编译WebDriver并修改$ cdc_变量来击败其他检测系统。
我可以看到看起来有些混乱的POST返回到服务器,所以我将开始在那里进行挖掘。
我只是想检查是否有人愿意首先与它分享任何建议或经验,以决定我是否正在运行Selenium / chromedriver?
selenium recaptcha web-scraping selenium-chromedriver recaptcha-v3
我实际上正在尝试从不同的网站上抓取一些汽车数据,我一直在 chromebrowser 中使用 selenium,但有些网站实际上通过验证码验证阻止了 selenium(例如: https: //www.leboncoin.fr/),这只是1 或 2 个请求。我尝试在 chromebrowser 中更改 $_cdc 但这并没有解决问题,并且我一直在 chromebrowser 中使用这些选项
user_agent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36'
options = webdriver.ChromeOptions()
options.add_argument(f'user-agent={user_agent}')
options.add_argument('start-maximized')
options.add_argument('disable-infobars')
options.add_argument('--profile-directory=Default')
options.add_argument("--incognito")
options.add_argument("--disable-plugins-discovery")
options.add_experimental_option("excludeSwitches", ["ignore-certificate-errors", "safebrowsing-disable-download-protection", "safebrowsing-disable-auto-update", "disable-client-side-phishing-detection"])
options.add_argument('--disable-extensions')
browser = webdriver.Chrome(chrome_options=options)
browser.delete_all_cookies()
browser.set_window_size(800,800)
browser.set_window_position(0,0)
Run Code Online (Sandbox Code Playgroud)
我试图抓取的网站使用 DataDome 来保证机器人安全,有什么线索吗?
我正在尝试使用带有 selenium 的无头 chrome 浏览器,它也绕过了机器人检测测试,目前使用以下项目https://github.com/ultrafunkamsterdam/unDetected-chromedriver 每次我尝试实现代码时,它都不会不认识司机。 这是您可以理解的链接
这是代码
#
# UNDETECTED chromedriver (headless,even)
#
import undetected_chromedriver as uc
options = uc.ChromeOptions()
options.headless=True
options.add_argument('--headless')
chrome = uc.Chrome(options=options)
chrome.get('https://datadome.co/customers-stories/toppreise-ends-web-scraping-and-content-theft-with-datadome/')
chrome.save_screenshot('datadome_undetected_webddriver.png')
Run Code Online (Sandbox Code Playgroud)
因此,当我使用时chrome.get(),我收到一个错误,因为 chrome 没有get()成员。我也使用 pip 命令安装了该项目。所以我在想我是否需要将路径指向 chromedriver,那会在哪里,因为我怀疑它将是普通驱动程序,并且文档从未提到驱动程序的路径。
好的,当我运行程序时,我在终端中得到以下内容
DevTools listening on ws://127.0.0.1:55903/devtools/browser/ef3a54cf-35b9-400f-972c-2b54ca227eb8
[0102/000855.199:INFO:CONSOLE(2)] "JQMIGRATE: Migrate is installed, version 1.4.1", source: https://datadome.co/wp-content/cache/busting/1/wp-includes/js/jquery/jquery-migrate.min-1.4.1.js (2)
[0102/000856.946:INFO:CONSOLE(1)] "Messaging child iframes", source: https://track.gaconnector.com/gaconnector.js (1)
[0102/000856.946:INFO:CONSOLE(1)] "https://track.gaconnector.com/track_pageview?gaconnector_id=ddade4fc-93d0-20a3-79fa-39648d8e6629&account_id=6dd3433635353fd00f486550bcd5b157&referer=&GA_Client_ID=183291439.1609510136&page_url=https%3A%2F%2Fdatadome.co%2Fcustomers-stories%2Ftoppreise-ends-web-scraping-and-content-theft-with-datadome%2F&gclid=&utm_campaign=&utm_term=&utm_content=&utm_source=&utm_medium=", source: https://track.gaconnector.com/gaconnector.js (1)
PS D:\Programming\Python> [0102/000902.158:INFO:CONSOLE(0)] "The resource https://js.driftt.com/core/assets/js/runtime~main.a73a2727.js was preloaded using link preload but not used …Run Code Online (Sandbox Code Playgroud) python selenium webdriver selenium-chromedriver selenium-webdriver
我到处读到网站无法检测到用户正在使用硒网络驱动程序......但为什么呢?
例如,firefox中的webdriver插件为<html>元素添加了"webdriver属性"
.所以<html>...转到<html webdriver="true">...
我很困惑...为什么不能检测到webdriver?
我写了一些Javascript来获取document.outerHTML ...并且有webdriver属性!=检测到了??
这是我在浏览器中使用Webdriver测试的代码,但没有:
<html>
<head>
<script type="text/javascript">
<!--
function showWindow(){
javascript:(alert(document.documentElement.outerHTML));
}
//-->
</script>
</head>
<body>
<form>
<input type="button" value="Show outerHTML" onclick="showWindow()">
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下为什么不可能检测到Webdriver吗?
我尝试使用selenium webdriver在 google 中按图像进行一次搜索,因此我的用户不需要手动打开浏览器并将图像 url 粘贴到那里。但谷歌说
我们的系统检测到来自您的计算机网络的异常流量。此页面会检查是否真的是您发送请求,而不是机器人。
并提供验证码,有没有办法避免使用 selenium webdriver 被谷歌检测为自动化?
这是我的代码:
@Before
public void setUp() throws Exception {
driver = new FirefoxDriver();
baseUrl = "http://images.google.com/searchbyimage?image_url=";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
@Test
public void test2() throws Exception {
driver.get(baseUrl + "http://somesite.com/somepicture.jpg");
driver.findElement(By.linkText("sometext"));
System.out.println("finish");
}
@After
public void tearDown() throws Exception {
driver.quit();
String verificationErrorString = verificationErrors.toString();
if (!"".equals(verificationErrorString)) {
fail(verificationErrorString);
}
}
Run Code Online (Sandbox Code Playgroud) java selenium captcha selenium-firefoxdriver selenium-webdriver
我正在尝试使用 selenium 和 chromedriver 从 Discover 网站屏幕抓取我自己的信用卡信息。作为响应,它返回错误:
当前无法访问您的帐户。
过时的浏览器会使您的计算机面临安全风险。为了在 Discover.com 上获得最佳体验,您可能需要将浏览器更新到最新版本,然后重试。
有趣的是,如果我编写一个脚本打开一个有头浏览器并输入一些随机的帐户和密码,它可以正常工作。但是如果脚本首先接触网页然后我输入,我会收到上述错误消息。有效的脚本是:
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script('window.location.href = "https://portal.discover.com/customersvcs/universalLogin/ac_main";')
Run Code Online (Sandbox Code Playgroud)
如果我将这些行附加到脚本并在睡眠完成后键入,它会失败:
time.sleep(5)
driver.find_element_by_id('userid-content').click()
Run Code Online (Sandbox Code Playgroud)
我尝试了其他方法将数据输入到页面中,例如 send_keys 和执行 Javascript 来修改页面,但它们都以同样的方式失败。
网站如何检测遥控器?有没有办法绕过它?
selenium webdriver selenium-chromedriver google-chrome-headless
Puppeteer和PhantomJS相似。我俩都遇到了这个问题,代码也很相似。
我想从一个网站上获取一些信息,该网站需要进行身份验证才能查看这些信息。我什至无法访问主页,因为它像“ SS”一样被检测为“可疑活动”:https : //i.imgur.com/p69OIjO.png
我发现,当我使用名为Cookie的标头在Postman上进行测试并且在浏览器中捕获到它的cookie的值时,不会发生此问题,但是此cookie会在一段时间后过期。所以我想Puppeteer / PhantomJS都没有捕获cookie,因为该站点拒绝了无头的浏览器访问。
我可以做些什么来绕过这个?
// Simple Javascript example
var page = require('webpage').create();
var url = 'https://www.expertflyer.com';
page.open(url, function (status) {
if( status === "success") {
page.render("home.png");
phantom.exit();
}
});
Run Code Online (Sandbox Code Playgroud) selenium ×8
python ×3
web-scraping ×3
webdriver ×3
bots ×2
automation ×1
botdetect ×1
captcha ×1
detect ×1
htmlunit ×1
java ×1
javascript ×1
node.js ×1
phantomjs ×1
puppeteer ×1
recaptcha ×1
recaptcha-v3 ×1
testing ×1
user-agent ×1
web ×1