public TokenCollection ExtractTokens(Response response) { TokenCollection tokens = new TokenCollection(); if (response.Headers.ContainsKey("Content-Type") && response.Headers["Content-Type"].Count >= 1 && response.Headers["Content-Type"][0].Contains("text/html")) { HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(response.Content); var nodes = doc.DocumentNode.SelectNodes("//input[@type=\"hidden\"]"); if (nodes != null) { foreach (HtmlNode node in nodes) { string value = node.GetAttributeValue("value", ""); if (value != "") { HtmlFormToken token = new HtmlFormToken(node.GetAttributeValue("name", "likely-csrf"), value, TypeGuesser.GuessTypes(value)); tokens.Add(token); } } } } return(tokens); }
public void HtmlFormToken_KeyValue_ReplaceSecondValue() { string content = "key1=value1&key2=value2"; Request request = new Request(new Uri("http://test.com"), HttpMethod.Get, content); request.Headers.Add("Content-Type", new List <string> { "application/x-www-form-urlencoded" }); HtmlFormToken token1 = new HtmlFormToken("key2", "", Types.String); token1.ReplaceValue(request, "testvalue"); Assert.Equal("key1=value1&key2=testvalue", request.Content); }
public TokenCollection ExtractTokens(Request request) { TokenCollection tokens = new TokenCollection(); if (request.Headers.ContainsKey("Content-Type") && request.Headers["Content-Type"].Count >= 1 && request.Headers["Content-Type"][0] == "application/x-www-form-urlencoded") { string[] pairs = request.Content.Split("&"); foreach (string pair in pairs) { if (pair.Length >= 3) { string[] data = pair.Split('=', 2); HtmlFormToken token = new HtmlFormToken(HttpUtility.UrlDecode(data[0]), HttpUtility.UrlDecode(data[1]), TypeGuesser.GuessTypes(HttpUtility.UrlDecode(data[1]))); tokens.Add(token); } } } return(tokens); }