Impossible n’est pas français
webchall的一道题,题目要求分解一个很大的数的质因数。需要6s 内提交 但是,只要我们尝试提交一次之后,就可以发现它会返回一个正确的解。
既然如此,我们只要先提交一次,然后程序读取它返回的正确数字串,再提交就可以了。
在匹配网页信息的时候,python可以使用库beautifulsoup也可以使用正则表达式re模块,这里我两个都用了,便于自己学习。
python脚本如下:
#!/usr/bin/env python
# coding=utf-8
import requests
import urllib2
import lxml
import lxml.html as H
from bs4 import BeautifulSoup
cookie = {
'WC': '9038838-0-DGwGp7VNYefa6o7o'
}
def get_number():
number_url = 'http://www.wechall.net/challenge/impossible/index.php?request=new_number'
#opener = urllib2.build_opener()
#opener.addheaders.append(('Cookie','WC=9038838-0-DGwGp7VNYefa6o7o'))
#f = opener.open(number_url)
#html = f.read()
#html = urllib2.urlopen(number_url).read()
#soup = BeautifulSoup(html)
resp = requests.get(number_url, cookies=cookie)
res =resp.content
soup = BeautifulSoup(res)
div_new = soup.find('div',{"id":"page"})
movie_new = div_new.get_text()
print movie_new
get_number()
def get_answer():
post_data = {
'solution': '',
'cmd': 'Send',
'gwf3_csrf': 'bNZbC2XL'
}
url = 'http://www.wechall.net/challenge/impossible/index.php'
resp = requests.post(url, cookies=cookie, data=post_data)
# print resp.text
d = H.document_fromstring(resp.text)
import re
ar = re.compile(r'"(\d+)"')
text = d.xpath('//div[@class=\'gwf_errors\']/ul/li')[0].text_content()
ans = ar.findall(text)[0]
print ans
post_data = {
'solution': ans,
'cmd': 'Send',
'gwf3_csrf': 'bNZbC2XL'
}
resp = requests.post(url, cookies=cookie, data=post_data)
print resp.text
get_answer()
运行结果为: