| Name | xproxy JSON |
| Version |
0.1.0
JSON |
| download |
| home_page | None |
| Summary | My Awesome Project! |
| upload_time | 2024-10-15 13:30:52 |
| maintainer | None |
| docs_url | None |
| author | Author |
| requires_python | <4.0,>=3.10 |
| license | MIT |
| keywords |
|
| VCS |
|
| bugtrack_url |
|
| requirements |
No requirements were recorded.
|
| Travis-CI |
No Travis.
|
| coveralls test coverage |
No coveralls.
|
# xproxy
## 特性
- **可定制**:可以轻松扩展,将不同来源代理共用。
- **代理验证**:自动检查和验证代理的使用次数和过期时间。
- **自动轮换**:定期刷新和轮换代理,以确保持续供应有效代理。
- **线程安全**:使用多线程处理代理轮换,无阻塞主应用程序。
- **轮询选择**:支持轮询代理选择,均匀分配负载。
## 安装
```
pip install xproxy
```
## 示例
```python
from xproxy.manager import DuoMiProxyManager
import requests
proxy_manager = DuoMiProxyManager( # 代理管理器,会主动记录无效过的代理,防止重复使用无效代理 自动维护代理池有效代理数量,
proxy_url='http://api.dmdaili.com/dmgetip.asp?apikey=3be53e22&pwd=4f2799827bfe9c6f0e2a64749cf5f3f6&getnum=50&httptype=1&geshi=2&fenge=1&fengefu=&operate=all',
max_use_count=5, # 设定单个代理最大使用次数
min_valid_proxies=20, # 设定代理池至少维持20个有效代理
proxy_expiry_seconds=60, # 设定单个代理60秒内 或者达到 endtime的时间记录为超时
rotate_seconds=30 # 定时服务,每隔30秒,检查一遍代理池,如果代理池代理少了,就获取代理
)
proxy = proxy_manager.get_order_proxy() # proxy_manager.get_random_proxy()
response = requests.get(url, headers=headers, proxies={
"http": str(proxy.url), "https": str(proxy.url)}, timeout=60)
if response.status_code != 200:
proxy_manager.mark_proxy_invalid(proxy.url) # 可以主动标记代理为无效
```
### 2.1 init project
```bash
poetry install -v
```
### 2.2 usage
TODO
## 3. Develop
You may need to read the [develop document](./docs/development.md) to use SRC Layout in your IDE.
Raw data
{
"_id": null,
"home_page": null,
"name": "xproxy",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.10",
"maintainer_email": null,
"keywords": null,
"author": "Author",
"author_email": "author@example.com",
"download_url": "https://files.pythonhosted.org/packages/e7/ce/95bd905a6d1d3d84b996da79c24296e91b95044df378d007005a6c7302c7/xproxy-0.1.0.tar.gz",
"platform": null,
"description": "# xproxy\n\n## \u7279\u6027\n\n- **\u53ef\u5b9a\u5236**\uff1a\u53ef\u4ee5\u8f7b\u677e\u6269\u5c55\uff0c\u5c06\u4e0d\u540c\u6765\u6e90\u4ee3\u7406\u5171\u7528\u3002\n- **\u4ee3\u7406\u9a8c\u8bc1**\uff1a\u81ea\u52a8\u68c0\u67e5\u548c\u9a8c\u8bc1\u4ee3\u7406\u7684\u4f7f\u7528\u6b21\u6570\u548c\u8fc7\u671f\u65f6\u95f4\u3002\n- **\u81ea\u52a8\u8f6e\u6362**\uff1a\u5b9a\u671f\u5237\u65b0\u548c\u8f6e\u6362\u4ee3\u7406\uff0c\u4ee5\u786e\u4fdd\u6301\u7eed\u4f9b\u5e94\u6709\u6548\u4ee3\u7406\u3002\n- **\u7ebf\u7a0b\u5b89\u5168**\uff1a\u4f7f\u7528\u591a\u7ebf\u7a0b\u5904\u7406\u4ee3\u7406\u8f6e\u6362\uff0c\u65e0\u963b\u585e\u4e3b\u5e94\u7528\u7a0b\u5e8f\u3002\n- **\u8f6e\u8be2\u9009\u62e9**\uff1a\u652f\u6301\u8f6e\u8be2\u4ee3\u7406\u9009\u62e9\uff0c\u5747\u5300\u5206\u914d\u8d1f\u8f7d\u3002\n\n## \u5b89\u88c5\n\n```\npip install xproxy\n```\n\n## \u793a\u4f8b\n\n```python\nfrom xproxy.manager import DuoMiProxyManager\nimport requests\nproxy_manager = DuoMiProxyManager( # \u4ee3\u7406\u7ba1\u7406\u5668\uff0c\u4f1a\u4e3b\u52a8\u8bb0\u5f55\u65e0\u6548\u8fc7\u7684\u4ee3\u7406\uff0c\u9632\u6b62\u91cd\u590d\u4f7f\u7528\u65e0\u6548\u4ee3\u7406 \u81ea\u52a8\u7ef4\u62a4\u4ee3\u7406\u6c60\u6709\u6548\u4ee3\u7406\u6570\u91cf\uff0c\n proxy_url='http://api.dmdaili.com/dmgetip.asp?apikey=3be53e22&pwd=4f2799827bfe9c6f0e2a64749cf5f3f6&getnum=50&httptype=1&geshi=2&fenge=1&fengefu=&operate=all',\n max_use_count=5, # \u8bbe\u5b9a\u5355\u4e2a\u4ee3\u7406\u6700\u5927\u4f7f\u7528\u6b21\u6570\n min_valid_proxies=20, # \u8bbe\u5b9a\u4ee3\u7406\u6c60\u81f3\u5c11\u7ef4\u630120\u4e2a\u6709\u6548\u4ee3\u7406\n proxy_expiry_seconds=60, # \u8bbe\u5b9a\u5355\u4e2a\u4ee3\u740660\u79d2\u5185 \u6216\u8005\u8fbe\u5230 endtime\u7684\u65f6\u95f4\u8bb0\u5f55\u4e3a\u8d85\u65f6\n rotate_seconds=30 # \u5b9a\u65f6\u670d\u52a1\uff0c\u6bcf\u969430\u79d2\uff0c\u68c0\u67e5\u4e00\u904d\u4ee3\u7406\u6c60\uff0c\u5982\u679c\u4ee3\u7406\u6c60\u4ee3\u7406\u5c11\u4e86\uff0c\u5c31\u83b7\u53d6\u4ee3\u7406\n)\nproxy = proxy_manager.get_order_proxy() # proxy_manager.get_random_proxy()\nresponse = requests.get(url, headers=headers, proxies={\n \"http\": str(proxy.url), \"https\": str(proxy.url)}, timeout=60)\nif response.status_code != 200:\n proxy_manager.mark_proxy_invalid(proxy.url) # \u53ef\u4ee5\u4e3b\u52a8\u6807\u8bb0\u4ee3\u7406\u4e3a\u65e0\u6548\n \n```\n\n### 2.1 init project\n\n```bash\npoetry install -v\n```\n\n### 2.2 usage\n\nTODO\n\n## 3. Develop\n\nYou may need to read the [develop document](./docs/development.md) to use SRC Layout in your IDE.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "My Awesome Project!",
"version": "0.1.0",
"project_urls": null,
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "8a8807ea9564952765e55565e8bce99aa4712cd101fa00f1a4a5c891fe40337c",
"md5": "602093806cd89e92470c08dbf4e15a75",
"sha256": "61559f24541d8f8b5c6426cedc918ac1425e53574490b6f7102c32b1c22fac18"
},
"downloads": -1,
"filename": "xproxy-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "602093806cd89e92470c08dbf4e15a75",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.10",
"size": 8004,
"upload_time": "2024-10-15T13:30:50",
"upload_time_iso_8601": "2024-10-15T13:30:50.052179Z",
"url": "https://files.pythonhosted.org/packages/8a/88/07ea9564952765e55565e8bce99aa4712cd101fa00f1a4a5c891fe40337c/xproxy-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e7ce95bd905a6d1d3d84b996da79c24296e91b95044df378d007005a6c7302c7",
"md5": "f5ba5db14cb46cba0d4be9f9703b63d3",
"sha256": "90cfaad1ae74ebdbe96d870d866cb99e40964d9ab777e81c47f5e4fe096dc600"
},
"downloads": -1,
"filename": "xproxy-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "f5ba5db14cb46cba0d4be9f9703b63d3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.10",
"size": 6853,
"upload_time": "2024-10-15T13:30:52",
"upload_time_iso_8601": "2024-10-15T13:30:52.141999Z",
"url": "https://files.pythonhosted.org/packages/e7/ce/95bd905a6d1d3d84b996da79c24296e91b95044df378d007005a6c7302c7/xproxy-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-15 13:30:52",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "xproxy"
}