Commit Graph

171 Commits

Author SHA1 Message Date
lwthiker
4bd8671112 Update INSTALL.md 2022-04-15 17:52:37 +03:00
lwthiker
7717c220d1 Merge pull request #45 from lwthiker/makefile
Native build system using Makefile
2022-04-12 22:33:57 +03:00
lwthiker
842415f119 Add missing tests dependency in GitHub action 2022-04-12 22:21:13 +03:00
lwthiker
f1b31726dc Fix action failing on running pytest as sudo 2022-04-12 21:59:26 +03:00
lwthiker
e04e53b4d5 Use 'sudo' to launch pytest (because of tcpdump) 2022-04-12 17:32:29 +03:00
lwthiker
184fa640e8 Support Python 3.8 in the tests 2022-04-12 17:11:40 +03:00
lwthiker
f1324f7718 Add Badge for the native-build GitHub Action 2022-04-12 16:55:00 +03:00
lwthiker
48d18cd8cd Add GitHub Action to test native builds
Add a GitHub action to compile and test native builds using the new
Makefile-based build system. Currently runs on Ubuntu and in the future
will run similarly on MacOS.
2022-04-12 16:53:22 +03:00
lwthiker
f5467cec11 Use configurable tcpdump interface in the tests
And add support for capturing the Client Hello message when sent over
IPv6.
2022-04-12 16:51:51 +03:00
lwthiker
facd6e5551 Use configurable binaries directory in the tests
Locate curl-impersonate and libcurl-impersonate in a directory which is
configurable from the command line instead of looking for them in the
current directory. '--install-dir' is passed to pytest, where a 'bin'
and 'lib' directories are expected with (lib)curl-impersonate.

Rename the Actions file for the Docker build to allow the creation of
addition Action for native builds.
2022-04-12 16:50:24 +03:00
lwthiker
79f8601a30 Fix typo in Makefile.in 2022-04-12 12:43:02 +03:00
lwthiker
493576a15e Add INSTALL.md
Add INSTALL.md with explanation about using the new Makefile-based build
system and the Docker-based build system, and remove the same section
from README.md.
2022-04-12 12:29:47 +03:00
lwthiker
4e102d1fbf Add Makefile uninstall targets
Add two targets for uninstalling curl-impersonate to the Makefile.
2022-04-12 12:29:47 +03:00
lwthiker
7e19dd7221 Only install binaries in 'make install'
When doing 'make firefox-install' or 'make chrome-install' in our own
Makefile, only install curl's binaries (curl & libcurl) and do not
install the man pages and headers. This will prevent collision of these
files with any installed curl man pages or headers. In the future it
might be possible to rename the man pages or headers as well to allow
them live side-by-side with the vanilla curl.
2022-04-12 12:29:41 +03:00
lwthiker
b484701491 Use autoconf's srcdir variable in Makefile.in
Use autoconf's automatic variable 'abs_srcdir' to find the path to the
patch files and wrapper scripts, instead of relying on the Makefile's
directory. This allows doing out-of-tree builds, i.e. 'mkdir build && cd
build && ../configure && make'.
2022-04-12 11:32:50 +03:00
lwthiker
35623ee453 Use autoconf to configure the Makefile
Use a 'configure' script generated by autoconf to configure whether a
static build is desired, and where to install the final curl-impersonate
binaries. Add installation targets to the Makefile.
2022-04-12 10:58:53 +03:00
lwthiker
15fd7186ac Add Makefile to orchestrate native builds
Add a Makefile to orchestrate native builds of curl-impersonate without
Docker. The Makefile does not compile any program by itself but is just
used to build all the dependencies and then build curl itself with the
needed patches. It has a very similar flow to the Dockerfile.
2022-04-12 10:58:53 +03:00
lwthiker
319139e045 Merge pull request #43 from lwthiker/binary_name_change
Use different binary names for Firefox and Chrome
2022-04-12 10:57:19 +03:00
lwthiker
8ffeb3ca56 Change binary names as part of curl's build
Change the binary names of curl and libcurl as part of the curl build
process by patching curl's build scripts. When running 'make' in the
patched curl directory the resulting binaries will be already named
'curl-impersonate-ff' and 'curl-impersonate-chrome' (and the same for
libcurl), thus saving the need for manually renaming them after the
compilation. This also enables running 'make install' with curl's own
Makefiles in order to install curl-impersonate.
2022-04-11 17:59:51 +03:00
lwthiker
22508c6863 Use different binary names for Firefox and Chrome
Rename the binary files of curl-impersonate so that the Firefox and
Chrome versions can co-exist on the same system. The Firefox version is
now named 'curl-impersonate-ff' and 'libcurl-impersonate-ff' and the
Chrome version is named 'curl-impersonate-chrome' and
'libcurl-impersonate-chrome'. The wrapper scripts look for these names
as well. Symbolic names with the old names are still created inside the
Docker images to keep compatibility as much as possible.
2022-04-08 19:10:35 +03:00
lwthiker
af38d2b626 Merge pull request #35 from lwthiker/chrome_android
Add signature for Chrome 99 on Android
v0.3.2
2022-03-24 21:23:22 +02:00
lwthiker
584ff54653 Add signature for Chrome 99 on Android phone
Add support for impersonating Chrome 99 on Android 12 (Pixel 6 was
chosen as an arbitrary Android phone to impersonate). The TLS signature
for Chrome on Android is identical to Chrome on Windows. The difference
is in a few HTTP headers ('sec-ch-ua-mobile', 'sec-ch-ua-platform' and
'user-agent').
2022-03-24 21:01:47 +02:00
lwthiker
a3054994aa Merge pull request #29 from lwthiker/ff98
Impersonate Firefox 98
2022-03-12 10:57:37 +02:00
lwthiker
768e37d194 Impersonate Firefox 98
Add support for impersonating Firefox 98 released a few days ago. It has
the same TLS signature as Firefox 95 so the adaptation includes changing
the user-agent only. Upgrade the NSS version used to 3.75, even though
it's not strictly necessary.
2022-03-12 10:44:24 +02:00
lwthiker
0952bca3de Merge pull request #28 from lwthiker/alpine
Add Alpine Linux images and push automatically to DockerHub
v0.3.1
2022-03-10 14:44:33 +02:00
lwthiker
aba67a4cbe Fix typo and link in README.md v0.3.1-alpha.3 2022-03-10 13:38:37 +02:00
lwthiker
2cf96e9337 Update README.md with Alpine-based Docker images 2022-03-10 13:34:56 +02:00
lwthiker
ebc8032615 Add more tags to alpine-based Docker Hub images 2022-03-10 13:23:12 +02:00
lwthiker
4ea8f859eb Install nss in final alpine image
Add 'apk add nss' for the final alpine image of the Firefox version of
curl-impersonate. This is needed for curl to find the list of root
certificates.
2022-03-10 13:17:31 +02:00
lwthiker
2e738cd7d0 Push the Alpine image for Firefox version as well v0.3.1-alpha.2 2022-03-10 12:50:17 +02:00
lwthiker
21af00356e Add action to push alpine images to Docker Hub
Add a GitHub action to push alpine images with curl-impersonate to
Docker Hub whenever a new release tag is created.
v0.3.1-alpha.1
2022-03-10 12:22:27 +02:00
lwthiker
eaeb619fa7 Add Alpine Linux build system
Add Dockerfiles for building curl-impersonate on Alpine Linux.

The Dockerfile template file was modified to support Alpine Linux,
mainly by changing the dependency installation from 'apt' to 'apk'.
The resulting alpine images are small (~11mb) and will be uploaded to
Docker hub.
2022-03-10 11:57:53 +02:00
lwthiker
91c906febd Merge pull request #27 from lwthiker/template_dockerfile
Use a template for generating Dockerfiles
2022-03-10 10:24:43 +02:00
lwthiker
d1dbfc89c5 Use a template for generating Dockerfiles
Since the firefox and chrome builds are similar except for the TLS
library used, it makes sense to unify their Dockerfiles. This commit
introduces a template Dockerfile from which both the build Dockerfiles
are generated using the simple 'mustache' template system.
2022-03-09 11:01:44 +02:00
lwthiker
446ab75876 Merge pull request #25 from lwthiker/static_brotli
Compile libbrotli statically into curl-impersonate
2022-03-08 16:12:21 +02:00
lwthiker
7df69b5107 Compile libbrotli statically into curl-impersonate
Compile libbrotli statically into curl-impersonate/libcurl-impersonate
for convenience of usage outside the container.
2022-03-08 15:45:30 +02:00
lwthiker
253285a84f Update README.md
* Add a full list of supported browsers.
* Split "Usage" to "Basic usage" and "Advanced usage"
v0.3.0
2022-03-05 14:16:11 +02:00
lwthiker
ce95990620 Split GitHub Action cache to two directories
The GitHub Action workflow uses a cache to speed up the Docker builds.
However, it seems that it only partially works, saving only the Docker
layers for the Firefox build. This is an attempt to solve it by using
two separate cache paths, one for each build.
2022-03-05 13:30:14 +02:00
lwthiker
8468747057 Merge pull request #19 from lwthiker/fix_wrapper_scripts
Fix bug in wrapper scripts parameter passing
2022-03-05 13:17:46 +02:00
lwthiker
6e9b194dd2 Merge pull request #23 from lwthiker/chrome99
Impersonate Chrome 99 and Edge 99
2022-03-05 13:16:01 +02:00
lwthiker
e554958c75 Impersonate Chrome 99 and Edge 99
Add impersonation support for Chrome 99 and Edge 99 which were just released.
Their TLS signature is identical to the previous versions (98).
The only difference is in the user agents.

curl patch from
ca13947f00
2022-03-05 13:03:27 +02:00
lwthiker
a304c61522 Run CI on push to 'main' branch as well 2022-03-05 12:17:41 +02:00
lwthiker
f11a872608 Merge pull request #21 from lwthiker/test_http_headers
Test curl-impersonate's HTTP headers
2022-03-05 12:16:46 +02:00
lwthiker
13e57934d1 Merge branch 'main' into test_http_headers 2022-03-05 12:01:28 +02:00
lwthiker
fc56ed619d Merge pull request #22 from lwthiker/github_actions
Add GitHub actions workflow to build and test curl-impersonate
2022-03-05 11:59:16 +02:00
lwthiker
d577ee92f1 Add GitHub actions badge to README.md 2022-03-05 11:11:40 +02:00
lwthiker
0771c55799 Add Docker caching to GitHub actions workflow
Add layer caching to speed up the CI builds. In addition, optimize the
Dockerfiles by moving all the dependency installations (which are
unlikely to change much) to the initial layers.
2022-03-05 10:48:53 +02:00
lwthiker
867f23fb58 Use local Docker registry in GitHub Action
The tests container copies files from the build containers. In order for
this to work in the GitHub actions workflow, the build images need to be
uploaded to a local Docker registry first.
2022-03-05 10:20:07 +02:00
lwthiker
f6554b909e Add "load: true" to GitHub actions docker steps
Make the docker images in each step available to the next steps
in the GitHub workflow by specifying "load: true".
2022-03-04 19:24:06 +02:00
lwthiker
e13a644559 Add GitHub action steps to build and run the tests 2022-03-04 18:57:13 +02:00