第13关。一张电话的图片,一句话:phone that evil。看到电话,加上之前关卡有些图片有链接,我就在电话按键上都点点试试,果然 5 是个链接,就点了进去。出来一个XML文件,第一句写着:This XML file does not appear to have any style information associated with it. The document tree is shown below. 看来看去,好像真的没什么用。
没辙的时候就去谷歌百度之。于是看到前辈们提到了一个叫 xmlrpc 的东西,再去搜索,复制了一些资料过来:
XML-RPC的全称是XML Remote Procedure Call,即XML远程方法调用。它是一套允许运行在不同操作系统、不同环境的程序实现基于Internet过程调用的规范和一系列的实现。这种远程过程调用使用http作为传输协议,XML作为传送信息的编码格式。Xml-Rpc的定义尽可能的保持了简单,但同时能够传送、处理、返回复杂的数据结构。XML-RPC是工作在Internet上的远程过程调用协议。一个XML-RPC消息就是一个请求体为xml的http-post请求,被调用的方法在服务器端执行并将执行结果以xml格式编码后返回。
这个东西说实话不但没研究过而且没听说过。然后别人的博客里提到了 python 的 xmlrpclib 这个库,刚好还有个 phone 方法,只是不知道那个 evil 到底是谁。
就先试了下 evil:
import xmlrpclib xmlrpc = xmlrpclib.ServerProxy('http://www.pythonchallenge.com/pc/phonebook.php') print xmlrpc.phone('evil')
结果输出是 He is not the evil。
那谁是 evil?上一关中,我们改变 url 时候改到 evil3 时,会出现 no more evils,这是我就停下来了,但是若是继续试试 evil4,再右键源代码,就能看见 Bert is evil! go back! 看来程序猿就应该多尝试啊。把上面的代码中的 evil 改为 Bert,会输出 555-ITALY,把这个当答案输入时找不到页面,试来试去发现答案是 italy,修改后进入下一关:http://www.pythonchallenge.com/pc/return/italy.html