代理收集器

proxyp的Python项目详细描述


#proxy_py

proxy_py是一个程序,它收集代理,将它们保存在数据库中,并定期进行检查。
它有一个服务器,可以使用漂亮的api获取代理(见下文)。



在[这里](http://proxy py.readthedocs.io)



1克隆此存储库


2安装要求

``bash
cd proxy-py
pip3 install-r-requirements.txt
```

3创建设置文件

`cp config-examples/settings.py proxy-py/settings.py`

4在settings.py文件中安装postgresql并更改数据库配置


>5(可选)configure alembic


>6运行应用程序

`python3 main.py`

7享受!我太懒了。我能用一下吗?

`待办事项:更新,旧版本!`

是的,您可以下载virtualbox image
[此处](https://drive.google.com/file/d/1opf6xwoadrh95ozw0vkpr1uu戡ilde9jc/view?usp=共享)。
下载后检查端口转发是否仍在工作,
您需要将55555主机端口转发给55555来宾。



代理有一个基于aiohttp的服务器,它正在监听127.0.0.1:55555
(您可以在设置文件中更改它)并提供代理。
若要获取代理,您应该在http://127.0.0.1:5555555/api/v1/`
(或其他域,如果位于rever之后se proxy):

```json
{
"model":"proxy"
"method":"get"
"order by":"响应时间,正常运行时间"
}
````


注意:order by使结果按一个或多个字段排序(用逗号分隔)。
您可以跳过它。必需的字段是"model"和"method"。

_检查时间:1509466165,
"错误检查数":0,
"端口":8080,
"协议":"http",
"响应时间":461691,
"正常运行时间":1509460949
}
],
"有更多":false,
"状态":"正常","状态代码":200
}
``````


注:除*协议*,*域*,*端口*,*身份验证数据*,
*检查周期*和*地址*可以为空

如果出现错误,则可以为错误:

``json
{
"错误消息":"应指定"模型",
"状态":"错误",
"状态代码":400
}
````

atus_代码也在http状态代码中重复


使用curl的示例:

`curl-x post http://127.0.0.1:55555/api/v1/-h"内容类型:应用程序/json"--数据"{"模型":"代理","方法":"get"}`


uests.post('http://127.0.0.1:55555/api/v1/',json=json戋data)
如果response.status戋code==200:
response=json.loads(response.text)
对于response中的代理['data']:
result.append(proxy['address')
否则:
请检查此处的错误
pass

返回result
```
使用aiohttp库的示例:

```python
import aiohttp



tsession()作为会话:
async with session.post('http://127.0.0.1:55555/api/v1/',json=json_data)作为响应:
if response.status==200:
response=json.loads(await response.text())
对于响应中的代理['data']:
result.append(proxy['address'])
否则:
请检查此处的错误
通过

如何与api交互?

阅读有关api的更多信息[此处](https://github.com/devalone/proxy懔py/tree/master/docs/api.md)

懔如何贡献?

`todo:编写关于它的指南`

如何测试它?

如果您对代码进行了更改,并希望检查您没有中断任何内容,请转到[此处](https://github.com/devalone/proxy-py/tree/master/docs/tests.md)




1安装主管、nginx和postgresql

`root@server:~$apt安装主管nginx postgresql`

2创建虚拟环境并在其上安装要求


3个副本设置。py示例:

`proxy py@server:~/proxy py$cp-config-examples/settings.py proxy_ py/`

4在postgresql数据库中创建非特权用户
,并在设置中更改数据库身份验证数据。py

``bash
proxy py@server:~/proxy py$vim proxy py/settings.py
`````
``bash
`数据库连接kwargs={
'数据库':'您的postgres数据库se',
"用户":"您的postgres用户",
"密码":"您的postgres密码",
"同时连接数
"最大连接数":20,
}
``````

5复制管理器配置示例,并根据您的情况进行更改

``bash
root@server:~$cp/home/proxy-py/proxy-py/config-examples/proxy-py.supervisor.conf/etc/supervisor/conf.d/proxy-py.conf
root@server:~$vim/etc/supervisor/conf.d/proxy-py.conf
``````

6 copy nginx-config-example,启用它并在需要时更改ig-examples/proxy-py.nginx.conf/etc/nginx/sites-available/proxy-py
root@server:~$ln-s/etc/nginx/sites-available/proxy-py/etc/nginx/sites-enabled/
root@server:~$vim/etc/nginx/sites-available/proxy-py
`````

7 restart supervisor和nginx

``bash
root@server:~$ssupervisorctl重读
root@server:~$supervisorctl update
root@server:~$/etc/init.d/nginx configtest
root@server:~$/etc/init.d/nginx restart
````

8享受在您的服务器上使用它!

这取决于什么?

参见"requirements.txt"



欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Intellij新项目JDK不可用   JAVA静态块执行了多少次?   java通过JCheckBox更改文本字段输入的字体颜色   java在星期几文本字段中输入值   java RichFaces 4.2日历。如何通过JavaScript设置日历的输入字段?   java在javafx中注册鼠标处理程序,但处理程序不是内联的   java将jchararray分配给常量unsigned char   在安卓4.4中注意到java奇怪的圆形浮动动作按钮吗?   java中用于解决8个难题的合适的树类是什么   为什么Java在我的Linux服务器上使用了如此多的内存?   java从多个推荐列表中提取顶级推荐   “426写入网络流失败。”尝试使用Java的URL类连接到FTP站点时收到   java如何在没有Gradle的情况下使用IntelliJ打开项目?   java如何在线程完成后使For循环继续?   java使用定制jackson ObjectMapper定制Spring引导序列化过程   java NativeActivity不会显示在屏幕上   如何使用Java中的EditorConfig在IntelliJ IDEA中关闭rightparen自己的行?   java从字符串中删除字母数字单词   Intellij IDEA 13.1中的maven Java编译错误