CasperJS:亚马逊无限验证码登录

问题描述 投票:0回答:3

我正在使用 Casperjs 登录我的亚马逊帐户并检索一些数据。

但偶尔我会在登录时收到验证码。因此 casperjs 向我显示验证码,我手动返回解决方案,以便它可以提交表单。

问题是CasperJS立即得到另一个验证码,这一次更困难。我也解决了这个问题,但又出现了一个验证码...等等无限期...

我没有做任何特别的事情,只是一些 casperjs 的填充和点击。 Casperjs在页面中加载带有验证码解决方案的外部js文件,然后提交。

我确信已提交正确的验证码。 亚马逊怎么能这么肯定让我陷入无限循环?

javascript php phantomjs casperjs
3个回答
0
投票

从他们的角度考虑它是什么样的。他们可以根据鼠标和键盘交互判断机器人正在访问您的帐户。人类在搜索登录按钮时会扫描页面并随机移动鼠标。您的脚本会直接跳转到单击选择器。

当验证码出现时,您将其填写。这并不能证明您是人类。这只是证明你的机器人可以提醒你输入验证码,让人类填写。其余的交互都是由机器人完成的,亚马逊充分意识到这一点。您可以回答任意数量的验证码,但到目前为止的交互仍然会被标记为机器人。

您可能想要走不同的路线,比如使用 cookie 来启动 CasperJS 会话,您的帐户已经登录。或者,亚马逊是否提供任何类型的 API 来提取您感兴趣的值?

他们出于真诚的爱和关心而阻止你的机器人,如果这能让你感觉好一些!


0
投票

不幸的是,这不是一门精确的科学,因此可能不存在通用的、持久的解决方案。 Amazon.com 使用不同的技术来检查您是否是机器人,包括浏览器指纹识别、cookie 挑战和用户行为分析(鼠标移动等)。

我会首先尝试随机化用户代理的某些部分,只是为了看看是否有效。我还会尝试像 Chromium 这样的完整无头浏览器,使用 Selenium 允许脚本与其对话。

请问您尝试抓取您的帐户的频率是多少?我认为如果你每天这样做一次,那应该没什么大不了的。


0
投票

当使用 CasperJS 处理亚马逊上的连续验证码时,这是一个明显的迹象,表明亚马逊的安全系统将您的抓取尝试标记为自动,这在网络抓取中是一个相当常见的挑战。尽管需要手动解决验证码,但这些挑战的重复性表明亚马逊的算法正在有效地检测类似机器人的行为。

解决此问题的一种方法是改进 CasperJS 脚本以更紧密地模仿人类交互。然而,鉴于亚马逊先进的检测系统,这可能非常复杂,并且可能并不总是成功。

作为替代方案,请考虑使用 Web 抓取服务,例如 Crawlbase。这些服务旨在处理复杂的抓取任务,并且通常具有处理验证码、IP 轮换和无头浏览的机制,使它们成为应对具有挑战性的抓取场景的更简单的解决方案。

这是一个使用请求的简化 Python 示例,在这种情况下可能更具弹性:

import requests

def fetch_amazon_data(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)'
    }
    response = requests.get(url, headers=headers)
    if response.status_code == 200:
        return response.content
    else:
        print("Failed to fetch data:", response.status_code)
        return None

# Example usage
data = fetch_amazon_data('https://www.amazon.com/your-product-page')

在此脚本中,我们使用一个简单的用户代理来使我们的请求看起来更像典型的浏览器请求。请记住,即使进行了这些调整,抓取亚马逊仍然具有挑战性。

对于更直接且可能更有效的方法,特别是如果您经常面临验证码挑战,使用 Crawlbase 等服务可以简化流程。它们处理网络抓取的更复杂的方面,包括验证码解决和通过 Amazon 等 JavaScript 密集型网站进行导航。但是,请始终确保您的抓取行为遵守法律标准和亚马逊的服务条款。

© www.soinside.com 2019 - 2024. All rights reserved.