
Research
Malicious npm Packages Impersonate Flashbots SDKs, Targeting Ethereum Wallet Credentials
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.
ethos-crawler
Advanced tools
Web crawler and API for aggregating and serving digital rights organizations' publications.
This project is part of the Logos ecosystem. Let's protect freedom.
In its current state, Ethos is a web crawler designed to browse specific sources in order to retrieve their publications. It has a built-in API serving the content, enabling the crawled data to be used for data analysis, notifications, etc...
The goal behind the development of Ethos is to build a tool which retrieves publications about civil liberties (currently mostly focused on digital rights), and preserve those in Codex, an incorruptible and persistent archive.
Why? Because centralized freedom organisations are too often the target of powerful actors who feel threatened by their noble missions.
Reports about human rights must, too, be protected and kept forever accessible.
npm i -g ethos-crawler
then ethos
npx ethos-crawler
Upon the first run, Ethos will initialize an .ethos
folder within the current directory.
To keep using the same dataset, run Ethos from the same path.
Ethos can be used interactively. By using the menu, you will be able to crawl, access past sessions summaries and data, as well as cleaning the database and storage.
$ ethos
? Select a command: (Use arrow keys)
❯ crawl - Start crawling a source
sessions - Browse previous crawl sessions
clean - Clean stored data
exit - Exit the program
$ ethos crawl --help
Usage: ethos crawl [options] <source>
Crawl a source for content
Arguments:
source Source ID to crawl
Options:
-m, --max-pages <number> Maximum number of pages to crawl
--force-full-crawl Continue crawling when reached previous crawl session URLs
--recrawl Re-crawl and override existing URLs data
-o, --output <format> Output format (json|summary) (default: "summary")
-h, --help display help for command
$ ethos serve --help
Usage: ethos serve [options]
Start the REST API server
Options:
-p, --port <number> Port to run the server on
-h, --host <string> Host to bind the server to
--help display help for command
/health
Health check endpoint to verify the API is running.
Response:
{
"status": "ok",
"timestamp": "2023-12-01T10:30:00.000Z"
}
/sources
Get list of available sources for crawling.
Response:
[
{
"id": "eff",
"name": "Electronic Frontier Foundation"
},
{
"id": "fpf",
"name": "Freedom of the Press Foundation"
},
{
"id": "lpe",
"name": "Logos Press Engine"
}
]
/publications
Retrieve publications with filtering and pagination.
Query Parameters:
page
(number, default: 1) - Page number for paginationlimit
(number, default: 10, max: 100) - Items per pagesource
(string) - Filter by source ID (eff, fpf, lpe)startPublishedDate
(string) - Filter by start date (ISO 8601 format)endPublishedDate
(string) - Filter by end date (ISO 8601 format)Response:
{
"results": [
{
"url": "https://eff.org/deeplinks/2023/12/example-article",
"title": "Example Article Title",
"content": "Full article content text extracted from the source...",
"author": "By Author Name",
"publishedDate": "2023-12-01T00:00:00.000Z",
"image": "https://eff.org/sites/default/files/example-image.jpg",
"source": "eff",
"crawledAt": "2023-12-01T10:30:00.000Z",
"hash": "a1b2c3d4e5f6..."
}
],
"meta": {
"total": 150,
"page": 1,
"limit": 10,
"totalPages": 15
}
}
/publications/:hash
Retrieve a specific publication by its hash.
Parameters:
hash
(string, required) - The unique hash identifier of the contentResponse:
{
"url": "https://eff.org/deeplinks/2023/12/example-article",
"title": "Example Article Title",
"content": "Full article content text extracted from the source...",
"author": "By Author Name",
"publishedDate": "2023-12-01T00:00:00.000Z",
"image": "https://eff.org/sites/default/files/example-image.jpg",
"source": "eff",
"crawledAt": "2023-12-01T10:30:00.000Z",
"hash": "a1b2c3d4e5f6..."
}
All endpoints return appropriate HTTP status codes and error objects:
{
"error": {
"type": "NOT_FOUND|VALIDATION_ERROR|INTERNAL_ERROR",
"message": "Human-readable error description"
}
}
MIT
FAQs
Web crawler and API for aggregating and serving digital rights organizations' publications.
The npm package ethos-crawler receives a total of 23 weekly downloads. As such, ethos-crawler popularity was classified as not popular.
We found that ethos-crawler demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.
Security News
Ruby maintainers from Bundler and rbenv teams are building rv to bring Python uv's speed and unified tooling approach to Ruby development.
Security News
Following last week’s supply chain attack, Nx published findings on the GitHub Actions exploit and moved npm publishing to Trusted Publishers.