SkillAgentSearch skills...

Fingerproxy

A crawler-focused forward proxy with fingerprint spoofing

Install / Use

/learn @gospider007/Fingerproxy
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<p align="center"> <a href="https://github.com/gospider007/fingerproxy"><img src="https://go.dev/images/favicon-gopher.png"></a> </p> <p align="center">A crawler-focused forward proxy with fingerprint spoofing</p> <p align="center"> <a href="https://github.com/gospider007/fingerproxy"> <img src="https://img.shields.io/github/last-commit/gospider007/fingerproxy"> </a> <a href="https://github.com/gospider007/fingerproxy"> <img src="https://img.shields.io/badge/build-passing-brightgreen"> </a> <a href="https://github.com/gospider007/fingerproxy"> <img src="https://img.shields.io/badge/language-golang-brightgreen"> </a> </p>
<h2 align="center">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.</h2>

The fingerprints used in the project are generated from: 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

<center>

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

</center>

headers key table

<center>

| headers key |headers value |demo | | --- | --- | --- | | Gospider007-Fingerproxy-Spec | Browser fingerprint with 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 |

</center>

quick start

Installation

github

pip install --force-reinstall git+https://github.com/gospider007/fingerproxy.git

gitee

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

pip uninstall fingerproxy

Once the server is running on http://127.0.0.1:8080, you can make requests using any HTTP client:

curl

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

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

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

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
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://tools.scrapfly.io/api/fp/anything');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    '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',
]);
curl_setopt($ch, CURLOPT_PROXY, 'http://127.0.0.1:8080');
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

$response = curl_exec($ch);
// 打印响应内容
if ($response === false) {
    echo 'Curl error: ' . curl_error($ch);
} else {
    echo $response;
}
curl_close($ch);

Contributing

If you have a bug report or feature request, you can open an issue

Contact

If you have questions, feel free to reach out to us in the following ways:

  • QQ Group (Chinese): 939111384 - <a href="http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=yI72QqgPExDqX6u_uEbzAE_XfMW6h_d3&jump_from=webapi"><img src="https://pub.idqqimg.com/wpa/images/group.png"></a>
  • 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.

<table> <tr> <td align="center"> <img src="https://github.com/gospider007/tools/blob/master/play/wx.jpg?raw=true" height="200px" width="200px" alt=""/> <br /> <sub><b>Wechat</b></sub> </td> <td align="center"> <img src="https://github.com/gospider007/tools/blob/master/play/qq.jpg?raw=true" height="200px" width="200px" alt=""/> <br /> <sub><b>Alipay</b></sub> </td> </tr> </table>

License

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

View on GitHub
GitHub Stars17
CategoryDevelopment
Updated27d ago
Forks2

Languages

Python

Security Score

80/100

Audited on Mar 6, 2026

No findings