Open rudiedirkx opened 12 months ago
Worden ook niet volledig gevolgd zoals in een echte browser:
/#select/
en daar werkt de Wappa magic pas/view/LOGIN
Nadat de response binnen is gaat het script te snel door, waardoor zelfs een meta refresh 0 niet uitgevoerd kan worden. Als ik daar een sleep van 1s aan toevoeg worden ze wel uitgevoerd voor:
https://gebiedsprofielen.zuid-holland.nl/ https://ltc.andes.nl/
uit driver.js
page.on('response', async (response) => {
if (!page || page.__closed || page.isClosed()) {
return
}
await sleep(1000)
try {
if (
response.status() < 300 &&
response.frame().url() === url.href &&
response.request().resourceType() === 'script'
) {
const scripts = await response.text()
await this.onDetect(response.url(), analyze({ scripts }))
}
} catch (error) {
if (error.constructor.name !== 'ProtocolError') {
error.message += ` (${url})`
this.error(error)
}
}
try {
if (response.url() === url.href) {
this.analyzedUrls[url.href] = {
status: response.status(),
}
const rawHeaders = response.headers()
const headers = {}
Object.keys(rawHeaders).forEach((key) => {
headers[key] = [
...(headers[key] || []),
...(Array.isArray(rawHeaders[key])
? rawHeaders[key]
: [rawHeaders[key]]),
]
})
// Prevent cross-domain redirects
if (response.status() >= 300 && response.status() < 400) {
if (headers.location) {
const _url = new URL(headers.location.slice(-1), url)
const redirects = Object.keys(this.analyzedUrls).length - 1
if (
_url.hostname.replace(/^www\./, '') ===
this.originalUrl.hostname.replace(/^www\./, '') ||
(redirects < 3 && !this.options.noRedirect)
) {
url = _url
return
}
}
}
responseReceived = true
const certIssuer = response.securityDetails()
? response.securityDetails().issuer()
: ''
await this.onDetect(url, analyze({ headers, certIssuer }))
await this.emit('response', { page, response, headers, certIssuer })
}
} catch (error) {
error.message += ` (${url})`
this.error(error)
}
})
de sleep na de response helpt (lokaal getest) ook bij #3
Sleep is juist wat de dip Cookies checker kapot maakte, dus had ik eruit gehaald. Remember? Dat zou ik hier niet in stoppen, of alleen met heel heel veel testen, en dan wil ik dat het in de Cookies checker ook werkt op die manier, zodat we snappen waarom.
Sleep is juist wat de dip Cookies checker kapot maakte, dus had ik eruit gehaald. Remember?
Ohja, nu je het zegt. Maar dat issue heb ik me uiteindelijk niet echt mee bemoeid.
Dat zou ik hier niet in stoppen, of alleen met heel heel veel testen, en dan wil ik dat het in de Cookies checker ook werkt op die manier, zodat we snappen waarom.
Ik wil nog wel een keertje wat tests doen. Puppeteer headless blijft wel echt eigenaardigheden houden.
Er bestaat een defer
optie:
--defer=ms Defer scan for ms milliseconds after page load
Misschien doet dat al genoeg?
Die wordt gebruikt in cli.js
en doet ie maar 1x, niet per pagina. WAATTT hoe werkt Wappa??
de --defer
of --delay
optie werken beide niet.
if (
(responseReceived && request.isNavigationRequest()) ||
request.frame() !== page.mainFrame() ||
!['document', ...(this.options.noScripts ? [] : ['script']), 'fetch'].includes(
request.resourceType()
)
) {
request.abort('blockedbyclient')
De meta refresh wordt geblockt door responseReceived && request.isNavigationRequest()
. Waarschijnlijk om redirects te voorkomen nadat hij al is begonnen met analyzeren (responseReceived = true). Mijn voorgestelde sleep zorgt dat het 1s langer duurt voor dat responseReceived = true bereikt wordt.
Waarschijnlijk om redirects te voorkomen nadat hij al is begonnen met analyzeren (responseReceived = true).
Ik vind het juist goed dat ie redirects volgt... Van mij mag ie lekker blijven redirecten. Als ie maar snapt wanneer ie klaar is.
Mijn voorgestelde sleep zorgt dat het 1s langer duurt voor dat responseReceived = true bereikt wordt.
Ooooooh. Dat is te hacky en raar en superverwarrend. Dat snappen we over 6 maanden niet meer. Wat mij betreft halen we de responseReceived
check er gewoon uit. En dan heel goed testen, want misschien krijgen we dan al die Cookies "page seems closed" achtige meldingen weer.
Misschien is dat wel waarom ie erin staat! Maar dan zou jouw sleep het ook kapot moeten maken, want dan volgt ie die redirects weer......
Van mij mag ie lekker blijven redirecten. Als ie maar snapt wanneer ie klaar is.
Ik ook, ik gaf alleen aan wat ik denk dat de intentie is geweest.
Dat is te hacky en raar en superverwarrend.
Ongetwijfeld.
Ik ook, ik gaf alleen aan wat ik denk dat de intentie is geweest.
Maar waarom? Redirecten stoppen was niet het doel, maar een manier (denk ik). Waarom is Elbert tegen redirects? Omdat het kapot ging op de Cookies manier, of omdat een redirect naar een ander domein zou kunnen gaan, of heeft ie gewoon een irrationele haat jegens ReDiReCtS?
Ik kreeg net 1 keer een alleen-server resultaat:
maar nu niet eens meer dat.
Die redirect is ook wel heel raar IMO, daar gaat Wappa misschien niet 'goed' mee om. De response is technisch een 200, maar wel alleen:
Die 'redirect' volgt Wappa niet denk ik.