Skip to content

Instantly share code, notes, and snippets.

View codesorter2015's full-sized avatar
🏠
Working from home

Krish codesorter2015

🏠
Working from home
View GitHub Profile
@codesorter2015
codesorter2015 / puppeteer_setExtraHttpHeaders.js
Created April 26, 2019 05:06
Example for setting extra header on page in puppeteer
await page.setExtraHTTPHeaders({
'Accept-Language': 'en-US,en;q=0.9'
});
await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36');
@codesorter2015
codesorter2015 / parseUrlQuery.js
Last active April 25, 2019 08:36
Best way to parse query string in JavaScript
var parseQuery = ( urlStr ) => {
return new URL(urlStr).search.substring(1).split('&').map(i => { let params = {}; let p = i.split('='); params[p[0]] = decodeURIComponent(p[1]); return params });
}
console.log(parseQuery("paste your url here"));
@codesorter2015
codesorter2015 / puppeteer_page_screenshot.js
Created January 10, 2019 14:08
Puppeteer - taking full page screenshot
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://techmultitude.com');
await page.setViewport({width: 320, height: 480});
await page.waitForNavigation({'waitUntil' : 'networkidle'});
await page.screenshot({path: 'website.png', fullPage: true});
await browser.close();
@codesorter2015
codesorter2015 / reverse_proxy_setup.txt
Last active November 18, 2024 19:44
Reverse Proxy Setup with XAMPP/WAMP
Open apache httpd.conf file
Enable the following Modules by removing the # at the front of the line.
- LoadModule rewrite_module modules/mod_rewrite.so
- LoadModule proxy_module modules/mod_proxy.so
- LoadModule proxy_http_module modules/mod_proxy_http.so
- LoadModule proxy_connect_module modules/mod_proxy_connect.so
Open apache httpd-vhosts.conf
<VirtualHost *:80>
ProxyRequests On
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Mutation Observers</title>
<meta name="viewport" content="width=device-width">
<link rel="stylesheet" href="../video-pages/main.css">
</head>
<body>
<header>
const CDP = require('chrome-remote-interface');
CDP(async (client) => {
const {Network, Page, Target} = client;
Network.requestWillBeSent(({request, redirectResponse}) => {
console.log((redirectResponse || {}).url + ' -> ' + request.url);
});
Target.targetCreated((params) => {
if(params.targetInfo.type != "page") {
@codesorter2015
codesorter2015 / es6-element-ready.js
Created September 19, 2018 09:27 — forked from jwilson8767/es6-element-ready.js
Wait for an element to exist. ES6, Promise, MutationObserver
/**
* Waits for an element satisfying selector to exist, then resolves promise with the element.
* Useful for resolving race conditions.
*
* @param selector
* @returns {Promise}
*/
export function elementReady(selector) {
return new Promise((resolve, reject) => {
let el = document.querySelector(selector);
await Promise.all([
page.click('button[type="submit"]'),
page.waitForNavigation(),
]);
One workaround would be to listen for framenavigated event.
await Promise.all([
leftFrame.click('a[href="option2.html"]'),
new Promise(resolve => page.once('framenavigated', resolve))
@codesorter2015
codesorter2015 / puppeteer_frame_example1.txt
Last active September 9, 2018 17:48
example of using puppeteer frames
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
await page.setContent('<iframe></iframe>');
// the page.frames()[0] is always a main frame.
const iframe = page.frames()[1];
// fetch the body element of the iframe
@codesorter2015
codesorter2015 / event-listeners.js
Created July 27, 2018 17:24 — forked from danburzo/README.md
Get all event listeners on the page in Google Chrome
var items = Array.prototype.slice.call(
document.querySelectorAll('*')
).map(function(element) {
var listeners = getEventListeners(element);
return {
element: element,
listeners: Object.keys(listeners).map(function(k) {
return { event: k, listeners: listeners[k] };
})
};