gpt4 book ai didi

java - 代表用户输入 capthca 值

转载 作者:行者123 更新时间:2023-12-01 19:04:00 25 4
gpt4 key购买 nike

我遇到了一种情况:我部署在服务器上的 Java 程序从网站获取带有验证码图像的页面。该图像将显示给最终用户,最终用户将输入验证码的值并将该页面提交到服务器。服务器将该值提交到主网站。

我已经使用http客户端尝试过,但在提交时,它说图像值无效。

请帮助我。 显示用户 capthca 图像的代码

HttpClient hc=new HttpClient();
GetMethod gm=new GetMethod("https://abc.com/register");
int sta=hc.executeMethod(gm);
String line=gm.getResponseBodyAsString();

urlStr="https://abc.com/captchaImage";
URL url=new URL(urlStr);
BufferedImage img1 = ImageIO.read(url);
ImageIO.write(img1, "jpg", out);

向 abc.com 提交请求

HttpClient hc=new HttpClient();
PostMethod hm=new PostMethod("https://abc.com/submit");
hm.addParameter("pwd","Asdf@123456" );
hm.addParameter("confirmPwd","Asdf@123456");
hm.addParameter("hintQues","Birth+City");
hm.addParameter("hintAns","fdgf");
hm.addParameter("captchavalue",request.getParameter("cap"));
hm.addParameter("register","Register");
int returnCode = hc.executeMethod(hm);
out.println(hm.getResponseBodyAsString());

最佳答案

我还没有分析 abc.com 的注册工作原理,但我敢打赌,它要么使用一些隐藏字段(我在代码中没有看到任何参数),要么使用 cookie 来记住向用户显示的验证码,从而验证浏览器发送的验证码值是否正确。

由于您没有发送隐藏字段值,并且由于您使用的是全新的 HttpClient 实例,因此您正在向服务器发送验证码值,但它无法知道您要使用哪个验证码发送此值,因此无法验证它。

尝试重用与用于从服务器获取注册页面的实例相同的 HttpClient 实例。这样,存储在 HttpClient 状态中的 cookie 将被发送回服务器。

关于java - 代表用户输入 capthca 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10970378/

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