gpt4 book ai didi

java - 远程登录亚马逊

转载 作者:行者123 更新时间:2023-12-01 12:12:47 24 4
gpt4 key购买 nike

已针对各种环境讨论了如何登录亚马逊的问题在堆栈溢出上:

里程似乎会根据所采取的方法而有所不同。例如。截至 2013 年,一条评论是:

亚马逊此后改变了他们的登录流程,添加了某种 CSFR 保护,这使得使用 cURL 登录变得困难

使用 Java,我也没有运气尝试直接类似 curl 的方法并摆弄 OpenId 参数:

// https://www.amazon.com/ap/signin?
// _encoding=UTF8&
// openid.assoc_handle=usflex&
// openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&
// openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&
// openid.mode=checkid_setup&
// openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&
// openid.ns.pape=http%3A%2F%2Fspecs.openid.net%2Fextensions%2Fpape%2F1.0&
// openid.pape.max_auth_age=0&
// openid.return_to=https%3A%2F%2Fwww.amazon.com%2Fgp%2Fsign-in.html%3Fie%3DUTF8%26*Version*%3D1%26*entries*%3D0

问题:

在这里使用类似于 ruby​​ mechanize 的风格是否有效,而这在 Java 上是否可以工作?

最佳答案

使用 Selenium 参见 http://www.seleniumhq.org/可以通过简单的方式登录。请参阅下面的示例代码

请注意:AmazonUser 只是一个辅助类,用于保存登录所需的元素:

  • 电子邮件
  • 密码

使用示例

Amazon amazon = new Amazon();
String html = amazon
.navigate("/gp/css/order-history/ref=oh_aui_menu_open?ie=UTF8&orderFilter=open");

亚马逊助手类

import org.openqa.selenium.By;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

/**
* Amazon handling
* @author wf
*
*/
public class Amazon {
FirefoxDriver driver = new FirefoxDriver();
String root="https://www.amazon.de";

/**
* signIn
* @throws Exception
*/
public void signIn() throws Exception {
// <input type="email" autocapitalize="off" autocorrect="off" tabindex="1" maxlength="128" size="30" value="" name="email" id="ap_email" />
WebElement emailField=driver.findElement(By.id("ap_email"));
// get user and password
AmazonUser auser=AmazonUser.getUser();
emailField.sendKeys(auser.getEmail());
// <input type="password" class="password" onkeypress="displayCapsWarning(event,'ap_caps_warning', this);" tabindex="2" size="20" maxlength="1024" name="password" id="ap_password" />
WebElement passwordField=driver.findElement(By.id("ap_password"));
passwordField.sendKeys(auser.getPassword());
// signInSubmit-input
WebElement signinButton=driver.findElement(By.id("signInSubmit-input"));
signinButton.click();
}

/**
* navigate to the given path
* @param path
* @return
* @throws Exception
*/
public String navigate(String path) throws Exception {
driver.get(root+path);
String html=driver.getPageSource();
if (html.contains("ap_signin_form")) {
signIn();
}
html=driver.getPageSource();
return html;
}

public void close() {
driver.close();
driver.quit();
}


}

关于java - 远程登录亚马逊,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27183439/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com