所以我一直在为需要验证码才能解决的人尝试一些东西,但是webbrowser太慢而无法抓住它所以我正在使用webrequests。问题是我需要抓住挑战钥匙而且我没有运气。它看起来像......
var RecaptchaState = {
challenge : '03AHJ_VuuOA-onKBOBYPP4ZWNEM4amq2l-ocAKYyDHYNFYedo7JsuX5xRR0WH-x5Wh8_n2O-iAybFyloxaxUwzMIzVgXBfjTdJ0CP5LKp1QWaGV4L7iTZAQ_xBWmKU_xTZquGaYMzMm8javZHQZG4nVeVKAuhJSvkmm9v2A0YV1Dkq_4yNywEc73kYpzZFLkZxduca3WLsAg7SZCA46VZadR_6JqILT6QnkTVfUXi0O6Qe3-C653oNrErJKPihVmx1apU96qNboXlo4LzDA3ACuO763QM_qUUCpg',
timeout : 1800,
lang : 'en',
server : 'http://www.google.com/recaptcha/api/',
因此在挑战之后:它需要随身携带钥匙。我以为我可以使用类似JSON.Net的东西来解析它,它不会接受它,因为它真的是不是纯JSON。我在想也许是正则表达式?我对Regex很糟糕,所以我甚至不知道怎么做。有什么建议?谢谢。
答案 0 :(得分:0)
如果你不能用Json.Net解析它,你至少必须以字符串形式访问它,然后你可以使用正则表达式获得你需要的值(假设你需要{{1}之后的值}):
challenge:
代码:
(?<=challenge\s*:\s*')[^']+(?=')
输出:
var bad_json = "challenge : '03AHJ_VuuOA-onKBOBYPP4ZWNEM4amq2l-ocAKYyDHYNFYedo7JsuX5xRR0WH-x5Wh8_n2O-iAybFyloxaxUwzMIzVgXBfjTdJ0CP5LKp1QWaGV4L7iTZAQ_xBWmKU_xTZquGaYMzMm8javZHQZG4nVeVKAuhJSvkmm9v2A0YV1Dkq_4yNywEc73kYpzZFLkZxduca3WLsAg7SZCA46VZadR_6JqILT6QnkTVfUXi0O6Qe3-C653oNrErJKPihVmx1apU96qNboXlo4LzDA3ACuO763QM_qUUCpg'";
var challenge_value = Regex.Match(bad_json, @"(?<=challenge\s*:\s*')[^']+(?=')").Value;