New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

web3_parser_gen2

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

web3_parser_gen2

Web3 Parser

latest
Source
npmnpm
Version
1.0.1
Version published
Weekly downloads
2
-33.33%
Maintainers
1
Weekly downloads
 
Created
Source

Web3 Parser

This script demonstrates a variety of tasks such as fetching web content, extracting text, translating it, saving to a file, encrypting the file, and serving the result via an HTTP server using 10 different npm packages.

How It Works

  • Fetching Web Content: Uses the axios package to download the content of a webpage.
  • Extracting Text from HTML: Utilizes the cheerio package to parse HTML and extract text.
  • Translating Text: Employs the google-translate-api package to translate the text to another language (e.g., Spanish).
  • Saving Translated Text to a File: Uses the fs-extra package to write the translated text to a file.
  • Encrypting the File: Uses the crypto package to encrypt the file.
  • Creating an HTTP Server: Uses the express, body-parser, morgan, and cors packages to create and configure an HTTP server.
  • Environment Configuration: Uses the dotenv package to manage environment variables.

Usage

  • Clone the Repository:

    git clone https://github.com/yourusername/repository-name.git
    cd repository-name
    
  • Install Dependencies:

    npm install
    
  • Create a .env File: Create a .env file in the root directory with the following content:

    ENCRYPTION_KEY=mysecretkey
    PORT=3000
    
  • Run the Script:

    node script.js
    

Example Script

const axios = require('axios');
const cheerio = require('cheerio');
const translate = require('@vitalets/google-translate-api');
const fs = require('fs-extra');
const crypto = require('crypto');
const express = require('express');
const bodyParser = require('body-parser');
const morgan = require('morgan');
const cors = require('cors');
require('dotenv').config();

const url = 'https://example.com';
const outputFilePath = './output.txt';
const encryptedFilePath = './encrypted_output.txt';
const encryptionKey = process.env.ENCRYPTION_KEY || 'mysecretkey';
const port = process.env.PORT || 3000;

function encryptFile(inputPath, outputPath, key) {
    const algorithm = 'aes-256-cbc';
    const iv = crypto.randomBytes(16);
    const cipher = crypto.createCipheriv(algorithm, key, iv);
    const input = fs.createReadStream(inputPath);
    const output = fs.createWriteStream(outputPath);

    input.pipe(cipher).pipe(output);

    output.on('finish', () => {
        console.log('File encrypted successfully.');
    });
}

async function main() {
    try {
        const { data } = await axios.get(url);
        const $ = cheerio.load(data);
        const text = $('body').text();
        const translation = await translate(text, { to: 'es' });
        const translatedText = translation.text;

        await fs.outputFile(outputFilePath, translatedText);
        console.log('Text saved to file.');

        encryptFile(outputFilePath, encryptedFilePath, encryptionKey);

        const app = express();

        app.use(bodyParser.json());
        app.use(morgan('combined'));
        app.use(cors());

        app.get('/', (req, res) => {
            res.sendFile(__dirname + '/' + encryptedFilePath);
        });

        app.listen(port, () => {
            console.log(`Server is running on http://localhost:${port}`);
        });
    } catch (error) {
        console.error('Error:', error);
    }
}

main();

Keywords

tea

FAQs

Package last updated on 03 Jun 2024

Did you know?

Socket

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.

Install

Related posts