httpwebrequest验证码问题,请指教

zhongnba 2008-11-25 03:53:07
我现在用httpwebrequest post一个表单到一个URL上,但是这个页面上是有需要验证码的。各位遇到这种情况,这个验证码是怎么得到值的。谢谢,我在测试的时候把那个验证码先给它写死,就是先从那个网站上抄下来,填入。但是查询到的数据是空的。有点类似自动登录这样的,但是有验证码。
...全文
397 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhongnba 2008-11-26
  • 打赏
  • 举报
回复
关键是我跟踪的时候,没有得到cookie啊,但是我用httpwatch查看,发现那个图片是一个页面,在那个页面有一个cookie
jetjy 2008-11-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 brood108 的回复:]
第一步 httpwebrequest 请求主页面 获取cookie
第2步,请求验证码(注意需要带上第一次请求得到的cookie) 把验证码保存下来 人为识别输入
第3步 post数据 注意这一步需要用第一步的cookie和第2步的验证码


这样才可以完成一次请求
验证码识别劝你还是放弃吧 验证码识别比httpwebrequest要复杂多了。
[/Quote]

可以用特征值等方法識別第2步的驗證碼圖片
怎么識別網上有,方法很多,除非驗證碼簡單,否則100%很難
brood108 2008-11-26
  • 打赏
  • 举报
回复
第一步 httpwebrequest 请求主页面 获取cookie
第2步,请求验证码(注意需要带上第一次请求得到的cookie) 把验证码保存下来 人为识别输入
第3步 post数据 注意这一步需要用第一步的cookie和第2步的验证码


这样才可以完成一次请求
验证码识别劝你还是放弃吧 验证码识别比httpwebrequest要复杂多了。
zhongnba 2008-11-26
  • 打赏
  • 举报
回复
我得到验证码的URL跟post上去得到结果的URL如果不一样的话可不可以。
yanrabbit163 2008-11-26
  • 打赏
  • 举报
回复
不行的,一般情况下验证码是每请求一次出一个,你前面取到的和后面的不一样的
zhongnba 2008-11-26
  • 打赏
  • 举报
回复
我也是想把那个网站的验证码取下来让用户输,但是取到的结果跟在它那个网站上输入得到的结果不一样,不知道是怎么办,请各位指教。
feiyun0112 2008-11-26
  • 打赏
  • 举报
回复
用httpRequest访问http://www.easdo.com:8000/jtwf/image.jsp得到cookie和图片
哈哈 2008-11-25
  • 打赏
  • 举报
回复
好像有些程序能做到自动识别数字验证码,于是就有了很多变态的验证码:加干扰信息。

楼主说的这个问题不大好解决,如果那个站点是自己的话,可以先把验证码的值传过来,作为参数的值再POST过去
游北亮 2008-11-25
  • 打赏
  • 举报
回复
验证码各个网站的具体实现不尽相同,不好处理
我一般是弹出图片让用户输入验证码
zhongnba 2008-11-25
  • 打赏
  • 举报
回复
num = HttpUtility.UrlEncode(num);
carNum = HttpUtility.UrlEncode(carNum);
type = HttpUtility.UrlEncode(type);
code = HttpUtility.UrlEncode(code);
btnText = HttpUtility.UrlEncode(btnText);
string formatString = "num={0}&carNum={1}&carType={2}&rand={3}&submit={4}";
string postString = string.Format(formatString, num, carNum, type, code, btnText);
byte[] postData = System.Text.Encoding.ASCII.GetBytes(postString);

_httpRequest = WebRequest.Create(_url) as HttpWebRequest;
_httpRequest.Method = "POST";
_httpRequest.ContentType = "application/x-www-form-urlencoded";
_httpRequest.ContentLength = postData.Length;

System.IO.Stream outputStream = _httpRequest.GetRequestStream();
outputStream.Write(postData, 0, postData.Length);
outputStream.Close();

HttpWebResponse rsObj = _httpRequest.GetResponse() as HttpWebResponse;
return rsObj;

我把这个rsObj返回回来,但是得到的HTML源代码结果不正确。说明:_url是post的地址,

62,269

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧