{ "info": { "author": "Resolvewang", "author_email": "resolvewang@foxmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "# HAipproxy\n[README](README_EN.md)\u3000\uff5c\u3000[\u4e2d\u6587\u6587\u6863](README.md)\n\n\u672c\u9879\u76ee\u6240\u91c7\u96c6\u7684IP\u8d44\u6e90\u90fd\u6765\u81ea\u4e92\u8054\u7f51\uff0c\u613f\u666f\u662f\u4e3a\u5927\u578b\u722c\u866b\u9879\u76ee\u63d0\u4f9b\u4e00\u4e2a**\u9ad8\u53ef\u7528\u4f4e\u5ef6\u8fdf\u7684\u9ad8\u533fIP\u4ee3\u7406\u6c60**\u3002\n\n# Features\n- \u5feb\u901f\u6293\u53d6\u4ee3\u7406IP\n- IP\u6293\u53d6\u548c\u63d0\u53d6\u7cbe\u51c6\n- IP\u6765\u6e90\u4e30\u5bcc\n- \u4f18\u826f\u7684IP\u6821\u9a8c\u5668\uff0c\u5e76\u4e14\u5bb9\u6613\u6839\u636e\u81ea\u8eab\u9700\u8981\u6269\u5c55\n- \u652f\u6301\u5206\u5e03\u5f0f\u90e8\u7f72\n- \u67b6\u6784\u8bbe\u8ba1\u7075\u6d3b\n- MIT\u6388\u6743\u534f\u8bae\n\n# Quick start\n\n\u6ce8\u610f\uff0c\u4ee3\u7801\u8bf7\u5728[release](https://github.com/SpiderClub/haipproxy/releases)\u5217\u8868\u4e2d\u4e0b\u8f7d\uff0c**master**\u5206\u652f\u7684\u4ee3\u7801\u4e0d\u4fdd\u8bc1\u80fd\u7a33\u5b9a\u8fd0\u884c\n\n## \u5355\u673a\u90e8\u7f72\n\n### \u670d\u52a1\u7aef\n- \u5b89\u88c5Python3\u548cRedis\u3002\u6709\u95ee\u9898\u53ef\u4ee5\u9605\u8bfb[\u8fd9\u7bc7\u6587\u7ae0](https://github.com/SpiderClub/weibospider/wiki/%E5%88%86%E5%B8%83%E5%BC%8F%E7%88%AC%E8%99%AB%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE)\u7684\u76f8\u5173\u90e8\u5206\u3002\n- \u6839\u636eRedis\u7684\u5b9e\u9645\u914d\u7f6e\u4fee\u6539\u9879\u76ee\u914d\u7f6e\u6587\u4ef6[config/settings.py](config/settings.py)\u4e2d\u7684`REDIS_HOST`\u3001`REDIS_PASSWORD`\u7b49\u53c2\u6570\u3002\n- \u5b89\u88c5[scrapy-splash](https://github.com/scrapy-plugins/scrapy-splash)\uff0c\u5e76\u4fee\u6539\u914d\u7f6e\u6587\u4ef6[config/settings.py](config/settings.py)\u4e2d\u7684`SPLASH_URL`\n- \u5b89\u88c5\u9879\u76ee\u76f8\u5173\u4f9d\u8d56\n > pip install -r requirements.txt\n- \u542f\u52a8*scrapy worker*\uff0c\u5305\u62ec\u4ee3\u7406IP\u91c7\u96c6\u5668\u548c\u6821\u9a8c\u5668\n > python crawler_booter.py --usage crawler\n\n > python crawler_booter.py --usage validator\n- \u542f\u52a8*\u8c03\u5ea6\u5668*\uff0c\u5305\u62ec\u4ee3\u7406IP\u5b9a\u65f6\u8c03\u5ea6\u548c\u6821\u9a8c\n > python scheduler_booter.py --usage crawler\n\n > python scheduler_booter.py --usage validator\n\n### \u5ba2\u6237\u7aef\n\u8fd1\u65e5\u4e0d\u65ad\u6709\u540c\u5b66\u95ee\uff0c\u5982\u4f55\u83b7\u53d6\u8be5\u9879\u76ee\u4e2d\u53ef\u7528\u7684\u4ee3\u7406IP\u5217\u8868\u3002`haipproxy`\u63d0\u4f9b\u4ee3\u7406\u7684\u65b9\u5f0f\u5e76\u4e0d\u662f\u901a\u8fc7`api api`\u6765\u63d0\u4f9b\uff0c\u800c\u662f\u901a\u8fc7\u5177\u4f53\u7684\u5ba2\u6237\u7aef\u6765\u63d0\u4f9b\u3002\n\u76ee\u524d\u652f\u6301\u7684\u662f[Python\u5ba2\u6237\u7aef](client/py_cli.py)\u548c\u8bed\u8a00\u65e0\u5173\u7684[squid\u4e8c\u7ea7\u4ee3\u7406](client/squid.py)\n\n#### python\u5ba2\u6237\u7aef\u8c03\u7528\u793a\u4f8b \n```python3\nfrom client.py_cli import ProxyFetcher\nargs = dict(host='127.0.0.1', port=6379, password='123456', db=0)\n\uff03\u3000\u8fd9\u91cc`zhihu`\u7684\u610f\u601d\u662f\uff0c\u53bb\u548c`zhihu`\u76f8\u5173\u7684\u4ee3\u7406ip\u6821\u9a8c\u961f\u5217\u4e2d\u83b7\u53d6ip\n\uff03\u3000\u8fd9\u4e48\u505a\u7684\u539f\u56e0\u662f\u540c\u4e00\u4e2a\u4ee3\u7406IP\u5bf9\u4e0d\u540c\u7f51\u7ad9\u4ee3\u7406\u6548\u679c\u4e0d\u540c\nfetcher = ProxyFetcher('zhihu', strategy='greedy', redis_args=args)\n# \u83b7\u53d6\u4e00\u4e2a\u53ef\u7528\u4ee3\u7406\nprint(fetcher.get_proxy())\n# \u83b7\u53d6\u53ef\u7528\u4ee3\u7406\u5217\u8868\nprint(fetcher.get_proxies()) # or print(fetcher.pool)\n```\n\n\u66f4\u5177\u4f53\u7684\u793a\u4f8b\u89c1[examples/zhihu](examples/zhihu/zhihu_spider.py)\n\n#### squid\u4f5c\u4e3a\u4e8c\u7ea7\u4ee3\u7406\n- \u5b89\u88c5squid\uff0c\u5907\u4efdsquid\u7684\u914d\u7f6e\u6587\u4ef6\u5e76\u4e14\u542f\u52a8squid\uff0c\u4ee5ubuntu\u4e3a\u4f8b\n > sudo apt-get install squid\n\n > sudo sed -i 's/http_access deny all/http_access allow all/g' /etc/squid/squid.conf\n\n > sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.backup\n\n > sudo service squid start\n- \u6839\u636e\u64cd\u4f5c\u7cfb\u7edf\u4fee\u6539\u9879\u76ee\u914d\u7f6e\u6587\u4ef6[config/settings.py](config/settings.py)\u4e2d\u7684`SQUID_BIN_PATH`\u3001`SQUID_CONF_PATH`\u3001`SQUID_TEMPLATE_PATH`\u7b49\u53c2\u6570\n- \u542f\u52a8`squid conf`\u7684\u5b9a\u65f6\u66f4\u65b0\u7a0b\u5e8f\n > sudo python squid_update.py\n- \u4f7f\u7528squid\u4f5c\u4e3a\u4ee3\u7406\u4e2d\u95f4\u5c42\u8bf7\u6c42\u76ee\u6807\u7f51\u7ad9,\u9ed8\u8ba4\u4ee3\u7406URL\u4e3a'http://squid_host:3128',\u7528Python\u8bf7\u6c42\u793a\u4f8b\u5982\u4e0b\n ```python3\n import requests\n proxies = {'https': 'http://127.0.0.1:3128'}\n resp = requests.get('https://httpbin.org/ip', proxies=proxies)\n print(resp.text)\n ```\n \n## Docker\u90e8\u7f72\n- \u5b89\u88c5Docker\n\n- \u5b89\u88c5*docker-compose*\n > pip install -U docker-compose\n\n- \u4fee\u6539[settings.py](config/settings.py)\u4e2d\u7684`SPLASH_URL`\u548c`REDIS_HOST`\u53c2\u6570\n ```python3\n SPLASH_URL = 'http://splash:8050'\n REDIS_HOST = 'redis'\n ```\n- \u4f7f\u7528*docker-compose*\u542f\u52a8\u5404\u4e2a\u5e94\u7528\u7ec4\u4ef6\n > docker-compose up\n\n\u8fd9\u79cd\u65b9\u5f0f\u4f1a\u4e00\u540c\u90e8\u7f72`squid`\uff0c\u60a8\u53ef\u4ee5\u901a\u8fc7`squid`\u8c03\u7528\u4ee3\u7406IP\u6c60\uff0c\u4e5f\u53ef\u4ee5\u4f7f\u7528\u5ba2\u6237\u7aef\u8c03\u7528\uff0c\u548c\u5355\u673a\u90e8\u7f72\u8c03\u7528\u65b9\u5f0f\u4e00\u6837\n\n# \u6ce8\u610f\u4e8b\u9879\n- \u672c\u9879\u76ee\u9ad8\u5ea6\u4f9d\u8d56Redis\uff0c\u9664\u4e86\u6d88\u606f\u901a\u4fe1\u548c\u6570\u636e\u5b58\u50a8\u4e4b\u5916\uff0cIP\u6821\u9a8c\u548c\u4efb\u52a1\u5b9a\u65f6\u5de5\u5177\u4e5f\u4f7f\u7528\u4e86Redis\u4e2d\u7684\u591a\u79cd\u6570\u636e\u7ed3\u6784\u3002\n\u5982\u679c\u9700\u8981\u66ff\u6362Redis\uff0c\u8bf7\u81ea\u884c\u5ea6\u91cf\n- \u7531\u4e8e*GFW*\u7684\u539f\u56e0\uff0c\u67d0\u4e9b\u7f51\u7ad9\u9700\u8981\u901a\u8fc7\u79d1\u5b66\u4e0a\u7f51\u624d\u80fd\u8fdb\u884c\u8bbf\u95ee\u548c\u91c7\u96c6\uff0c\u5982\u679c\u7528\u6237\u65e0\u6cd5\u8bbf\u95ee\u5899\u5916\u7684\u7f51\u7ad9\uff0c\u8bf7\u5c06[rules.py](config/rules.py)\n`task_queue`\u4e3a` SPIDER_GFW_TASK`\u548c`SPIDER_AJAX_GFW_TASK`\u7684\u4efb\u52a1`enable`\u5c5e\u6027\u8bbe\u7f6e\u4e3a0\u6216\u8005\u542f\u52a8\u722c\u866b\u7684\u65f6\u5019\u6307\u5b9a\u722c\u866b\u7c7b\u578b\u4e3a`common`\u548c\n`ajax`\n > python crawler_booter.py --usage crawler common ajax\n- \u76f8\u540c\u4ee3\u7406IP\uff0c\u5bf9\u4e8e\u4e0d\u540c\u7f51\u7ad9\u7684\u4ee3\u7406\u6548\u679c\u53ef\u80fd\u5927\u4e0d\u76f8\u540c\u3002\u5982\u679c\u901a\u7528\u4ee3\u7406\u65e0\u6cd5\u6ee1\u8db3\u60a8\u7684\u9700\u6c42\uff0c\u60a8\u53ef\u4ee5[\u4e3a\u7279\u5b9a\u7f51\u7ad9\u7f16\u5199\u4ee3\u7406IP\u6821\u9a8c\u5668](https://github.com/SpiderClub/haipproxy/blob/master/docs/%E9%92%88%E5%AF%B9%E7%89%B9%E5%AE%9A%E7%AB%99%E7%82%B9%E6%B7%BB%E5%8A%A0%E6%A0%A1%E9%AA%8C%E5%99%A8.md)\n\n# \u5de5\u4f5c\u6d41\u7a0b\n![](static/workflow.png)\n\n# \u5f00\u53d1\u8005\u6587\u6863\n\u4e3a\u4e86\u65b9\u4fbf\u7528\u6237\u9488\u5bf9\u81ea\u8eab\u9700\u6c42\u8fdb\u884c\u5b9a\u5236\u5316\uff0c`haipproxy`\u63d0\u4f9b\u4e86\u4e30\u5bcc\u7684\u6587\u6863\u652f\u6301\u3002\u6240\u6709\u6587\u6863\u8be6\u89c1[\u9879\u76eewiki](https://github.com/SpiderClub/haipproxy/wiki)\n\n# \u6548\u679c\u6d4b\u8bd5\n\u4ee5\u5355\u673a\u6a21\u5f0f\u90e8\u7f72`haipproxy`\u548c[\u6d4b\u8bd5\u4ee3\u7801](examples/zhihu/zhihu_spider.py)\uff0c\u4ee5\u77e5\u4e4e\u4e3a\u76ee\u6807\u8bf7\u6c42\u7ad9\u70b9\uff0c\n\u6bcf\u4e00\u4e07\u6761\u6210\u529f\u8bf7\u6c42\u4e3a\u7edf\u8ba1\u7ed3\u679c\uff0c\u5b9e\u6d4b\u6293\u53d6\u6548\u679c\u5982\u4e0b\n\n|\u8bf7\u6c42\u91cf|\u65f6\u95f4|\u8017\u65f6|IP\u8d1f\u8f7d\u7b56\u7565|\u5ba2\u6237\u7aef|\n|-----|----|---|---------|-----|\n|0|2018/03/03 22:03|0|greedy|[py_cli](client/py_cli.py)|\n|10000|2018/03/03 11:03|1 hour|greedy|[py_cli](client/py_cli.py)|\n|20000|2018/03/04 00:08|2 hours|greedy|[py_cli](client/py_cli.py)|\n|30000|2018/03/04 01:02|3 hours|greedy|[py_cli](client/py_cli.py)|\n|40000|2018/03/04 02:15|4 hours|greedy|[py_cli](client/py_cli.py)|\n|50000|2018/03/04 03:03|5 hours|greedy|[py_cli](client/py_cli.py)|\n|60000|2018/03/04 05:18|7 hours|greedy|[py_cli](client/py_cli.py)|\n|70000|2018/03/04 07:11|9 hours|greedy|[py_cli](client/py_cli.py)|\n|80000|2018/03/04 08:43|11 hours|greedy|[py_cli](client/py_cli.py)|\n\n\n\u53ef\u89c1`haipporxy`\u7684\u4ee3\u7406\u6548\u679c\u8fd8\u7b97\u4e0d\u9519\uff0c\u5728\u5f00\u59cb\u7684\u65f6\u5019\u53ef\u4ee5\u8fbe\u5230`1w/hour`\u7684\u8bf7\u6c42\u91cf\uff0c\u51e0\u4e2a\u5c0f\u65f6\u5019\u8bf7\u6c42\u91cf\u8bf7\u6c42\u91cf\n\u964d\u4e3a\u4e86`5k/hour`\u3002\u964d\u4f4e\u7684\u7ed3\u679c\u53ef\u80fd\u6709\u4e09\u4e2a: (1)\u968f\u7740\u6570\u636e\u91cf\u7684\u589e\u5927,Redis\u7684\u6027\u80fd\u53d7\u5230\u4e86\u4e00\u5b9a\u7684\u5f71\u54cd(2)\u77e5\u4e4e\u6821\u9a8c\n\u5668\u5728\u628a`Init Queue`\u4e2d\u7684\u4ee3\u7406\u6d88\u8d39\u5b8c\u4e4b\u540e\uff0c\u7531\u4e8e\u662f\u5b9a\u65f6\u4efb\u52a1\uff0c\u6240\u4ee5\u5bfc\u81f4\u67d0\u6bb5\u65f6\u95f4\u5185\u65b0\u9c9c\u7684IP\u7a7a\u7f3a\u3002\u800c\u514d\u8d39IP\u5927\u591a\n\u6570\u90fd\u662f\u77ed\u6548\u7684\uff0c\u6240\u4ee5\u8fd9\u6bb5\u65f6\u95f4\u51fa\u73b0\u4e86IP\u7684\u7a7a\u7f3a;(3)\u7531\u4e8e\u6211\u4eec\u91c7\u7528\u7684\u662f`greedy`\u6a21\u5f0f\u8c03\u7528IP\uff0c\u5b83\u7684\u8c03\u7528\u7b56\u7565\u662f: \u9ad8\n\u8d28\u91cf\u4ee3\u7406IP\u4f1a\u4e00\u76f4\u88ab\u8c03\u7528\u76f4\u81f3\u8be5\u4ee3\u7406IP\u4e0d\u80fd\u7528\u6216\u8005\u88ab\u5c01\uff0c\u800c\u4f4e\u5e94\u901f\u5ea6IP\u4f1a\u8f6e\u8be2\u8c03\u7528\u3002\u8fd9\u4e5f\u53ef\u80fd\u5bfc\u81f4\u9ad8\u8d28\u91cfIP\u7684\u7a7a\u7f3a\u3002\n\n\u7531\u6b64\u53ef\u89c1IP\u6821\u9a8c\u548c\u8c03\u7528\u7b56\u7565\u8fd8\u6709\u5f88\u5927\u7684\u4f18\u5316\u7a7a\u95f4\u3002\u5e0c\u671b\u80fd\u6709\u5fd7\u540c\u9053\u5408\u7684\u670b\u53cb\u52a0\u5165\u8fdb\u6765\u4e00\u8d77\u4f18\u5316\u3002\n\n\u6d4b\u8bd5\u4ee3\u7801\u89c1[examples/zhihu](examples/zhihu/zhihu_spider.py)\n\n# \u5982\u4f55\u8d21\u732e\n- \u6b22\u8fce\u7ed9\u9879\u76ee\u63d0\u65b0feature\n- \u5982\u679c\u53d1\u73b0\u9879\u76ee\u67d0\u4e9b\u73af\u8282\u6709\u95ee\u9898\uff0c\u6b22\u8fce\u63d0issue\u6216\u8005PR\n- \u4ee3\u7406IP\u6821\u9a8c\u548c\u7b5b\u9009\u7684\u7b56\u7565\u4ecd\u6709\u4f18\u5316\u7684\u7a7a\u95f4\uff0c\u6b22\u8fce\u5927\u5bb6\u4ea4\u6d41\u63a2\u8ba8\n- \u5982\u679c\u4f60\u53d1\u73b0\u4e86\u6bd4\u8f83\u597d\u7684\u4ee3\u7406\u7f51\u7ad9\uff0c\u6b22\u8fce\u5206\u4eab\n\n# \u540c\u7c7b\u9879\u76ee\u53c2\u8003\n\u672c\u9879\u76ee\u53c2\u8003\u4e86Github\u4e0a\u5f00\u6e90\u7684\u5404\u4e2a\u722c\u866b\u4ee3\u7406\u7684\u5b9e\u73b0\uff0c\u611f\u8c22\u4ed6\u4eec\u7684\u4ed8\u51fa\uff0c\u4e0b\u9762\u662f\u7b14\u8005\u53c2\u8003\u7684\u6240\u6709\u9879\u76ee\uff0c\u6392\u540d\u4e0d\u5206\u5148\u540e\u3002\n\n[dungproxy](https://github.com/virjar/dungproxy)\n\n[proxyspider](https://github.com/zhangchenchen/proxyspider)\n\n[ProxyPool](https://github.com/henson/ProxyPool)\n\n[proxy_pool](https://github.com/jhao104/proxy_pool)\n\n[ProxyPool](https://github.com/WiseDoge/ProxyPool)\n\n[IPProxyTool](https://github.com/awolfly9/IPProxyTool)\n\n[IPProxyPool](https://github.com/qiyeboy/IPProxyPool)\n\n[proxy_list](https://github.com/gavin66/proxy_list)\n\n[proxy_pool](https://github.com/lujqme/proxy_pool)", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/SpiderClub/haipproxy", "keywords": "proxy,client,haipproxy", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "haipproxy", "package_url": "https://pypi.org/project/haipproxy/", "platform": "", "project_url": "https://pypi.org/project/haipproxy/", "project_urls": { "Homepage": "https://github.com/SpiderClub/haipproxy" }, "release_url": "https://pypi.org/project/haipproxy/0.11.6/", "requires_dist": null, "requires_python": ">=3.4.0", "summary": "High aviariable proxy pool client for crawlers.", "version": "0.11.6" }, "last_serial": 3972244, "releases": { "0.11": [ { "comment_text": "", "digests": { "md5": "137e61e224120d4ae001ccffbac63fef", "sha256": "ba4cbb7c23702ece8f33f55f9cbd845e4ae19ca2bd70f1373de6cb54ac375cd2" }, "downloads": -1, "filename": "haipproxy-0.11.tar.gz", "has_sig": false, "md5_digest": "137e61e224120d4ae001ccffbac63fef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11186, "upload_time": "2018-06-17T06:03:16", "url": "https://files.pythonhosted.org/packages/5a/10/074939fb20ecfc780e669329056492087cadd6912974a148380ddaa585e0/haipproxy-0.11.tar.gz" } ], "0.11.1": [ { "comment_text": "", "digests": { "md5": "e0446a07b280f0d7c2548a9db824865a", "sha256": "0f218606a2548630f5f2f0c63f452a72cbf90f00a452e920482661d1af7f210a" }, "downloads": -1, "filename": "haipproxy-0.11.1.tar.gz", "has_sig": false, "md5_digest": "e0446a07b280f0d7c2548a9db824865a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11195, "upload_time": "2018-06-17T06:06:35", "url": "https://files.pythonhosted.org/packages/cd/b7/243ec61277c34d6efb605d61c66deea548056a47789bb6bbd239e2d20c38/haipproxy-0.11.1.tar.gz" } ], "0.11.3": [ { "comment_text": "", "digests": { "md5": "8bb2e19da2d482a96938ef30eef4b26d", "sha256": "81a0d17921dc84154f609d3bd52269535ac8c358081cefa95aa508019220ebd0" }, "downloads": -1, "filename": "haipproxy-0.11.3.tar.gz", "has_sig": false, "md5_digest": "8bb2e19da2d482a96938ef30eef4b26d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4.0", "size": 23808, "upload_time": "2018-06-17T06:33:25", "url": "https://files.pythonhosted.org/packages/25/0d/2c86219ae543e26953c0fb71c67e1ac4b49adb92d7d735bebae664d0d03c/haipproxy-0.11.3.tar.gz" } ], "0.11.4": [ { "comment_text": "", "digests": { "md5": "148dcf5e91c7958576137da947f49483", "sha256": "2c8d0e5d840ace4590c02507379b103c9271e4468e8acb783d847be0a8b8b702" }, "downloads": -1, "filename": "haipproxy-0.11.4.tar.gz", "has_sig": false, "md5_digest": "148dcf5e91c7958576137da947f49483", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4.0", "size": 23857, "upload_time": "2018-06-17T06:39:49", "url": "https://files.pythonhosted.org/packages/a8/b5/68b876731950ebd502c9eadbf4a3850e7c124b5708b796c852a399793d23/haipproxy-0.11.4.tar.gz" } ], "0.11.5": [ { "comment_text": "", "digests": { "md5": "26541d5e13b66fee2dcf8f109660e3b1", "sha256": "c00367754b4e145f80b08243d13ce2f6bc053a7f959a7275f00698e5c82a3bb2" }, "downloads": -1, "filename": "haipproxy-0.11.5.tar.gz", "has_sig": false, "md5_digest": "26541d5e13b66fee2dcf8f109660e3b1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4.0", "size": 25861, "upload_time": "2018-06-17T14:13:46", "url": "https://files.pythonhosted.org/packages/85/85/5e4bf920c980bdb1fd51468bde834bd28a59943ab3acc7bedea2f2859022/haipproxy-0.11.5.tar.gz" } ], "0.11.6": [ { "comment_text": "", "digests": { "md5": "8df858547d252afabd55d9ca6bd30d24", "sha256": "85d15c028102ae10032ec517343c957424a5735b6dfbe0012668f9f0eb920dbd" }, "downloads": -1, "filename": "haipproxy-0.11.6.tar.gz", "has_sig": false, "md5_digest": "8df858547d252afabd55d9ca6bd30d24", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4.0", "size": 16428, "upload_time": "2018-06-18T02:34:00", "url": "https://files.pythonhosted.org/packages/c4/5d/fab8aaecd798415d13addb65146ced18e2618e213c09244f0bf0d3d376af/haipproxy-0.11.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8df858547d252afabd55d9ca6bd30d24", "sha256": "85d15c028102ae10032ec517343c957424a5735b6dfbe0012668f9f0eb920dbd" }, "downloads": -1, "filename": "haipproxy-0.11.6.tar.gz", "has_sig": false, "md5_digest": "8df858547d252afabd55d9ca6bd30d24", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4.0", "size": 16428, "upload_time": "2018-06-18T02:34:00", "url": "https://files.pythonhosted.org/packages/c4/5d/fab8aaecd798415d13addb65146ced18e2618e213c09244f0bf0d3d376af/haipproxy-0.11.6.tar.gz" } ] }