funfake


Namefunfake JSON
Version 1.0.9 PyPI version JSON
download
home_pageNone
SummaryA lightweight Python library for generating realistic HTTP headers to simulate various browsers and operating systems
upload_time2025-08-22 14:10:32
maintainerNone
docs_urlNone
authorNone
requires_python>=3.7
licenseMIT
keywords http headers user-agent fake browser crawler requests
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # funfake

[![PyPI version](https://badge.fury.io/py/funfake.svg)](https://badge.fury.io/py/funfake)
[![Python](https://img.shields.io/badge/python-3.6+-blue.svg)](https://www.python.org/downloads/)
[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)

一个轻量级的Python库,用于生成真实的HTTP请求头,帮助模拟各种浏览器和操作系统的网络请求。

## ✨ 特性

- 🎭 **真实模拟**: 支持Chrome、Firefox、Opera等主流浏览器
- 🖥️ **多平台**: 支持Windows、macOS、Linux操作系统
- 🎲 **随机生成**: 智能随机组合生成逼真的请求头
- 🚀 **零依赖**: 纯Python实现,无外部依赖
- 📦 **轻量级**: 简单易用的API设计
- 🔄 **高度可定制**: 支持指定特定浏览器和操作系统

## 📦 安装

```bash
pip install funfake
```

## 🚀 快速开始

### 基础用法

```python
from funfake import fake_header

# 生成随机请求头
headers = fake_header()
print(headers)
# 输出示例:
# {
#     'Accept': '*/*',
#     'Connection': 'keep-alive',
#     'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
#     'Accept-Encoding': 'gzip, deflate, br',
#     'Accept-Language': 'en-US;q=0.5,en;q=0.3',
#     'Referer': 'https://www.google.com'
# }
```

### 高级用法

```python
from funfake import Headers

# 指定浏览器和操作系统
chrome_headers = Headers(browser='chrome', os='win', headers=True)
headers = chrome_headers.generate()

# 指定Firefox浏览器,macOS系统
firefox_headers = Headers(browser='firefox', os='mac', headers=True)
headers = firefox_headers.generate()

# 只生成基础请求头(不包含额外头信息)
basic_headers = Headers(browser='chrome', os='linux', headers=False)
headers = basic_headers.generate()
```

## 📚 API 文档

### `fake_header()`

生成随机的HTTP请求头。

**返回值**: `dict` - 包含HTTP请求头的字典

### `Headers` 类

用于自定义生成HTTP请求头的类。

**参数**:
- `browser` (str, 可选): 浏览器类型
  - `'chrome'`: Chrome浏览器
  - `'firefox'`: Firefox浏览器  
  - `'opera'`: Opera浏览器
  - `None`: 随机选择 (默认)

- `os` (str, 可选): 操作系统类型
  - `'win'`: Windows系统
  - `'mac'`: macOS系统
  - `'lin'`: Linux系统
  - `None`: 随机选择 (默认)

- `headers` (bool, 可选): 是否生成额外的HTTP头
  - `True`: 包含Accept-Encoding、Accept-Language等额外头信息
  - `False`: 只包含基础头信息 (默认)

**方法**:
- `generate()`: 生成HTTP请求头字典

## 🎯 使用场景

- **Web爬虫**: 避免被网站检测为机器人
- **API测试**: 模拟真实用户请求
- **负载测试**: 生成多样化的请求头
- **浏览器兼容性测试**: 测试不同浏览器环境
- **网络请求模拟**: 在自动化测试中使用

## 📊 支持的浏览器版本

| 浏览器 | 支持版本数量 | 版本范围 |
|--------|-------------|----------|
| Chrome | 87+ | 50.0 - 87.0 |
| Firefox | 138+ | 50.0 - 80.0 |
| Opera | 42+ | 50.0 - 67.0 |

## 🖥️ 支持的操作系统

- **Windows**: Windows NT 6.0-6.3, Windows 10
- **macOS**: Mac OS X 10.10-10.14
- **Linux**: 支持x86_64、i686架构

## 🌐 真实引用域名

内置532个真实网站域名作为Referer,包括:
- Google、YouTube、Facebook等主流网站
- 各国Wikipedia、新闻媒体网站
- 技术类网站如GitHub、Stack Overflow
- 电商网站如Amazon、eBay

## 🔧 实际应用示例

### 在requests中使用

```python
import requests
from funfake import fake_header

url = "https://httpbin.org/headers"
headers = fake_header()

response = requests.get(url, headers=headers)
print(response.json())
```

### 在爬虫中使用

```python
import requests
from funfake import Headers

class WebScraper:
    def __init__(self):
        self.session = requests.Session()
        self.header_generator = Headers(headers=True)
    
    def get_page(self, url):
        # 每次请求使用不同的请求头
        headers = self.header_generator.generate()
        self.session.headers.update(headers)
        return self.session.get(url)
```

## 🤝 贡献

欢迎提交Issue和Pull Request!

## 📄 许可证

本项目采用MIT许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。

## 👥 作者

- **牛哥** - [niuliangtao@qq.com](mailto:niuliangtao@qq.com)
- **farfarfun团队** - [farfarfun@qq.com](mailto:farfarfun@qq.com)

## 🔗 相关链接

- [GitHub仓库](https://github.com/farfarfun/funfake)
- [PyPI包](https://pypi.org/project/funfake/)
- [发布页面](https://github.com/farfarfun/funfake/releases)
- [组织主页](https://github.com/farfarfun)

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "funfake",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": "\u725b\u54e5 <niuliangtao@qq.com>, farfarfun <farfarfun@qq.com>",
    "keywords": "http, headers, user-agent, fake, browser, crawler, requests",
    "author": null,
    "author_email": "\u725b\u54e5 <niuliangtao@qq.com>, farfarfun <farfarfun@qq.com>",
    "download_url": null,
    "platform": null,
    "description": "# funfake\n\n[![PyPI version](https://badge.fury.io/py/funfake.svg)](https://badge.fury.io/py/funfake)\n[![Python](https://img.shields.io/badge/python-3.6+-blue.svg)](https://www.python.org/downloads/)\n[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)\n\n\u4e00\u4e2a\u8f7b\u91cf\u7ea7\u7684Python\u5e93\uff0c\u7528\u4e8e\u751f\u6210\u771f\u5b9e\u7684HTTP\u8bf7\u6c42\u5934\uff0c\u5e2e\u52a9\u6a21\u62df\u5404\u79cd\u6d4f\u89c8\u5668\u548c\u64cd\u4f5c\u7cfb\u7edf\u7684\u7f51\u7edc\u8bf7\u6c42\u3002\n\n## \u2728 \u7279\u6027\n\n- \ud83c\udfad **\u771f\u5b9e\u6a21\u62df**: \u652f\u6301Chrome\u3001Firefox\u3001Opera\u7b49\u4e3b\u6d41\u6d4f\u89c8\u5668\n- \ud83d\udda5\ufe0f **\u591a\u5e73\u53f0**: \u652f\u6301Windows\u3001macOS\u3001Linux\u64cd\u4f5c\u7cfb\u7edf\n- \ud83c\udfb2 **\u968f\u673a\u751f\u6210**: \u667a\u80fd\u968f\u673a\u7ec4\u5408\u751f\u6210\u903c\u771f\u7684\u8bf7\u6c42\u5934\n- \ud83d\ude80 **\u96f6\u4f9d\u8d56**: \u7eafPython\u5b9e\u73b0\uff0c\u65e0\u5916\u90e8\u4f9d\u8d56\n- \ud83d\udce6 **\u8f7b\u91cf\u7ea7**: \u7b80\u5355\u6613\u7528\u7684API\u8bbe\u8ba1\n- \ud83d\udd04 **\u9ad8\u5ea6\u53ef\u5b9a\u5236**: \u652f\u6301\u6307\u5b9a\u7279\u5b9a\u6d4f\u89c8\u5668\u548c\u64cd\u4f5c\u7cfb\u7edf\n\n## \ud83d\udce6 \u5b89\u88c5\n\n```bash\npip install funfake\n```\n\n## \ud83d\ude80 \u5feb\u901f\u5f00\u59cb\n\n### \u57fa\u7840\u7528\u6cd5\n\n```python\nfrom funfake import fake_header\n\n# \u751f\u6210\u968f\u673a\u8bf7\u6c42\u5934\nheaders = fake_header()\nprint(headers)\n# \u8f93\u51fa\u793a\u4f8b:\n# {\n#     'Accept': '*/*',\n#     'Connection': 'keep-alive',\n#     'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',\n#     'Accept-Encoding': 'gzip, deflate, br',\n#     'Accept-Language': 'en-US;q=0.5,en;q=0.3',\n#     'Referer': 'https://www.google.com'\n# }\n```\n\n### \u9ad8\u7ea7\u7528\u6cd5\n\n```python\nfrom funfake import Headers\n\n# \u6307\u5b9a\u6d4f\u89c8\u5668\u548c\u64cd\u4f5c\u7cfb\u7edf\nchrome_headers = Headers(browser='chrome', os='win', headers=True)\nheaders = chrome_headers.generate()\n\n# \u6307\u5b9aFirefox\u6d4f\u89c8\u5668\uff0cmacOS\u7cfb\u7edf\nfirefox_headers = Headers(browser='firefox', os='mac', headers=True)\nheaders = firefox_headers.generate()\n\n# \u53ea\u751f\u6210\u57fa\u7840\u8bf7\u6c42\u5934\uff08\u4e0d\u5305\u542b\u989d\u5916\u5934\u4fe1\u606f\uff09\nbasic_headers = Headers(browser='chrome', os='linux', headers=False)\nheaders = basic_headers.generate()\n```\n\n## \ud83d\udcda API \u6587\u6863\n\n### `fake_header()`\n\n\u751f\u6210\u968f\u673a\u7684HTTP\u8bf7\u6c42\u5934\u3002\n\n**\u8fd4\u56de\u503c**: `dict` - \u5305\u542bHTTP\u8bf7\u6c42\u5934\u7684\u5b57\u5178\n\n### `Headers` \u7c7b\n\n\u7528\u4e8e\u81ea\u5b9a\u4e49\u751f\u6210HTTP\u8bf7\u6c42\u5934\u7684\u7c7b\u3002\n\n**\u53c2\u6570**:\n- `browser` (str, \u53ef\u9009): \u6d4f\u89c8\u5668\u7c7b\u578b\n  - `'chrome'`: Chrome\u6d4f\u89c8\u5668\n  - `'firefox'`: Firefox\u6d4f\u89c8\u5668  \n  - `'opera'`: Opera\u6d4f\u89c8\u5668\n  - `None`: \u968f\u673a\u9009\u62e9 (\u9ed8\u8ba4)\n\n- `os` (str, \u53ef\u9009): \u64cd\u4f5c\u7cfb\u7edf\u7c7b\u578b\n  - `'win'`: Windows\u7cfb\u7edf\n  - `'mac'`: macOS\u7cfb\u7edf\n  - `'lin'`: Linux\u7cfb\u7edf\n  - `None`: \u968f\u673a\u9009\u62e9 (\u9ed8\u8ba4)\n\n- `headers` (bool, \u53ef\u9009): \u662f\u5426\u751f\u6210\u989d\u5916\u7684HTTP\u5934\n  - `True`: \u5305\u542bAccept-Encoding\u3001Accept-Language\u7b49\u989d\u5916\u5934\u4fe1\u606f\n  - `False`: \u53ea\u5305\u542b\u57fa\u7840\u5934\u4fe1\u606f (\u9ed8\u8ba4)\n\n**\u65b9\u6cd5**:\n- `generate()`: \u751f\u6210HTTP\u8bf7\u6c42\u5934\u5b57\u5178\n\n## \ud83c\udfaf \u4f7f\u7528\u573a\u666f\n\n- **Web\u722c\u866b**: \u907f\u514d\u88ab\u7f51\u7ad9\u68c0\u6d4b\u4e3a\u673a\u5668\u4eba\n- **API\u6d4b\u8bd5**: \u6a21\u62df\u771f\u5b9e\u7528\u6237\u8bf7\u6c42\n- **\u8d1f\u8f7d\u6d4b\u8bd5**: \u751f\u6210\u591a\u6837\u5316\u7684\u8bf7\u6c42\u5934\n- **\u6d4f\u89c8\u5668\u517c\u5bb9\u6027\u6d4b\u8bd5**: \u6d4b\u8bd5\u4e0d\u540c\u6d4f\u89c8\u5668\u73af\u5883\n- **\u7f51\u7edc\u8bf7\u6c42\u6a21\u62df**: \u5728\u81ea\u52a8\u5316\u6d4b\u8bd5\u4e2d\u4f7f\u7528\n\n## \ud83d\udcca \u652f\u6301\u7684\u6d4f\u89c8\u5668\u7248\u672c\n\n| \u6d4f\u89c8\u5668 | \u652f\u6301\u7248\u672c\u6570\u91cf | \u7248\u672c\u8303\u56f4 |\n|--------|-------------|----------|\n| Chrome | 87+ | 50.0 - 87.0 |\n| Firefox | 138+ | 50.0 - 80.0 |\n| Opera | 42+ | 50.0 - 67.0 |\n\n## \ud83d\udda5\ufe0f \u652f\u6301\u7684\u64cd\u4f5c\u7cfb\u7edf\n\n- **Windows**: Windows NT 6.0-6.3, Windows 10\n- **macOS**: Mac OS X 10.10-10.14\n- **Linux**: \u652f\u6301x86_64\u3001i686\u67b6\u6784\n\n## \ud83c\udf10 \u771f\u5b9e\u5f15\u7528\u57df\u540d\n\n\u5185\u7f6e532\u4e2a\u771f\u5b9e\u7f51\u7ad9\u57df\u540d\u4f5c\u4e3aReferer\uff0c\u5305\u62ec\uff1a\n- Google\u3001YouTube\u3001Facebook\u7b49\u4e3b\u6d41\u7f51\u7ad9\n- \u5404\u56fdWikipedia\u3001\u65b0\u95fb\u5a92\u4f53\u7f51\u7ad9\n- \u6280\u672f\u7c7b\u7f51\u7ad9\u5982GitHub\u3001Stack Overflow\n- \u7535\u5546\u7f51\u7ad9\u5982Amazon\u3001eBay\n\n## \ud83d\udd27 \u5b9e\u9645\u5e94\u7528\u793a\u4f8b\n\n### \u5728requests\u4e2d\u4f7f\u7528\n\n```python\nimport requests\nfrom funfake import fake_header\n\nurl = \"https://httpbin.org/headers\"\nheaders = fake_header()\n\nresponse = requests.get(url, headers=headers)\nprint(response.json())\n```\n\n### \u5728\u722c\u866b\u4e2d\u4f7f\u7528\n\n```python\nimport requests\nfrom funfake import Headers\n\nclass WebScraper:\n    def __init__(self):\n        self.session = requests.Session()\n        self.header_generator = Headers(headers=True)\n    \n    def get_page(self, url):\n        # \u6bcf\u6b21\u8bf7\u6c42\u4f7f\u7528\u4e0d\u540c\u7684\u8bf7\u6c42\u5934\n        headers = self.header_generator.generate()\n        self.session.headers.update(headers)\n        return self.session.get(url)\n```\n\n## \ud83e\udd1d \u8d21\u732e\n\n\u6b22\u8fce\u63d0\u4ea4Issue\u548cPull Request\uff01\n\n## \ud83d\udcc4 \u8bb8\u53ef\u8bc1\n\n\u672c\u9879\u76ee\u91c7\u7528MIT\u8bb8\u53ef\u8bc1 - \u67e5\u770b [LICENSE](LICENSE) \u6587\u4ef6\u4e86\u89e3\u8be6\u60c5\u3002\n\n## \ud83d\udc65 \u4f5c\u8005\n\n- **\u725b\u54e5** - [niuliangtao@qq.com](mailto:niuliangtao@qq.com)\n- **farfarfun\u56e2\u961f** - [farfarfun@qq.com](mailto:farfarfun@qq.com)\n\n## \ud83d\udd17 \u76f8\u5173\u94fe\u63a5\n\n- [GitHub\u4ed3\u5e93](https://github.com/farfarfun/funfake)\n- [PyPI\u5305](https://pypi.org/project/funfake/)\n- [\u53d1\u5e03\u9875\u9762](https://github.com/farfarfun/funfake/releases)\n- [\u7ec4\u7ec7\u4e3b\u9875](https://github.com/farfarfun)\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A lightweight Python library for generating realistic HTTP headers to simulate various browsers and operating systems",
    "version": "1.0.9",
    "project_urls": {
        "Organization": "https://github.com/farfarfun",
        "Releases": "https://github.com/farfarfun/funfake/releases",
        "Repository": "https://github.com/farfarfun/funfake"
    },
    "split_keywords": [
        "http",
        " headers",
        " user-agent",
        " fake",
        " browser",
        " crawler",
        " requests"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "eb64401e0bda12c96370b98eb6a18c788bb4c339266619506a9c77cbaaa5c157",
                "md5": "cb3f2ef502799a1ccf7311acf67a8e8c",
                "sha256": "9a39c0e5e8f34d622747882da2ff8d1621fcedd47a972e72eddb003a3da4e960"
            },
            "downloads": -1,
            "filename": "funfake-1.0.9-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "cb3f2ef502799a1ccf7311acf67a8e8c",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 10400,
            "upload_time": "2025-08-22T14:10:32",
            "upload_time_iso_8601": "2025-08-22T14:10:32.591813Z",
            "url": "https://files.pythonhosted.org/packages/eb/64/401e0bda12c96370b98eb6a18c788bb4c339266619506a9c77cbaaa5c157/funfake-1.0.9-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-22 14:10:32",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "farfarfun",
    "github_project": "funfake",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "funfake"
}
        
Elapsed time: 0.98126s