0%

Python Challenge (Level 13)

第13关

图片下面提示phone that evil, 似乎要找到evil的number. 点击图片上电话的5键,会跳到一个新网页。但好像有些问题。

This XML file does not appear to have any style information associated with it. The document tree is shown below.

没什么头绪,网上大神提示说要用到xmlrpclib. 根据维基百科上的介绍,XML-RPC是一个远程过程调用的分布式计算协议,通过XML将调用函数封装,并使用HTTP协议作为传送机制。

没用过这些东西,不太了解,只能慢慢尝试。在xmlrpclib的官方手册页面上,我们可以看到ServerProxy Objects的system属性下面有listMethods这个方法

ServerProxy.system.listMethods()
This method returns a list of strings, one for each (non-system) method supported by the XML-RPC server.

可以尝试一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import xmlrpclib

proxy = xmlrpclib.ServerProxy("http://www.pythonchallenge.com/pc/phonebook.php")
proxy.system.listMethods()

#输出如下
'''
['phone',
'system.listMethods',
'system.methodHelp',
'system.methodSignature',
'system.multicall',
'system.getCapabilities']
'''

Bingo, 里面有个phone方法。我们在看看它是干什么的

1
2
In [4]: proxy.system.methodHelp('phone')
Out[4]: 'Returns the phone of a person'

看来,这个phone就是我们要调用的方法,但问题在于参数person是谁呢? 原来,这还要用到上一关的遗留问题。上一个evil3.jpg页面提示no more evils. 但事实上, evil4.jpg里还有一些内容,但是我尝试过用chrome和firefox都显示不出图片。网上有人说用IE可以打开,我没试过。我的解决方法是利用chrome审查元素(Inspect element)的功能,再点击图片连接,会有以下提示信息

Bert is evil! go back!

总算找到你了, Bert

1
2
In [5]: proxy.phone("Bert")
Out[5]: '555-ITALY'

输入555-ITALY,还是不对。其实只用ITALY就可以了,不明白555-作用何在。 http://www.pythonchallenge.com/pc/return/italy.html