相关疑难解决方法(0)

如何使用selenium.py(python代码)获取状态代码

我正在用python编写一个selenium脚本,但我想我没有看到任何关于的信息:

如何从selenium Python代码获取http状态代码.

或者我错过了什么.如果有人发现,请随时发布.

python selenium

28
推荐指数
4
解决办法
4万
查看次数

登录 gmail 账户失败(selenium 自动化)

我有一个 Selenium 服务,第一步必须登录到我的 gmail 帐户。此功能在几周前开始工作,但突然登录开始失败,我在浏览器中看到此错误,在 selenium 中的 Chrome 和 Firefox 驱动程序中都尝试过 -

在此处输入图片说明

此错误是在 selenium 服务插入电子邮件、密码并单击登录按钮后出现的。谷歌支持论坛也报告了类似的错误 - https://support.google.com/accounts/thread/10916318?hl=en,他们说“谷歌似乎在他们的登录流程中引入了自动化工具检测!” 但在这个线程中没有解决方案。

其他一些可能有用的细节-

  • 我无法在
    Selenium 打开的浏览器中手动登录 Google 帐户。
  • 但是我可以在 Google Chrome 应用程序中手动登录这些帐户。

如果您需要查看代码,请告诉我,我会在此处发布。提前致谢!

编辑 添加示例代码以供参考。

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

10
推荐指数
2
解决办法
1万
查看次数

如何让chromedriver无法察觉

这是我的第一个Stack Overflow问题,请耐心等待.

我已经阅读了这个问题,这让我想知道,是否有可能让chromedriver完全无法察觉?

为了我自己的好奇心,我测试了所描述的方法,发现创建一个完全匿名的浏览器是不成功的.

我仔细阅读了驱动程序的文档并发现了:

partial interface Navigator { readonly attribute boolean webdriver; };

Navigator接口的webdriver IDL属性必须返回webdriver-active标志的值,该标志最初为false.

此属性允许网站确定用户代理受WebDriver控制,并可用于帮助缓解拒绝服务攻击.

但是,我无法通过浏览器控制台或源代码找到这些标签的位置.

我想这将负责检测chromedriver,但是,在梳理完源代码后,我找不到这个界面.结果,它让我想知道这个特征是否包含在当前的chromedriver中.如果没有,我仍然知道当前的chromedriver可以被网站和其他服务如蒸馏检测到.

java selenium selenium-chromedriver

9
推荐指数
2
解决办法
8322
查看次数

Selenium HtmlUnitDriver Web Scrape从EC2 Server获得了Captcha页面

我写了一个简单的网络刮刀来抓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

7
推荐指数
1
解决办法
343
查看次数

Selenium 未加载 TikTok 页面

我正在使用 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)

python selenium scrapy web-scraping

5
推荐指数
1
解决办法
3546
查看次数

Facebook WebDriver:设置用户代理(PHP)

我正在尝试覆盖用户代理字符串,但到目前为止在互联网上找不到解决方案...

这是我的脚本:

<?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 …

php selenium facebook webdriver selenium-chromedriver

1
推荐指数
1
解决办法
1801
查看次数