Tag:urllib2

Tag (urllib2)'s result:

用python实现多种http请求

0x00 主要的HTTP请求: 1. GET :从指定的服务器中获取数据。 2. POST :提交数据给指定的服务器处理。 3. HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头。 4. OPTIONS:查询可以执行哪些请求,也可以利用向Web服务器发送’*’的请求来测试服务器的的性能。 5. PUT:向指定资源位置上传其最新内容。 6. MOVE:请求服务器将指定的页面移至另一个网络地址。 7. DELETE:请求服务器删除Request-URI所标识的资源。 8. TRACE:回显服务器收到的请求,主要用于测试或诊断。 9. CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。 10. COPY:请求服务器将指定的页面拷贝至另一个网络地址。 11. LINK:请求服务器建立链接关系。 12. UNLINK:断开链接关系。 13. LOCK(wedav):加锁。 14. UNLOCK(wedav):解锁。 0x01 python实现get,post,put,delete,options,head 请求: 利用了urllib2,requests,httplib库,其实利用其中之一便可以实现。 get请求比较简单,直接利用urllib2。 post请求由于可能需要cookie,header,data等元素,而且要看具体场合,这里就用requests简单post一下。 put请求用urllib2,实现了两遍,一个用opener一个不用opener,区别不大,实现了put文件到服务器的功能。 delete请求也实现了两遍,一个用http的client一个用urllib2,实现了删除服务器文件的功能。 options请求用httplib实现,用来获取信息(主要是allow的请求)。 head请求用httplib实现,用来获取报头信息。   0x02 源码: # -*- coding:utf-8 -*- #Author:LSA #Description:http’s get,post,put,delete,option,head methods #Date:20170804 #Version:v1.0 import urllib2 import urllib import json import httplib import requests import sys from http import client def http_get(url): rsp = urllib2.urlopen(‘http://’+url) return rsp.read() def http_post(url): data = {‘user’:’lsa’,’pwd’:’123456′} rsp = requests.post(‘http://’+url,data=data) return rsp.content def http_put(url): opener = urllib2.build_opener(urllib2.HTTPHandler) upfilepath = raw_input(‘upload file path: http://’+url+’/’) localfilepath = raw_input(‘local file path: ‘) with open(localfilepath) as f: data = f.read() rqt = urllib2.Request(‘http://’+url+’/’+upfilepath,data=data) #rqt.add_header(“Content-Type”, “image/png”) rqt.get_method = lambda:’PUT’ #rsp = urllib2.urlopen(rqt) #return rsp.read() rsp = opener.open(rqt) return rsp.read() def http_put2(url): upfilepath = raw_input(‘upload file path: http://’+url+’/’) localfilepath = raw_input(‘local file path: ‘) with open(localfilepath) as f: data = f.read() rqt = urllib2.Request(‘http://’+url+’/’+upfilepath,data=data) #rqt.add_header(“Content-Type”, “image/png”) rqt.get_method = lambda:’PUT’ rsp = urllib2.urlopen(rqt) return rsp.read() #rsp = opener.open(rqt) def http_delete(url): header……

python批量注册脚本

上次用php写了php+mysql实现超原始的注册登录 这个python脚本基于上次的注册页面,实现批量注册。 相关知识点:1.抓包拿数据 2.urllib和urllib2简单用法 3.简单的爬虫操作 4.文件写入   抓包得到数据: #coding:utf-8 import random,urllib,urllib2 import re,time nums = raw_input(“input the number for reg:”) def reg(num,nums): username = str(random.randrange(100000,9999999)) password = str(random.randrange(1000000,99999999)) url=”http://192.168.43.106/reg_check.php” headers = { ‘User-Agent’: ‘Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36’, ‘Origin’: ‘http://192.168.43.106’, ‘Referer’: ‘http://192.168.43.106/regtest.php’, ‘Content-Type’: ‘application/x-www-form-urlencoded’, } data = {“username”:username, “password”:password, “pwd_again”:password, } data = urllib.urlencode(data) req = urllib2.Request(url,headers=headers,data=data) html = urllib2.urlopen(req).read() reg = u’Success reg!’ reg = re.compile(reg) r = re.findall(reg,html) if r!=[]: print “success reg!—>username=%s,password=%s——(%s/%s)” %(username,password,num+1,nums) f = open(r’E:\python_projects\regusers.txt’,’a’) f.write(“%s—%s(%s)\n” %(username,password,str(num+1))) f.close() for num in range(int(nums)): reg(num,nums) time.sleep(1) 去数据库和网站上看看有没注册成功 成功注册! 这个注册脚本比较简单,后期我有空再优化。

Use python to test url(check_url_speed v1.0)

Environment: win7+python2.7 This program can test url,if the url can open,output normal and use ping to test average speed,else output failed.Then if the url can open but can not ping,I give the url a big number(10000) and output ‘Can not ping  but can open ‘.Finally,I count total urls,normal urls and their ping average speed,also output those urls whick can not ping but can open. #coding:gb2312 #description:check urls and test ping average speed #author:LSA #Date:20170218 import urllib2,time import subprocess import re import optparse #from threading import Thread global count0,count1,count2 count0 = 0 count1 = 0 count2 = 0 global urlave urlave = {} global aves aves = [] global speurls speurls = [] notping = ‘Can not ping but can open!’ def ping_ave_speed(tempUrl): global speurls pingtempUrl = tempUrl.split(‘/’)[2] p = subprocess.Popen([“ping.exe”,pingtempUrl], stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell = True) out = p.stdout.read() reg = re.compile(“平均 = (\d+)ms”, re.IGNORECASE) if not reg.findall(out): speurls.append(tempUrl) return str(10000) else: return str(reg.findall(out)[0]) def test_url(fname): global count0 global count1 global count2 global aves……