Я пытаюсь написать скрипт, который проверит наличие XSS-инъекции. Я делаю следующее:
import asyncio
from pyppeteer import launch
async def main():
browser = await launch()
page = await browser.newPage()
await page.goto('URL with XSS')
content = await page.content()
await browser.close()
asyncio.get_event_loop().run_until_complete(main())
, но происходит сбой с
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/pyppeteer/execution_context.py", line 106, in evaluateHandle
'userGesture': True,
pyppeteer.errors.NetworkError: Protocol error (Runtime.callFunctionOn): Cannot find context with specified id
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "a.py", line 10, in <module>
asyncio.get_event_loop().run_until_complete(main())
File "/usr/lib/python3.6/asyncio/base_events.py", line 484, in run_until_complete
return future.result()
File "a.py", line 7, in main
content = await page.content()
File "/usr/local/lib/python3.6/dist-packages/pyppeteer/page.py", line 780, in content
return await frame.content()
File "/usr/local/lib/python3.6/dist-packages/pyppeteer/frame_manager.py", line 379, in content
'''.strip())
File "/usr/local/lib/python3.6/dist-packages/pyppeteer/frame_manager.py", line 295, in evaluate
pageFunction, *args, force_expr=force_expr)
File "/usr/local/lib/python3.6/dist-packages/pyppeteer/execution_context.py", line 55, in evaluate
pageFunction, *args, force_expr=force_expr)
File "/usr/local/lib/python3.6/dist-packages/pyppeteer/execution_context.py", line 109, in evaluateHandle
_rewriteError(e)
File "/usr/local/lib/python3.6/dist-packages/pyppeteer/execution_context.py", line 238, in _rewriteError
raise type(error)(msg)
pyppeteer.errors.NetworkError: Execution context was destroyed, most likely because of a navigation.
Я заметил, что сбой происходит, только если я передаю что-то вроде <script>*payload here*</script>
в нужный параметр get, в противном случае это работает хорошо, даже если я прохожу пустой <script></script>
. В чем причина исключения и как это исправить? Этот запрос хорошо работает, когда я делаю это в Chrome
Пример полезной нагрузки: <script>document.write("qwe");</script>