Python网络库的使用¶
HTTP的POST, GET方法¶
HTTP常用于向服务端发送数据的方法是:POST和GET模拟表单提交数据,Python库urllib中已经有现成的函数可以直接调用。[1]
利用GET方法发送数据:
import urllib params = urllib.urlencode({'name':'hello', 'passwd':'world'}) html = urllib.urlopen('http://www.example.com/login?%s' % params).read
使用POST方法发送数据:
import urllib params = urllib.urlencode({'name':'hello', 'passwd':'world'}) html = urllib.urlopen('http://www.example.com/login?%s', params).read
上面几乎完成一样,只是调用urllib.urlopen时使用的参数不一样而已。
下面是一个QQ帐号的钓鱼网站,使用循环POST不断向其发送伪造的数据:
http://23.80.192.20/37/qq.com/4/ import random import urllib import time strSample = 'abcdefghijklmnopqrstuvwxyz1234567890_@#$-' for i in range(99999999): ip = "%d.%d.%d.%d" % (random.randint(1,254),random.randint(1,254),random.randint(1,254),random.randint(1,254)) qq = random.randint(1234567, 12345678900) passLen = random.randint(8,16) passwd = random.sample(strSample, passLen) data = { "ip": ip, "qq": qq, "mima": ''.join(passwd) } url = 'http://23.80.192.20/37/%23add7.asp' params = urllib.urlencode(data) html = urllib.urlopen(url, params).read() time.sleep(1)