当前位置: 首页 > 知识库问答 >
问题:

当使用SeleniumWebDriver抓取网页时,服务器如何区分它是机器人还是人?

訾安邦
2023-03-14

我们的实验室与一家网络公司合作,开发了保护网页不被网络爬虫抓取的技术。测试网站http://119.254.209.77/。我不能在左边的页面上得到网址,比如“检查”。当我点击链接时,它会创建一个网址。使用Python Selenium Firefox,我模拟了点击操作,但是我得到了一个空白页面,而不是真实的数据。如果我只是自己点击链接,它会返回真实的数据。所以我想知道如何服务器可以识别我是一个网络爬虫,当我使用selenium网络驱动与火狐?我也想知道如何避免被它的网站视为网络爬虫。

这是我的密码:


    driver = webdriver.Firefox()
    driver.get('http://119.254.209.77/')
    time.sleep(5)
    pageSource = driver.page_source
    print(driver.page_source)

    # the target url

    checking = driver.find_element_by_id('_ctl0__ctl0_Content_MenuHyperLink2')

    # it seems to has no effects
    checking.click()
    time.sleep(2)
    print(driver.page_source)

共有1个答案

乌鸿宝
2023-03-14

似乎该网站正在检查您的鼠标位置,然后再将您传递到下一页。在单击元素之前移动到该元素对我有效:

driver = webdriver.Chrome()
driver.get('http://119.254.209.77/')
time.sleep(5)
pageSource = driver.page_source
print(driver.page_source)
# the target url
checking = driver.find_element_by_id('_ctl0__ctl0_Content_MenuHyperLink2')

action_chain = webdriver.ActionChains(driver)
action_chain.move_to_element(checking)
action_chain.click(checking)
action_chain.perform()
time.sleep(2)
print(driver.page_source)
 类似资料:
  • 问题内容: 我正在考虑在用户登录时将日期存储在我的网站中,但是我不知道什么是最合乎逻辑的解决方案。 最初,我虽然使用服务器时区,然后使用服务器计算机日期和用户计算机日期之间的差异操作来管理它,但是我也考虑过使用时区和php类日期来更改它的准确性,因此: 我的问题是,最好的解决方案是保留服务器时区还是使用用户时区? 如果我使用用户时区,是否也应像示例中那样保存时区名称? 问题答案: 我建议使用服务器

  • 我有一个关于不和的问题。皮耶。我运行我的bot所在的两个独立服务器:测试服务器和主服务器。问题是,当我在测试服务器中发送消息时,bot会将其消息发送到主服务器,而不会将其发送回调用命令的服务器(仅在函数中)。 例如: 如果我在测试服务器中键入上述内容,我的bot将以“你好!”在测试服务器中。但是,如果我尝试将此代码放入函数并调用它: 通道ID显然设置为特定服务器。因此,假设我将ID“1234”作为

  • 问题内容: 到目前为止,我已经使用Selenium Actions库来在自动化项目中执行鼠标/键盘操作。 最近,我发现了Java AWT Robot类。它与SeleniumActions库有什么可比性?在其中一个案例中是否存在一些可以解决的极端情况?限制?稳定性?性能方面的考虑? 问题答案: 这些工具的工作方式存在巨大差异。使用WebDriver API并将命令发送到浏览器以执行操作(通过“ JS

  • 我正试着用电报机器人给一群人发送信息。首先,我认为知道群聊id就足够了,但事实并非如此。机器人必须是该组的一部分。好吧,这有点道理,但问题是:当你把一个机器人添加到一个组(在本例中是一个大组)时,每个人都开始在他们的设备上看到一个新的图标,一个“斜杠”图标。他们是做什么的?他们点击它,看到命令列表,选择其中一个,突然每个人都从群里得到了一个新的消息:一个“/something”。想象一下几十个人都

  • 此服务器是使用mongoose web服务器改写的并发抓取多个页面的服务器, 使用可以查看test.php

  • 我知道如果我们想在外部服务器上部署Spring boot Web应用程序,我们应该排除嵌入式服务器,但如果我们不这样做会发生什么?假设我在jboss外部服务器上部署Spring boot war,但我没有排除tomcat服务器?在这种情况下,Spring boot使用jboss外部服务器,还是仍然使用嵌入式tomcat服务器?