我正在用python编写一个selenium脚本,但我想我没有看到任何关于的信息:
如何从selenium Python代码获取http状态代码.
或者我错过了什么.如果有人发现,请随时发布.
我有一个 Selenium 服务,第一步必须登录到我的 gmail 帐户。此功能在几周前开始工作,但突然登录开始失败,我在浏览器中看到此错误,在 selenium 中的 Chrome 和 Firefox 驱动程序中都尝试过 -
此错误是在 selenium 服务插入电子邮件、密码并单击登录按钮后出现的。谷歌支持论坛也报告了类似的错误 - https://support.google.com/accounts/thread/10916318?hl=en,他们说“谷歌似乎在他们的登录流程中引入了自动化工具检测!” 但在这个线程中没有解决方案。
其他一些可能有用的细节-
如果您需要查看代码,请告诉我,我会在此处发布。提前致谢!
编辑 添加示例代码以供参考。
public void loginGoogleAccount(String emailId, String password) throws Exception {
ChromeOptions options = new ChromeOptions();
options.addArguments("--profile-directory=Default");
options.addArguments("--whitelisted-ips");
options.addArguments("--start-maximized");
options.addArguments("--disable-extensions");
options.addArguments("--disable-plugins-discovery");
WebDriver webDriver = new ChromeDriver(options);
webDriver.navigate().to("https://accounts.google.com");
Thread.sleep(3000);
try {
WebElement email = webDriver.findElement(By.xpath("//input[@type='email']"));
email.sendKeys(emailId);
Thread.sleep(1000);
WebElement emailNext = webDriver.findElement(By.id("identifierNext"));
emailNext.click();
Thread.sleep(1000);
WebDriverWait wait = new WebDriverWait(webDriver, 60);
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.id("identifierNext")));
Thread.sleep(3000); …Run Code Online (Sandbox Code Playgroud) selenium google-chrome webdriver selenium-chromedriver selenium-webdriver
这是我的第一个Stack Overflow问题,请耐心等待.
我已经阅读了这个问题,这让我想知道,是否有可能让chromedriver完全无法察觉?
为了我自己的好奇心,我测试了所描述的方法,发现创建一个完全匿名的浏览器是不成功的.
我仔细阅读了驱动程序的文档并发现了:
partial interface Navigator { readonly attribute boolean webdriver; };Navigator接口的webdriver IDL属性必须返回webdriver-active标志的值,该标志最初为false.
此属性允许网站确定用户代理受WebDriver控制,并可用于帮助缓解拒绝服务攻击.
但是,我无法通过浏览器控制台或源代码找到这些标签的位置.
我想这将负责检测chromedriver,但是,在梳理完源代码后,我找不到这个界面.结果,它让我想知道这个特征是否包含在当前的chromedriver中.如果没有,我仍然知道当前的chromedriver可以被网站和其他服务如蒸馏检测到.
我写了一个简单的网络刮刀来抓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
我正在使用 selenium 和 scrapy 实现 TikTok 爬虫
start_urls = ['https://www.tiktok.com/trending']
....
def parse(self, response):
options = webdriver.ChromeOptions()
from fake_useragent import UserAgent
ua = UserAgent()
user_agent = ua.random
options.add_argument(f'user-agent={user_agent}')
options.add_argument('window-size=800x841')
driver = webdriver.Chrome(chrome_options=options)
driver.get(response.url)
Run Code Online (Sandbox Code Playgroud)
爬虫打开 Chrome,但不加载视频。 图片加载
同样的问题也发生在使用 Firefox 没有加载页面使用 Firefox
使用 Selenium 的简单脚本也有同样的问题
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get("https://www.tiktok.com/trending")
time.sleep(10)
driver.close()
driver = webdriver.Chrome()
driver.get("https://www.tiktok.com/trending")
time.sleep(10)
driver.close()
Run Code Online (Sandbox Code Playgroud) 我正在尝试覆盖用户代理字符串,但到目前为止在互联网上找不到解决方案...
这是我的脚本:
<?php
namespace Facebook\WebDriver;
use Facebook\WebDriver\Remote\DesiredCapabilities;
use Facebook\WebDriver\Remote\RemoteWebDriver;
require_once('vendor/autoload.php');
$host = 'http://localhost:4444/wd/hub';
$capabilities = DesiredCapabilities::chrome();
$capabilities->setPlatform(WebDriverPlatform::WINDOWS);
$capabilities->setCapability('userAgent', 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36');
$capabilities->setCapability('user-agent', 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36');
$driver = RemoteWebDriver::create($host, $capabilities, 5000);
$driver->get('http://localhost/browser-emu/testpage.php?bot=1234');
// wait until the page is loaded
$driver->wait()->until(
WebDriverExpectedCondition::titleContains('register')
);
echo "User agent: " . $driver->findElement(WebDriverBy::cssSelector('#userAgent'))->getText();
$driver->quit();
Run Code Online (Sandbox Code Playgroud)
该页面本身很简单:
<html>
<body>
<h1>testpage...</h1>
<?php
printf("<div id='userAgent'>%s</div> \n", $_SERVER['HTTP_USER_AGENT']);
?>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
不管我已经尝试过什么,总是说用户代理是Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 …