As we were preparing Playwright 1.1.0, I learned quite a lot about Web Proxies. Below is the summary of my findings.
There are two groups of proxies that drive internet:
As we were preparing Playwright 1.1.0, I learned quite a lot about Web Proxies. Below is the summary of my findings.
There are two groups of proxies that drive internet:
| #!/usr/bin/env bash | |
| xsv select message "$1" | xsv fmt --quote ' ' | sed -e '1d' | jq -c -r 'fromjson' |
| Estimated metric | Weight | Fast >90 | Slow <50 | |
|---|---|---|---|---|
| First Contentful Paint (FCP) | 3x | <2.4s | >4.0s | |
| First Meaningful Paint (FMP) | 1x | <2.4s | >4.0s | |
| Speed Index (SI) | 4x | <3.4s | >5.8s | |
| First CPU Idle (FCI) | 2x | <3.6s | >6.5s | |
| Time to Interactive (TTI) | 5x | <3.8s | >7.3s |
| /*! | |
| * Copyright 2015 Google Inc. All rights reserved. | |
| * | |
| * Licensed under the Apache License, Version 2.0 (the "License"); | |
| * you may not use this file except in compliance with the License. | |
| * You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software |
I am weirdly good at this, so let me share some of my tricks. #AcademicTwitter #phdlife #gradstudent
Ex: "The teacher needs to know..." --> "Teachers need to know...."
| (function (history, trackingId, options) { | |
| const getParameterByName = (paramName) => { | |
| var searchString = window.location.search.substring(1), | |
| i, val, params = searchString.split("&"); | |
| for (i=0;i<params.length;i++) { | |
| val = params[i].split("="); | |
| if (val[0] == paramName) { | |
| return val[1] || undefined; | |
| } | |
| } |
| <!doctype html> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="utf-8"> | |
| <title>Hello</title> | |
| </head> | |
| <body> | |
| <script> |
| const net = require('net'); | |
| const {parse} = require('url'); | |
| const [,,url] = process.argv; | |
| const client = new net.Socket(); | |
| const {hostname, port = 80, path} = parse(url); | |
| client.on('error', (e) => {throw e}); | |
| const request = (cb) => { |
Simple workflow for the #OWASP Amass tool suite: https://github.com/OWASP/Amass
Google for the organization's ASN
$ amass.netdomains -asn ASN -p 80,443 > domains.txt
$ amass -v -ip -do data.json -df domains.txt
$ amass.viz -i data.json -d3 graph.html