gpt4 book ai didi

ios - 在 UIWebView 中自动填充用户名和密码

转载 作者:可可西里 更新时间:2023-11-01 03:40:47 25 4
gpt4 key购买 nike

我正在为我做一个非常简单的应用程序。当我启动这个应用程序时,它只是将我带到这个网页 https://social.tre.it/expert .

我想自动登录,有没有办法自动填写用户名和密码,选中“我接受条件”标记并按下“登录”按钮?

我试过这个 Autofill Username and Password UIWebView Swift但它不起作用,我不是该页面的创建者,所以我不知道它的确切结构。

即使 iCloud 钥匙串(keychain)可以填写表格也会很酷......但也许我要求太多了!

最佳答案

您可以使用 JavaScript 来完成。

如果您检查页面,您可以很容易地找到文本输入字段的 ID(expert_emailexpert_password)并执行一些 JS 代码来填充它们。

像这样实现 UIWebView 委托(delegate)的 webViewDidFinishLoad 方法:

objective-c :

- (void)webViewDidFinishLoad:(UIWebView *)webView {
//fill data
NSString *email = @"myemail@email.com";
NSString *password = @"mypassword";
NSString *fillDataJsCall = [NSString stringWithFormat:@"document.getElementById('expert_email').value = '%@';document.getElementById('expert_password').value = '%@';", email, password];
[webView stringByEvaluatingJavaScriptFromString:fillDataJsCall];

//check checkboxes
[webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('expert_remember_me').checked = true; document.getElementById('expert_terms_of_service').checked = true;"];

//submit form
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^(void)
{
[webView stringByEvaluatingJavaScriptFromString:@"document.forms[\"new_expert\"].submit();"];
});
}

SWIFT:

func webViewDidFinishLoad(webView: UIWebView) {

// fill data
let savedUsername = "USERNAME"
let savedPassword = "PASSWORD"

let fillForm = String(format: "document.getElementById('expert_email').value = '\(savedUsername)';document.getElementById('expert_password').value = '\(savedPassword)';")
webView.stringByEvaluatingJavaScriptFromString(fillForm)

//check checkboxes
webView.stringByEvaluatingJavaScriptFromString("document.getElementById('expert_remember_me').checked = true; document.getElementById('expert_terms_of_service').checked = true;")

//submit form
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(1 * NSEC_PER_SEC)), dispatch_get_main_queue()){
webView.stringByEvaluatingJavaScriptFromString("document.forms[\"new_expert\"].submit();")
}
}

这应该填写您的信息。但是,如果此网站将来更改其结构,则此代码很容易被破坏。当您处理自己的页面时,这种执行 JS 代码的方法更合理。

编辑:

我更新了代码以演示如何选中复选框以及如何提交表单。

一些注意事项:

  • 当登录失败时,页面会重新加载,所以你将以无限循环调用 webViewDidFinishLoad 结束,因为你试图一遍又一遍地提交,所以你可能想在这种情况下添加一些逻辑来打破。这就是为什么我在提交之前延迟,以便能够看到发生了什么。
  • 除了上一点中的信息之外 - 在登录成功后(当重定向到下一页时)您仍然会收到对 webViewDidFinishLoad 的调用,因此您可能想要举起一个标志一旦加载了不同的页面(仅在登录页面上执行登录尝试)。

关于ios - 在 UIWebView 中自动填充用户名和密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35140030/

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