代理收集器

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如何在创建小于窗口的PGraphics对象时避免“抗锯齿效应”,然后将其放大到窗口大小?   作用域中的java Antlr check返回语句   java是否在swing中显示所有鼠标悬停事件?   编辑:JAVA(Swing):JAVA(Swing)中是否有任何功能可以像javafx中的webview一样保存Html页面   java GPS文本输入   如何使用Java SE生成多个jasper报告   swing Java ActionListener未拾取按钮   性能为什么java内置序列化比Gson差?   java JAXR使用相同路径创建多个类   java Spring MVC 3.1请求头字符编码问题[UTF8]   java从Hibernate处理的h2数据库的表中删除会损坏该表吗?   Java Mybatis多个更新语句   找不到java JUnitCore类   java扩展SpringWebFlow 2.3