AzureCrawler alternatives and similar packages
Based on the "Misc" category.
Alternatively, view AzureCrawler alternatives based on common mentions on social networks and blogs.
-
Polly
Polly is a .NET resilience and transient-fault-handling library that allows developers to express policies such as Retry, Circuit Breaker, Timeout, Bulkhead Isolation, and Fallback in a fluent and thread-safe manner. From version 6.0.1, Polly targets .NET Standard 1.1 and 2.0+. -
FluentValidation
A popular .NET validation library for building strongly-typed validation rules. -
Humanizer
Humanizer meets all your .NET needs for manipulating and displaying strings, enums, dates, times, timespans, numbers and quantities -
Edge.js
Run .NET and Node.js code in-process on Windows, MacOS, and Linux -
ReactJS.NET
.NET library for JSX compilation and server-side rendering of React components -
ScriptCS
Write C# apps with a text editor, nuget and the power of Roslyn! -
Hashids.net
A small .NET package to generate YouTube-like hashes from one or many numbers. Use hashids when you do not want to expose your database ids to the user. -
Coravel
Near-zero config .NET library that makes advanced application features like Task Scheduling, Caching, Queuing, Event Broadcasting, and more a breeze! -
Enums.NET
Enums.NET is a high-performance type-safe .NET enum utility library -
Scientist.NET
A .NET library for carefully refactoring critical paths. It's a port of GitHub's Ruby Scientist library -
WorkflowEngine
WorkflowEngine.NET - component that adds workflow in your application. It can be fully integrated into your application, or be in the form of a specific service (such as a web service). -
HidLibrary
This library enables you to enumerate and communicate with Hid compatible USB devices in .NET. -
Warden
Define "health checks" for your applications, resources and infrastructure. Keep your Warden on the watch. -
DeviceId
A simple library providing functionality to generate a 'device ID' that can be used to uniquely identify a computer. -
Aeron.NET
Efficient reliable UDP unicast, UDP multicast, and IPC message transport - .NET port of Aeron -
Jot
Jot is a library for persisting and applying .NET application state. -
ByteSize
ByteSize is a utility class that makes byte size representation in code easier by removing ambiguity of the value being represented. ByteSize is to bytes what System.TimeSpan is to time. -
Streams
A lightweight F#/C# library for efficient functional-style pipelines on streams of data. -
LINQPad.QueryPlanVisualizer
SQL Server and PostgreSQL query execution plan visualizer for LINQPad -
Mediator.Net
A simple mediator for .Net for sending command, publishing event and request response with pipelines supported -
Jering.Javascript.NodeJS
Invoke Javascript in NodeJS, from C# -
Valit
Valit is dead simple validation for .NET Core. No more if-statements all around your code. Write nice and clean fluent validators instead! -
DeviceDetector.NET
The Universal Device Detection library will parse any User Agent and detect the browser, operating system, device used (desktop, tablet, mobile, tv, cars, console, etc.), brand and model. -
https://github.com/minhhungit/ConsoleTableExt
A fluent library to print out a nicely formatted table in a console application C# -
SolidSoils4Arduino
C# .NET - Arduino library supporting simultaneous serial ASCII, Firmata and I2C communication -
FormHelper
ASP.NET Core - Transform server-side validations to client-side without writing any javascript code. (Compatible with Fluent Validation) -
Validot
Validot is a performance-first, compact library for advanced model validation. Using a simple declarative fluent interface, it efficiently handles classes, structs, nested members, collections, nullables, plus any relation or combination of them. It also supports translations, custom logic extensions with tests, and DI containers. -
Shielded
A strict and mostly lock-free Software Transactional Memory (STM) for .NET -
Outcome.NET
Never write a result wrapper again! Outcome.NET is a simple, powerful helper for methods that return a value, but sometimes also need to return validation messages, warnings, or a success bit. -
RecordParser
Zero Allocation Writer/Reader Parser for .NET Core -
FlatMapper
FlatMapper is a library to import and export data from and to plain text files. -
NaturalSort.Extension
🔀 Extension method for StringComparison that adds support for natural sorting (e.g. "abc1", "abc2", "abc10" instead of "abc1", "abc10", "abc2"). -
NIdenticon
NIdenticon is a library for creating simple Identicons -
SystemTextJson.JsonDiffPatch
High-performance, low-allocating JSON object diff and patch extension for System.Text.Json. Support generating patch document in RFC 6902 JSON Patch format. -
BerTlv.NET
A library for parsing BER TLV data (like EMV credit cards). -
trybot
A transient fault handling framework including such resiliency solutions as Retry, Timeout, Fallback, Rate Limit and Circuit Breaker. -
AdaskoTheBeAsT.FluentValidation.MediatR
FluentValidation behavior for MediatR
Clean code begins in your IDE with SonarLint
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of AzureCrawler or a related project?
README
What´s this?
If you are developing applications using new modern JavaScript frameworks like Angular, Ember, Durandal ... etc. you probably already know that this type of applications are not crawlable by search engine robots without a couple of extra steps.
SEO according to Google
If you want your JavaScript application to be crawlable, you need to implement some steps on your own. You can find information about the process on this Google document. Take a look to it in order to understand better what is required both client and server side.
What is AzureCrawler about?
AzureCrawler helps with taking HTML Snapshots of your dynamically generated content.
This project is specific to Azure and is ready to be deployed as a Cloud Service. AzureCrawler is a Worker Role that uses OWIN to Self-Host a Web API.
Said that, it´s easy to bring the code to your own solution if you don´t want to use it as a separate Cloud Service. As well, if you are not using .NET and Azure it´s not complicated to port it to another platform like Amazon Web Services.
How AzureCrawler works?
The self-hosted Web API contained in AzureCrawler exposes a resource with an endpoint in:
POST api/snapshot
If you make a api call there, a PhantomJS process will run and take care of the HTML Snapshot against the provided url.
You can pass some parameters in the body of the POST call
string ApiId (required). The application identification
string Application (required). The application name
string Url (required). The url to crawl
bool Store (optional). If you want to store the snapshot for future calls
DateTime ExpirationDate (optional). The expiration of the stored snapshot
string UserAgent (optional). The user agent of the bot crawling your application
ApiId and Application fields are required and will be validated together.
There isn´t any special mechanism for doing this validation more than the following private method:
/// <summary>
/// Validate ApiKey. In the real world you should this against a custom store
/// </summary>
/// <param name="apiKey">The api key</param>
/// <param name="apiKey">The application</param>
/// <returns>bool</returns>
private bool ValidateCredentials(string apiKey, string application)
{
if (apiKey == "Any ApiId" && application == "Any Application name")
{
return true;
}
return false;
}
So you can supply a new mechanism, use your own keys or use a database to store application credentials.
The Url is the resource you want to crawl. The PhantomJS process will take care of the snapshot and will wait until all the dynamically generated content will be loaded.
The latest fields are about providing information for storing the HTML Snapshot in the store you prefer to.
By default, AzureCrawler will store the snapshots in Azure Storage within a blob container with the name of the Application field.
If you do this, next time a bot requests the same Url, the snapshot will be provided from the storage.
When the snapshot stored expires, a new crawl will be done and a new snapshot will be stored.
Know issues
There is a incompatibility between the Azure Compute Emulator included in the SDK 2.2. and the latest 3.x Storage assemblies so you should test with live containers until next Azure toolkit will be released.