首页 > 编程问答 >Facebook在Linux服务器上使用selenium登录

Facebook在Linux服务器上使用selenium登录

时间:2024-07-22 07:36:41浏览次数:11  
标签:python linux selenium-webdriver facebook-login

我已经想到了这个项目。其中一部分是登录 Facebook 帐户。 这段代码在我的本地机器(windows)和本地服务器(ubuntu)上完美运行,但当我在在线 Linux 服务器上运行它时它不起作用。

def login_facebook(driver, email, password):
    try:
        logging.info("Logging into Facebook...")
        driver.get('https://www.facebook.com')

        email_input = WebDriverWait(driver, 30).until(
            EC.presence_of_element_located((By.ID, 'email'))
        )
        logging.info("Email found")
        email_input.send_keys(email)

        password_input = WebDriverWait(driver, 30).until(
            EC.presence_of_element_located((By.ID, 'pass'))
        )
        logging.info("Password found")
        password_input.send_keys(password)
        password_input.send_keys(Keys.RETURN)
        logging.info("Keys sent")

        # Adjust XPath or use a different locator strategy
        WebDriverWait(driver, 120).until(
                EC.visibility_of_element_located((By.XPATH, '//*[@aria-label="Facebook"]'))
            )
        logging.info("Logged into Facebook successfully.")
    except Exception as e:
        error_message = f"Error while logging into Facebook: {str(e)}"
        logging.error(error_message)
        send_error_email(error_message)

经过几个小时的调试后我仍然不知道如何解决可以,但我知道什么是行不通的。 该代码在检查“//*[@aria-label="Facebook"]”之前可以完美运行。 时间一分一秒过去,登录失败。 正如我之前所说,代码在我的 Windows 机器和本地 ubuntu 服务器上完美运行,根本没有任何更改,因此很难找到解决方案。

我尝试将 aria-label 更改为其他内容,但是仍然什么都没有。

这是错误,即使它不是很直接,也许它可以提供帮助:

2024-07-21 03:01:02,836 - ERROR - Error while logging into Facebook: Message:
Stacktrace:
#0 0x639c45d33c4a <unknown>
#1 0x639c45a2e29c <unknown>
#2 0x639c45a79bc1 <unknown>
#3 0x639c45a79cb1 <unknown>
#4 0x639c45abdf94 <unknown>
#5 0x639c45a9c96d <unknown>
#6 0x639c45abb33a <unknown>
#7 0x639c45a9c6e3 <unknown>
#8 0x639c45a6c879 <unknown>
#9 0x639c45a6d1ce <unknown>
#10 0x639c45cfc96f <unknown>
#11 0x639c45d00af6 <unknown>
#12 0x639c45ce979c <unknown>
#13 0x639c45d01291 <unknown>
#14 0x639c45ccf6ce <unknown>
#15 0x639c45d230d8 <unknown>
#16 0x639c45d232e6 <unknown>
#17 0x639c45d32cfd <unknown>
#18 0x7cdf49edeac3 <unknown>

非常感谢任何帮助。


根据提供的信息,遇到的问题似乎与 Facebook 登录过程本身无关,而是与在线 Linux 服务器的环境或网络配置有关。此问题在的本地 Windows 和 Ubuntu 机器上不会发生,这表明问题出在服务器环境中。

以下是可能导致此问题的几个原因以及可以尝试的解决方案:

  1. 网络连接问题:

  2. 服务器防火墙: 的服务器防火墙可能阻止了对 Facebook 域的访问。确保端口 443(HTTPS)对 www.facebook.com 开放。

  3. DNS 解析: 的服务器可能无法正确解析 Facebook 的域名。尝试使用 nslookup www.facebook.com 进行测试。如果无法解析,请检查的 DNS 设置或联系的托管服务提供商。
  4. 网络延迟: 的服务器与 Facebook 服务器之间的网络连接可能存在延迟。尝试使用 ping www.facebook.com 检查延迟。如果延迟很高,则可能会导致超时问题。

  5. 浏览器/WebDriver 配置:

  6. 无头模式: 如果使用的是无头浏览器(例如,无 GUI 的 Chrome 或 Firefox),则 Facebook 可能会检测到它并阻止登录。尝试使用带 GUI 的浏览器或调整无头浏览器设置以更好地模拟真实用户。

  7. 用户代理: 的 WebDriver 可能正在发送一个过时或不受支持的用户代理字符串,这会导致 Facebook 阻止登录。尝试使用最新的用户代理字符串。
  8. 浏览器版本: 请确保使用的浏览器版本与的 WebDriver 版本兼容。

  9. Facebook 安全机制:

  10. 可疑登录尝试: Facebook 可能将来自的服务器的登录尝试检测为可疑活动并阻止了它。尝试使用其他帐户或 IP 地址登录以查看问题是否仍然存在。

  11. 双重身份验证: 如果的 Facebook 帐户启用了双重身份验证,则需要在脚本中实现相应的逻辑来处理它。

  12. 其他问题:

  13. 缺少依赖项: 确保的服务器上安装了所有必需的依赖项,包括 Chrome/Firefox 浏览器本身以及相应的 WebDriver。

  14. 服务器资源: 如果的服务器资源有限(例如,内存或 CPU),则可能会导致 WebDriver 运行缓慢或崩溃。

调试步骤:

  1. 检查服务器日志: 检查的服务器日志以获取有关该问题的更多信息。
  2. 启用 WebDriver 日志记录: 启用 WebDriver 日志记录以获取有关浏览器和 WebDriver 之间交互的更多详细信息。
  3. 逐步执行代码: 使用调试器逐步执行代码,以查看问题发生的确切位置。

其他建议:

  • 尝试使用 Facebook 提供的官方 API 来执行登录,而不是使用 Selenium 进行网页抓取。
  • 联系的托管服务提供商以获取进一步的帮助。

请记住,使用 Selenium 自动化登录 Facebook 违反了 Facebook 的服务条款。请谨慎操作,并考虑使用 Facebook 提供的官方 API 来实现的目标。

标签:python,linux,selenium-webdriver,facebook-login
From: 78773743

相关文章

  • 使用 pip 22.3.1 和 python 3.11.0 安装 MetaTrader5 错误
    我正在尝试使用pip在Windows上安装MetaTrader5。python--versionPython3.11.0pip--versionpip22.3.1pipinstallMetaTrader5ERROR:CouldnotfindaversionthatsatisfiestherequirementMetaTrader5(fromversions:none)ERROR:Nomatchingdistribu......
  • 在 Python 中溶解线条
    我有一个包含多行的形状文件。我正在寻找一种方法来消除所有的接触线。这在ArcMap中是可能的,但似乎在Python和QGIS中都无法做到:之前:所需的输出:这需要在多行上完成,因此像QGIS合并一样手动执行不是一个选项。在ArcMap中,我曾经使用“溶解”......
  • 一个简单的问题(python、串行通信和arduinos)
    只是一个关于小脚本的快速问题,由于某种原因无法工作我运行了这个脚本:importserialimporttimeimportturtledefserialreading():serialPort=serial.Serial(port="COM5",baudrate=9600,bytesize=8,timeout=2,stopbits=serial.STOPBITS_ONE......
  • 我在 Windows 10 上运行 Python 代码后控制台立​​即关闭
    虽然我在代码末尾使用input(),但在Windows10(IDLE之外)的窗口中输入名称后,控制台仍然立即关闭,并且我看不到结果。我该怎么做才能阻止控制台关闭?#!python3name=input('Enteryourname:')print('Hello'+name)input('pressEntertoexit:')你在代码末尾......
  • 具有未定义嵌套列表深度的嵌套列表的Python注释类型
    [[1,2,3],3,[2,4],5]的类型是list[list[int]|int]但是,如果嵌套列表具有未定义的深度,例如[[[1,2]],2,[1,[3,[3]]]],3,[2,[2]]],那么它会具有什么类型?可以使用递归类型提示来表示任意深度嵌套的列表:fromtypingimportList,Union......
  • 在Spyder(Python 3.6)中导入cv2时出现导入错误
    我已经在Windows操作系统中安装了opencv3.0.0。我已运行该应用程序并已成功将其安装在C:\驱动器中,并且还将cv2.pyd文件复制到C:\Python27\Lib\site-packages中,正如我在几个教程视频中看到的那样在我的Python2.7.5Shell中,即当我键入>>>i......
  • Python + VS Code 调试器:可视化我的程序当前正在执行的源代码中的位置?
    当我使用VSCodePython调试器时:我可以执行我的程序,以便编辑器将我逐行带到源代码中的任何位置(跳转到相关文件/如果尚未打开则将其打开)目前的执行情况是?是的,VSCode的Python调试器可以让你逐行执行代码,并实时显示当前执行的位置。以下是操作方法:1.设置断点:......
  • 如何立即取消使用 Ollama Python 库生成答案的 Asyncio 任务?
    我正在使用Ollama通过OllamaPythonAPI从大型语言模型(LLM)生成答案。我想通过单击停止按钮取消响应生成。问题在于,只有当响应生成已经开始打印时,任务取消才会起作用。如果任务仍在处理并准备打印,则取消不起作用,并且无论如何都会打印响应。更具体地说,即使单击按钮后,此函数......
  • 使用 np.array 索引过滤 Python 列表
    谁能向我解释一下列表self.data如何使用numpy索引数组selec_idx进行索引/过滤?完整的课程可在https://github.com/kaidic/LDAM-DRW/blob/master/imbalance_cifar.pydefgen_imbalanced_data(self,img_num_per_cls):new_data=[]n......
  • 尝试在cmd(python)中安装turtle
    当我在cmd中编写pipinstallturtle后,这条消息出现在我面前。有人知道该怎么办吗?C:\>pipinstallturtleCollectingturtleUsingcachedturtle-0.0.2.tar.gz(11kB)ERROR:Commanderroredoutwithexitstatus1:command:'C:\Users\Bruger\App......