mirror of
https://github.com/lwthiker/curl-impersonate.git
synced 2025-04-27 07:36:47 +00:00
![]() Update Docker base images to debian bookworm. Reduce size of Debian image (remove apt cache) by 10MB And also minor Markdown lint of INSTALL.md --------- Co-authored-by: lwthiker <lwt@lwthiker.com> |
||
---|---|---|
.. | ||
signatures | ||
ssl | ||
conftest.py | ||
Dockerfile | ||
minicurl.c | ||
pytest.ini | ||
README.md | ||
requirements.txt | ||
signature.py | ||
test_impersonate.py |
The tests verify that curl-impersonate
has the same network signature as that of the supported browsers. They do not test curl's functionality itself.
Running the tests
The tests assume that you've built both curl-impersonate-chrome
and curl-impersonate-ff
docker images before (see Building from source).
To run the tests, build with:
docker build -t curl-impersonate-tests tests/
then run with:
docker run --rm curl-impersonate-tests
This simply runs pytest
in the container. You can pass additional flags to pytest
such as --log-cli-level DEBUG
.
How the tests work
For each supported browser, the following tests are performed:
- A packet capture is started while
curl-impersonate
is run with the relevant wrapper script. The Client Hello message is extracted from the capture and compared against the known signature of the browser. curl-impersonate
is run, connecting to a localnghttpd
server (a simple HTTP/2 server). The HTTP/2 pseudo-headers and headers are extracted from the output log ofnghttpd
and compared to the known headers of the browser.
What's missing
The following tests are still missing:
- Test that
curl-impersonate
sends the same HTTP/2 SETTINGS as the browser.