mirror of
https://github.com/lwthiker/curl-impersonate.git
synced 2025-08-10 10:49:26 +00:00
Add automated tests to verify curl's TLS signature
Add automated testing infrastructure with tests verifying that `curl-impersonate` has the same TLS signature as that of the impersonated browser. Each wrapper script (e.g. curl_chrome98) is launched to wikipedia.org while a packet capture is running in the background. The Client Hello is extracted from the capture, parsed and then compared to the known browser signature. The known signatures are stored in a YAML database.
This commit is contained in:
24
tests/README.md
Normal file
24
tests/README.md
Normal file
@@ -0,0 +1,24 @@
|
||||
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 [Installation](https://github.com/lwthiker/curl-impersonate#installation)).
|
||||
|
||||
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, 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.
|
||||
|
||||
## What's missing
|
||||
The following tests are still missing:
|
||||
* Test that `curl-impersonate` sends the HTTP headers in the same order as the browser.
|
||||
* Test that `curl-impersonate` sends the HTTP/2 pseudo-headers in the same order as the browser.
|
||||
* Test that `curl-impersonate` sends the same HTTP/2 SETTINGS as the browser.
|
Reference in New Issue
Block a user