TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Curl-Impersonate

425 pointsby jakeogh5 months ago

16 comments

cle5 months ago
The same author also makes a Python binding of this which exposes a requests-like API in Python, very helpful for making HTTP reqs without the overhead of running an entire browser stack: <a href="https:&#x2F;&#x2F;github.com&#x2F;lexiforest&#x2F;curl_cffi">https:&#x2F;&#x2F;github.com&#x2F;lexiforest&#x2F;curl_cffi</a><p>I can&#x27;t help but feel like these are the dying breaths of the open Internet though. All the megacorps (Google, Microsoft, Apple, CloudFlare, et al) are doing their damndest to make sure everyone is only using software approved by them, and to ensure that they can identify you. From multiple angles too (security, bots, DDoS, etc.), and it&#x27;s not just limited to browsers either.<p>End goal seems to be: prove your identity to the megacorps so they can track everything you do and also ensure you are only doing things they approve of. I think the security arguments are just convenient rationalizations in service of this goal.
评论 #42549247 未加载
评论 #42550307 未加载
评论 #42555670 未加载
评论 #42557584 未加载
评论 #42549386 未加载
评论 #42549359 未加载
评论 #42560287 未加载
评论 #42554988 未加载
评论 #42554957 未加载
评论 #42558640 未加载
oefrha5 months ago
What are some example sites where this is both necessary and sufficient? In my experience sites with serious anti-bot protection basically always have JavaScript-based browser detection, and some are capable of defeating puppeteer-extra-plugin-stealth even in headful mode. I doubt sites without serious anti-bot detection will do TLS fingerprinting. I guess it is useful for the narrower use case of getting a short-lived token&#x2F;cookie with a headless browser on a heavily defended site, then performing requests using said tokens with this lightweight client for a while?
评论 #42549383 未加载
评论 #42549382 未加载
评论 #42551531 未加载
评论 #42549640 未加载
评论 #42552287 未加载
jandrese5 months ago
The build scripts on this repo seem a bit cursed. It uses autotools but has you build them in a subdirectory. The default built target is a help text instead of just building the project. When you do use the listed build target it doesn&#x27;t have the dependencies set up correctly so you have to run it like 6 times to get to the point where it is building the application.<p>Ultimately I was not able to get it to build because the BoringSSL disto it downloaded failed to build even though I made sure all of the dependencies the INSTALL.md listed are installed. This might be because the machine I was trying to build it on is an older Ubuntu 20 release.<p>Edit: Tried it on Ubuntu 22, but BoringSSL again failed to build. The make script did work better however, only requiring a single invocation of make chrome-build before blowing up.<p>Looks like a classic case of &quot;don&#x27;t ship -Werror because compiler warnings are unpredictable&quot;.<p>Died on:<p>&#x2F;extensions.cc:3416:16: error: ‘ext_index’ may be used uninitialized in this function [-Werror=maybe-uninitialized]<p>The good news is that removing -Werror from the CMakeLists.txt in BoringSSL got around that issue. Bad news is that the dependency list is incomplete. You will also need libc++-XX-dev and libc++abi-XX-dev where the XX is the major version number of GCC on your machine. Once you fix that it will successfully build, but the install process is slightly incomplete. It doesn&#x27;t run ldconfig for you, you have to do it yourself.<p>On a final note, despite the name BoringSSL is huge library that takes a surprisingly long time to build. I thought it would be like LibreSSL where they trim it down to the core to keep the attack surface samll, but apparently Google went in the opposite direction.
评论 #42557492 未加载
评论 #42554984 未加载
评论 #42557677 未加载
评论 #42552328 未加载
评论 #42553301 未加载
zlagen5 months ago
In case anyone is interested, I created something similar but for python(using chromium&#x27;s network stack) <a href="https:&#x2F;&#x2F;github.com&#x2F;lagenar&#x2F;python-cronet">https:&#x2F;&#x2F;github.com&#x2F;lagenar&#x2F;python-cronet</a> I&#x27;m looking for help to create the build for windows.
评论 #42550867 未加载
评论 #42549733 未加载
评论 #42551569 未加载
Sytten5 months ago
Thankfully only a small fraction of website does JA3&#x2F;JA4 fingerprinting. Some do more advanced stuff like correlating headers to the fingerprint. We have been able to get away without doing much in Caido for a long time but I am working on an OSS rust based equivalent. Neat trick, you can use the fingerprint of our competitor (Burp Suite) since it is whitelisted for the security folks to do their job. Only time you will not hear me complain about checkbox security.
Retr0id5 months ago
I recently used ja3proxy, which uses utls for the impersonation. It exposes an HTTP proxy that you can use with any regular HTTP client (unmodified curl, python, etc.) and wraps it in a TLS client fingerprint of your choice. Although I don&#x27;t think it does anything special for http&#x2F;2, which curl-impersonate does advertise support for.<p><a href="https:&#x2F;&#x2F;github.com&#x2F;LyleMi&#x2F;ja3proxy">https:&#x2F;&#x2F;github.com&#x2F;LyleMi&#x2F;ja3proxy</a><p><a href="https:&#x2F;&#x2F;github.com&#x2F;refraction-networking&#x2F;utls">https:&#x2F;&#x2F;github.com&#x2F;refraction-networking&#x2F;utls</a>
peetistaken5 months ago
<a href="https:&#x2F;&#x2F;github.com&#x2F;bogdanfinn&#x2F;tls-client">https:&#x2F;&#x2F;github.com&#x2F;bogdanfinn&#x2F;tls-client</a> is the go-to package for the go world, it does the same thing
kerblang5 months ago
Interesting in light of another much-discussed story about AI scraper farms swamping&#x2F;DDOSing sites <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=42549624">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=42549624</a>
TekMol5 months ago
What is the use case? If you have to read data from one specific website which uses handshake info to avoid being read by software?<p>When I have to do HTTP requests these days, I default to a headless browser right away, because that seems to be the best bet. Even then, some website are not readable because they use captchas and whatnot.
评论 #42549290 未加载
评论 #42549058 未加载
jollyllama5 months ago
&gt;The Client Hello message that most HTTP clients and libraries produce differs drastically from that of a real browser.<p>Why is this?
评论 #42549106 未加载
评论 #42549124 未加载
评论 #42549110 未加载
0x676e675 months ago
I think someone should need this. It is based on boring tls and makes some fake extensions similar to utls to support Firefox TLS fingerprint imitation<p>repo: <a href="https:&#x2F;&#x2F;github.com&#x2F;penumbra-x&#x2F;rquest">https:&#x2F;&#x2F;github.com&#x2F;penumbra-x&#x2F;rquest</a>
jakeogh5 months ago
(very rough) ebuild: <a href="https:&#x2F;&#x2F;github.com&#x2F;jakeogh&#x2F;jakeogh&#x2F;blob&#x2F;master&#x2F;net-misc&#x2F;curl-impersonate&#x2F;curl-impersonate-9999.ebuild">https:&#x2F;&#x2F;github.com&#x2F;jakeogh&#x2F;jakeogh&#x2F;blob&#x2F;master&#x2F;net-misc&#x2F;curl...</a>
userbinator5 months ago
I can&#x27;t help but think that projects like these shouldn&#x27;t be posted here, since the enemy is among us. Prodding the bear even more might lead to an acceleration towards the dystopia that others here have already prophesised.<p><i>The following browsers can be impersonated.</i><p>...unfortunately no Firefox to be seen.<p>I&#x27;ve had to fight this too, since I use a filtering proxy. User-agent discrimination should be illegal. One may think the EU could have some power to change things, but then again, they&#x27;re also hugely into the whole &quot;digital identity&quot; thing.
评论 #42557511 未加载
评论 #42555202 未加载
aninteger5 months ago
I think we should list the sites where this fingerprinting is done. I have a suspicion that Microsoft does it for conditional access policies but I am not sure of other services.
评论 #42549643 未加载
评论 #42552151 未加载
londons_explore5 months ago
&gt; The resulting curl looks, from a network perspective, identical to a real browser.<p>How close is it? If I ran wireshark, would the bytes be exactly the same in the exact same packets?
评论 #42548837 未加载
评论 #42549540 未加载
评论 #42548796 未加载
ape45 months ago
I like this project!<p>Is there a way to request impersonization of the current version of Chrome (or whatever)?
评论 #42557472 未加载