您的位置:首页 > 编程语言 > C语言/C++

C++ 纯socket 模拟登录37.com【过验证码】

2014-08-08 20:30 323 查看
post部分比较容易, 网上也很多, 一般来说, 使用socket发包需要处理较多情况, 具体细节可以在RLib的源码中找到, 这里就不贴了.验证码设计得比较简单, 几句代码就可以搞定了, 99%识别(偶尔网络失败)
extern "C" __declspec(dllexport) int WINAPI QueryVerifyCode(IN OUT LPTSTR collcc)
{
	HttpResponse *pResponse = nullptr;
	auto pImageStream = Net::WebClient::GetResponseStream(String(T("http://my.37.com/code.php?COLLCC=")) + collcc,
		nullptr, &pResponse);
	if (pImageStream != nullptr)
	{
		if (pResponse == nullptr)
		{
			delete pImageStream;
			return -1;
		}

		XYCode verify_code(pImageStream);

		pResponse->Close();//delete pImageStream;

		//干掉          顶部 底部
		verify_code.VTrim(3, 4);
		//干掉           左  右
		verify_code.HTrim(6, 6);
		//去噪
		verify_code.ChangePixel(0, 0, 255, 0, 0, 255, 0, 0, 255);

		if (verify_code.RecognizeImage())
		{
			String rt = verify_code.UTF8Text.Trim().Replace(T(" "), T(""));

			debug_warning(rt);//识别结果

			return 1;
		}
	}

	return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: