Name | funfake JSON |
Version |
1.0.9
JSON |
| download |
home_page | None |
Summary | A lightweight Python library for generating realistic HTTP headers to simulate various browsers and operating systems |
upload_time | 2025-08-22 14:10:32 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.7 |
license | MIT |
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
[](https://badge.fury.io/py/funfake)
[](https://www.python.org/downloads/)
[](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[](https://badge.fury.io/py/funfake)\n[](https://www.python.org/downloads/)\n[](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"
}