本帖最后由 米饭不能用了 于 2014-7-22 09:36 编辑
代理IP用途非常广泛,但是因为其不够稳定所以需要不停的更新,C#源码世界第二季重磅出击,能够自动获取更新代理IP地址并自动校验有效性。 整个项目非常完整,从数据库设计到流程,多线程执行任务。数据库基于SQLite,实现了以下功能: 定时自动从代理IP网站提取代理到数据库中并判断该代理ip的位置。 多线程校验代理IP有效性,自动剔除无效代理。 提供了现成的随机去除一个有效代理IP的方法,并附送一个demo,自动提取一个有效IP并使用这个IP访问网站。
源码采用简单三层架构: Model:模型层,主要放了一个tb_proxy模型,包含代理ip的IP、端口、有效性、地址、最后校验时间 Common:数据交互,主要存放了一个tb_proxy类,包含了对代理IP的增加、删除、修改和随机提取 Library:公用类库,包含一个HttpHelper类、RegHelper正则帮助类、IPHelper根据ip查询位置信息类和一个SQLiteHelper类。 主程序:一个主窗体和一个代理提取测试窗体。主窗体中主要完成代理的提取和多线程校验,测试窗体主要实现随机提取一个有效代理并访问一个ip查询网站,测试代理有效性和真实性。
源码特色: 项目非常简洁明了,代码都有详细的注释说明。 使用了qqwry.dat根据IP获取所在地址。 多线程校验使用了lock以防止冲突,默认开启了50个线程,如果觉得CPU扛不住可以适当减少。 更新数据库的方法也使用了lock,因为太多的并发会导致SQLite出错,这样这样做并不影响更新速度。 日志显示采用了公共的日志列队方法,直接在主项目的任何地方调用都可以。
|