Suggestion
Semantic Kernel agents doing web research hit Cloudflare-protected sites constantly. The built-in web search plugins find URLs but agents can't reliably read the actual content.
anybrowse could work as a Semantic Kernel plugin -- real residential Chrome for Cloudflare bypass, clean markdown output.
// As a custom SK function
[KernelFunction("scrape_url")]
[Description("Scrape a URL and return clean markdown, including Cloudflare-protected sites")]
public async Task<string> ScrapeUrl(string url)
{
var client = new HttpClient();
var response = await client.PostAsJsonAsync("https://anybrowse.dev/scrape", new { url });
var data = await response.Content.ReadFromJsonAsync<JsonElement>();
return data.GetProperty("markdown").GetString() ?? "";
}
Or via MCP:
{
"mcpServers": {
"anybrowse": {"type": "streamable-http", "url": "https://anybrowse.dev/mcp"}
}
}
Suggestion
Semantic Kernel agents doing web research hit Cloudflare-protected sites constantly. The built-in web search plugins find URLs but agents can't reliably read the actual content.
anybrowse could work as a Semantic Kernel plugin -- real residential Chrome for Cloudflare bypass, clean markdown output.
Or via MCP:
{ "mcpServers": { "anybrowse": {"type": "streamable-http", "url": "https://anybrowse.dev/mcp"} } }