虽然 Tor 网络可以让你访问网站时显示的 IP 地址是一个不能跟踪到你的 IP 地址,但是你在网站上留给服务器的任何信息都会暴露你的身份 。例如,你登录 Gmail 账号后再用 Google 搜索,那些搜索历史就会和你的身份绑定在一起 。
另外,登录 Tor 的行为也可能让你的匿名状态处于危险之中 。2013 年 12 月,一个哈佛大学本科生想逃避期末考试,就用一个匿名邮箱账号通过 Tor 网络给学校发了一封炸弹威胁信 。结果哈佛大学的 IT 部门通过日志查到,在炸弹威胁信发来的时候,Tor 网络的流量只来自一台机器,而且是一个在校学生注册的 。虽然他们不能确定流量的最初源头(只知道是通过 Tor 发送的),但是作案时间和注册信息证据充分,而且那个时间段内只有一台机器是登录状态,这就有充分理由起诉那个学生了 。
登录 Tor 网络不是一个自动的匿名措施,也不能让你进入互联网上任何区域 。虽然它是一个实用的工具,但是用它的时候一定要谨慎、清醒,并且遵守道德规范 。
在 Python 里使用 Tor,需要先安装运行 Tor,下一节将介绍 。Tor 服务很容易安装和开启 。只要去 Tor 下载页面下载并安装,打开后连接就可以 。不过要注意,当你用 Tor 的时候网速会变慢 。这是因为代理有可能要先在全世界网络上转几次才到目的地!
PySocks
PySocks 是一个非常简单的 Python 代理服务器通信模块,它可以和 Tor 配合使用 。你可以从它的网站(https://pypi.python.org/pypi/PySocks)上下载,或者使用任何第三方模块管理器安装 。
这个模块的用法很简单 。示例代码如下所示 。运行的时候,Tor 服务必须运行在 9150 端口(默认值)上:
网站 http://icanhazip.com/ 会显示客户端连接的网站服务器的 IP 地址,可以用来测试 Tor 是否正常运行 。当程序执行之后,显示的 IP 地址就不是你原来的 IP 了 。
如果你想在 Tor 里面用 Selenium 和 PhantomJS,不需要 PySocks,只要保证 Tor 在运行,然后增加 service_args 参数设置代理端口,让 Selenium 通过端口 9150 连接网站就可以了:
和之前一样,这个程序打印的 IP 地址也不是你原来的,而是你通过 Tor 客户端获得的 IP 地址 。
从网站主机运行
如果你拥有个人网站或公司网站,那么你可能已经知道如何使用外部服务器运行你的网络爬虫了 。即使是一些相对封闭的网络服务器,没有可用的命令行接入方式,你也可以通过网页界面对程序进行控制 。
如果你的网站部署在 linux 服务器上,应该已经运行了 Python 。如果你用的是 windows 服务器,可能就没那么幸运了;你需要仔细检查一下 Python 有没有安装,或者问问网管可不可以安装 。
大多数小型网络主机都会提供一个软件叫 cPanel,提供网站管理和后台服务的基本管理功能和信息 。如果你接入了 cPanel,就可以设置 Python 在服务器上运行——进入“Apache Handlers”然后增加一个 handler(如还没有的话):
这会告诉服务器所有的 Python 脚本都将作为一个 CGI 脚本运行 。CGI 就是通用网关接口(Common Gateway Interface),是可以在服务器上运行的任何程序,会动态地生成内容并显示在网站上 。把 Python 脚本显式地定义成 CGI 脚本,就是给服务器权限去执行 Python 脚本,而不只是在浏览器上显示它们或者让用户下载它们 。
写完 Python 脚本后上传到服务器,然后把文件权限设置成 755,让它可执行 。通过浏览器找到程序上传的位置(也可以写一个爬虫来自动做这件事情)就可以执行程序 。如果你担心在公共领域执行脚本不安全,可以采取以下两种方法 。
把脚本存储在一个隐晦或深层的 URL 里,确保其他 URL 链接都不能接入这个脚本,这样可以避免搜索引擎发现它 。
用密码保护脚本,或者在执行脚本之前用密码或加密令牌进行确认 。
确实,通过这些原本主要是用来显示网站的服务运行 Python 脚本有点儿复杂 。比如,你可能会发现网络爬虫运行时网站的加载速度变慢了 。其实,在整个采集任务完成之前页面都是不会加载的(得等到所有“print”语句的输出内容都显示完) 。这可能会消耗几分钟,几小时,甚至永远也完成不了,要看程序的具体情况了 。虽然它最终一定能完成任务,但是可能你还想看到实时的结果,这样就需要一台真正的服务器了 。
从云主机运行
虽然云计算的花费可能是无底洞,但是写这篇文章时,启动一个计算实例最便宜只要每小时 1.3 美分(亚马逊 EC2 的 micro 实例,其他实例会更贵),Google 最便宜的计算实例是每小时 4.5 美分,最少需要用 10 分钟 。考虑计算能力的规模效应,从大公司买一个小型的云计算实例的费用,和自己买一台专业实体机的费用应该差不多——不过用云计算不需要雇人去维护设备 。
推荐阅读
- 一个Redis命令速查网站,文档清晰易懂
- 壹起航:影响网站关键词排名的因素有哪些?以及如何解决
- 杨利伟上太空前时 杨利伟返回地球后为何不能再上天
- 利用百度地图写个跑腿接单的网站菜鸟教程零基础php为主
- 阿里P7架构师面试:大型网站应用之海量数据、高并发解决方案
- SEO:浅析网站内容最佳更新频率
- Python爬取大量数据时,如何防止IP被封 !这点非常重要
- 如何处理网站改版的问题
- 上门回收网站 免费上门废品回收
- 全国最大的库存回收网站 上门回收网站