使用德塔云破解百度旋转图片验证码获取旋转的角度
static int GetVerfiCodeAngle(IBrowser browser,string imgUrl)
{
int angle = 0;
string filename = DateTime.Now.ToString("yyyyMMddHHmmssffff").ToString() + ".jfif";
try
{
new WebClient().DownloadFile(imgUrl, filename);
}
catch (Exception)
{
Console.WriteLine("下载图片异常");
return angle;
}
string img_base64Str = FileHelper.FileToBase64Str(filename);
HttpClientHandler handler = new HttpClientHandler()
{
UseCookies = false
};
HttpClient client = new HttpClient(handler);
client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36");
client.DefaultRequestHeaders.Add("Referer", "http://www.detayun.cn/tool/verifyCodeIdentifyPage/?verify_idf_id=9&_=1669873036912");
client.DefaultRequestHeaders.Add("X-Requested-With", "XMLHttpRequest");
client.DefaultRequestHeaders.Add("Accept", "application/json, text/javascript, */*; q=0.01");
string apiUrl = "http://www.detayun.cn/tool/verify_code_identify/";
Dictionary<string, string> fd = new Dictionary<string, string>();
fd.Add("verify_idf_id", "9");
fd.Add("img_base64", img_base64Str);
fd.Add("words", "");
var formStr = string.Join("&", fd.Select(kv => $"{kv.Key}={HttpUtility.UrlEncode(kv.Value)}"));
var formCtx = new StringContent(formStr, Encoding.UTF8, "application/x-www-form-urlencoded");
var message = new HttpRequestMessage(HttpMethod.Post, apiUrl);
reset:
string cookie = Dc.ToStr(DB.Scalar(conStr, "select Cookies from *"));
message.Headers.Add("Cookie", cookie);
message.Content = formCtx;
var result = client.SendAsync(message).Result.Content.ReadAsStringAsync().Result;
if (!string.IsNullOrEmpty(result))
{
var resModel = JsonConvert.DeserializeObject<dynamic>(result);
if (Dc.ToInt(resModel.code) == 200)
{
string res_str = resModel.data.res_str;
if (!string.IsNullOrEmpty(res_str))
{
angle = Dc.ToInt(res_str.Replace("顺时针旋转", "").Replace("度", ""));
Console.WriteLine("旋转度数为" + angle + "度");
}
}
else
{
Console.WriteLine("德塔云cookie已失效,开始重新登录...");
GetddyCookie(browser).Wait();
goto reset;
}
}
return angle;
}
public async static Task GetddyCookie(IBrowser browser)
{
using (var page =await browser.NewPageAsync())
{
await page.GoToAsync("http://www.detayun.cn/account/loginPage/", WaitUntilNavigation.Networkidle0);
try
{
await page.TypeAsync("#username", "德塔云账号");
await page.TypeAsync("#password", "德塔云密码");
await page.EvaluateExpressionAsync("$('.layui-icon-ok')[0].click()");
Thread.Sleep(1000);
await page.EvaluateExpressionAsync("document.getElementById('login_btn').click()");
}
catch (Exception ex)
{
Console.WriteLine("登录德塔云异常:" + ex.Message);
}
await page.WaitForNavigationAsync();
Thread.Sleep(1000);
var cookies= page.GetCookiesAsync().Result;
StringBuilder sb = new StringBuilder();
foreach (var item in cookies)
{
sb.Append(item.Name + "=" + item.Value + ";");
}
string cookie = sb.ToString();
DB.Query(conStr, "update cookies");
}
}