An open API service indexing awesome lists of open source software.

https://github.com/gospider007/fingerproxy

A crawler-focused forward proxy with fingerprint spoofing
https://github.com/gospider007/fingerproxy

http2 ja3 ja3-fingerprint ja4 python tls-proxy

Last synced: 4 months ago
JSON representation

A crawler-focused forward proxy with fingerprint spoofing

Awesome Lists containing this project

README

          




A crawler-focused forward proxy with fingerprint spoofing












---

Fingerproxy is a fully featured Golang-based forward proxy app with browser fingerprint spoofing. With just a few lines of code, you can enable powerful fingerprint proxy capabilities. It provides unified support for HTTP/1, HTTP/2, WebSockets protocols.

## The fingerprints used in the project are generated from: [fp](https://github.com/gospider007/fp)

# features
* Automatically switch the fingerprint based on the user-agent
* True forward proxy transmission, implemented no differently from an IP proxy server
* Simultaneous support for HTTP, HTTPS, and SOCKS5 proxy protocols on the same port
* Automatic upgrade to HTTP/2
* Simulate TLS fingerprints, HTTP/2 fingerprints, and Order headers fingerprints
* Parameter configuration via request headers, such as fingerprint settings and proxy settings
* TCP stream compression, supporting zstd, br, gzip, deflate, snappy, minlz, and other algorithms to reduce bandwidth usage
* Request body compression, enforcing server support for zstd, br, gzip, deflate, and other compressed responses to reduce bandwidth usage

# Fingerproxy CLI Usage

| Flag | Description |
| ------------------------ | -------------------------------------- |
| `-mimt-root-cert string` | Path to the MITM root certificate file |
| `-mimt-root-key string` | Path to the MITM root key file |

# headers key table

| headers key |headers value |demo |
| --- | --- | --- |
| `Gospider007-Fingerproxy-Spec` | Browser fingerprint with [fp](https://github.com/gospider007/fp) | |
| `Gospider007-Fingerproxy-Proxy` | IP Proxy | http://127.0.0.1:8080 |
| `Gospider007-Fingerproxy-Force-Http1` | Force HTTP/1 protocol | true |
| `Gospider007-Fingerproxy-Force-Http3` | Force HTTP/3 protocol | true |

# quick start
## Installation
### github
```bash
pip install --force-reinstall git+https://github.com/gospider007/fingerproxy.git
```
### gitee
```bash
pip install --force-reinstall git+https://gitee.com/gospider007/fingerproxy.git
```

## Run FingerProxy
```
fingerproxy
```
## Stop FingerProxy
```
fingerproxy_stop
```
## Example Output:
```
listening on: 127.0.0.1:8080
```
## Uninstall
```bash
pip uninstall fingerproxy
```

# Once the server is running on http://127.0.0.1:8080, you can make requests using any HTTP client:
### curl
```bash
curl -k "https://tools.scrapfly.io/api/fp/anything" \
-x "http://127.0.0.1:8080" \
-H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.7499.4 Safari/537.36"
```
### python
```python
import requests

proxies = {
'http': 'http://127.0.0.1:8080',
'https': 'http://127.0.0.1:8080',
}

headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.7499.4 Safari/537.36',
}

response = requests.get('https://tools.scrapfly.io/api/fp/anything', headers=headers, proxies=proxies, verify=False)
print(response.text)
```

### golang
```go
package main

import (
"crypto/tls"
"fmt"
"io"
"log"
"net/http"
"net/url"
)

func main() {
req, _ := http.NewRequest("GET", "https://tools.scrapfly.io/api/fp/anything", nil)
req.Header.Set("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.7499.4 Safari/537.36")
resp, err := (&http.Client{Transport: &http.Transport{
Proxy: func(r *http.Request) (*url.URL, error) {
return url.Parse("http://127.0.0.1:8080")
},
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}}).Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := io.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
```
### nodejs
```js
import axios from 'axios';

const response = await axios.get('https://tools.scrapfly.io/api/fp/anything', {
headers: {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.7499.4 Safari/537.36'
},
proxy: {
protocol: 'http',
host: '127.0.0.1',
port: 8080
}
});
console.log(response.data)
```
### php
```php

* WeChat (Chinese): gospider007

## Sponsors
If you like and it really helps you, feel free to reward me with a cup of coffee, and don't forget to mention your github id.






Wechat





Alipay

## License
This project is licensed under the Mozilla Public License 2.0 (MPL-2.0) with additional author attribution requirements.
See the [LICENSE](./LICENSE) file for details.