Probe Resources Plus Webhook avatar

Probe Resources Plus Webhook

Try for free

No credit card required

View all Actors
Probe Resources Plus Webhook

Probe Resources Plus Webhook

jancurn/probe-resources-plus-webhook
Try for free

No credit card required

Calls jancurn/probe-page-resources and then invokes a hard-coded webhook. The act takes same input as jancurn/probe-page-resources

Dockerfile

1# This is a template for a Dockerfile used to run acts in Actor system.
2# The base image name below is set during the act build, based on user settings.
3# IMPORTANT: The base image must set a correct working directory, such as /usr/src/app or /home/user
4FROM apify/actor-node-basic:v0.21.10
5
6# Second, copy just package.json and package-lock.json since it should be
7# the only file that affects "npm install" in the next step, to speed up the build
8COPY package*.json ./
9
10# Install NPM packages, skip optional and development dependencies to
11# keep the image small. Avoid logging too much and print the dependency
12# tree for debugging
13RUN npm --quiet set progress=false \
14 && npm install --only=prod --no-optional \
15 && echo "Installed NPM packages:" \
16 && (npm list --all || true) \
17 && echo "Node.js version:" \
18 && node --version \
19 && echo "NPM version:" \
20 && npm --version
21
22# Copy source code to container
23# Do this in the last step, to have fast build if only the source code changed
24COPY  . ./
25
26# NOTE: The CMD is already defined by the base image.
27# Uncomment this for local node inspector debugging:
28# CMD [ "node", "--inspect=0.0.0.0:9229", "main.js" ]

package.json

1{
2    "name": "apify-project",
3    "version": "0.0.1",
4    "description": "",
5    "author": "It's not you it's me",
6    "license": "ISC",
7    "dependencies": {
8        "underscore": "latest",
9        "apify": "0.21.10",
10        "request-promise": "latest"
11    },
12    "scripts": {
13        "start": "node main.js"
14    }
15}

main.js

1const _ = require('underscore');
2const Apify = require('apify');
3const request = require('request-promise');
4
5Apify.main(async () => {
6    const input = await Apify.getValue('INPUT');
7    console.log('Calling jancurn/probe-page-resources with input:');
8    console.log(JSON.stringify(input, null, 2));
9    
10    const run = await Apify.call('jancurn/probe-page-resources', input);
11    
12    // console.log(JSON.stringify(run,null,2));
13    console.dir(run.output);
14    for (let rec of run.output) {
15         console.dir(rec); 
16         
17         // Test webhook, review the calls at http://mockbin.org/bin/b652e23e-5e5e-4904-8fc1-c55dcd7f6ee1/log
18         if (rec.url === 'https://www.example.com/') {
19             console.log('Testing webhook');
20             
21             const options = {
22                method: 'POST',
23                uri: 'http://mockbin.org/bin/b652e23e-5e5e-4904-8fc1-c55dcd7f6ee1',
24                json: true,
25                body: {
26                    "csp-report": {
27                        "blocked-uri": "https://a.postrelease.com/serve/load.js",
28                        "document-uri": "https://www.perf.webmd.com/allergies/default.htm",
29                        "referrer": "",
30                        "violated-directive": " apifier-rpt-networkerr",
31                        "effective-directive": "apifier-rpt",
32                        "original-policy": "",
33                        "disposition": "apifier-rpt",
34                        "status-code": "404/Failed/Blocked/etc – HTTP Status Code",
35                        'mime-type': 'application/x-javascript',
36                        'type': 'script',
37                        'method' : 'GET',
38                        "script-sample": "",
39                        "source-file": "https://a.postrelease.com/serve/load.js"
40                    }
41                }
42            };
43            await request(options);
44         }
45    }
46});
Developer
Maintained by Community
Actor metrics
  • 1 monthly user
  • 1 star
  • Created in Sep 2017
  • Modified over 2 years ago
Categories