zoukankan      html  css  js  c++  java
  • jQuery火箭图标返回顶部代码

    0x00 简介

    首先说一下我为什么要写这个,我并没有系统的去学过Python,学校也只教了一点C。很久之前自己就有学python,但也只是学了一点点,和没学一样的。

    认真审视一下我的编程技术,真的很菜,必须要专注学习一门语言了。所以在这里就把以前学过的杂乱知识汇总一下,以便查阅。

    备注:以下代码均为Python 3.7

    0x01 socket()函数

    在Python 中,我们经常使用 socket()函数来创建套接字,语法格式如下:

    socket.socket([family[, type[, proto]]])
    

    参数:

    family: 套接字家族可以使AF_UNIX或者AF_INET
    type: 套接字类型可以根据是面向连接的还是非连接分为SOCK_STREAM或SOCK_DGRAM
    protocol: 一般不填默认为0
    

    使用方法举例:固定IP端口探测

    import socket
    s=socket.socket()    #初始化
    try:
        s.connect(('43.225.100.88', 22))
    except:pass
    message='hello word!
    '
    message=message.encode()
    s.send(message)
    banner=s.recv(1024)
    print(banner)
    

    1.1 简单的端口扫描器

    import socket
    import sys
    
    name=sys.argv[0]
    ip=sys.argv[1]
    
    s=socket.socket()
    
    message='hello word!
    '
    message=message.encode()
    
    for port in range(20, 40):
        try:
            print("[+] Attempting to connect to:" + ip + ":" + str(port) + "...")
            s.connect((ip, port))
            s.send(message)
            banner = s.recv(1024)
            if banner:
                print("[-] Port " + str(port) + " is open:", end="")
                print(banner)
        except:pass
    s.close()
    

    1.2 简单的服务扫描器

    import socket
    
    hosts = ['127.0.0.1', '192.168.1.5', '10.0.0.1']
    ports = [22,445,80,443,3389]
    
    s=socket.socket()
    
    messages='hello word
    '
    messages=messages.encode()
    
    for host in hosts:
        for port in ports:
            try:
                print("[+] Connecting to "+host+":"+str(port))
                s.connect((host,port))
                s.send(messages)
                banner=s.recv(1024)
                if  banner:
                    print("[-] Port "+str(port)+" is open:",end="")
                    print(banner)
            except:pass
    s.close()
    

    1.3 C段扫描

    import socket
    import re
    
    host='192.168.83.130/24'
    #自定义要扫描的端口
    ports=['22','1433','3306']
    #设置超时时间2秒
    socket.setdefaulttimeout(2)
    
    def scan(host):
        for port in ports:
            try:
                s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
                s.connect((host,int(port)))
                print("[*]%s port %s is open"%(host,port))
                s.close()
    
                if '21' in port:    #如果21端口开放,尝试爆破FTP弱口令
                    print("[*] Try to crack FTP pass")
                    __import__('ftp_check').check(host)
    
                elif '3306' in port:    #如果3306端口开放,尝试爆破Mysql弱口令
                    print("[*]Try to crack Mysql pass")
                    __import__('mysql_check').check(host)
            except:
                continue
    
    #检查用户输入是否为有效IP地址,如果用户输入中带有/24,则扫描整个C段,否则扫描单个IP
    if '/24' in host:
        print(host)
        for x in range(130,140,1):  #这里并没有真正扫描C段,节约时间,扫描了10个IP
            ip=re.sub(r'.d+/24','.'+str(x),host)   #表示将最后的地址替换成1到255的数字
            print(ip)
            scan(ip)
    else:
        ip=host
        scan(ip)
    

    __import__函数:

    1. 函数功能用于动态的导入模块,主要用于反射或者延迟加载模块。
    2. __import__(module)相当于import module

    0x02 Urllib库

    2.1 urllib.request.urlopen()

    import urllib.request
    
    response=urllib.request.urlopen('https://www.cnblogs.com')  #请求站点获得一个HTTP Response对象
    print(response.read().decode('utf-8'))   #返回网页内容
    print(response.getheader('server')) #返回响应头中的server值
    print(response.getheaders()) #以列表元祖对的形式返回响应头信息
    print(response.fileno()) #返回文件描述符
    print(response.version)  #返回版本信息
    print(response.status)  #返回状态码200,404代表网页未找到
    print(response.debuglevel) #返回调试等级
    print(response.closed)  #返回对象是否关闭布尔值
    print(response.geturl()) #返回检索的URL
    print(response.info()) #返回网页的头信息
    print(response.getcode()) #返回响应的HTTP状态码
    print(response.msg)  #访问成功则返回ok
    print(response.reason) #返回状态信息
    

    2.2 urlopen()

    参数:

    url:网站地址,str类型,也可以是一个request对象
    data:data参数是可选的,内容为字节流编码格式的即bytes类型,如果传递data参数,urlopen将使用Post方式请求
    timeout:用于设置超时时间,单位为秒,如果请求超出了设置时间还未得到响应则抛出异常,支持HTTP,HTTPS,FTP请求
    context:她必须是ssl.SSLContext类型,用来指定SSL设置,此外,cafile和capath这两个参数分别指定CA证书和它的路径,会在https链接时用到。
    

    2.3 urllib.request.Requset()

    参数:

    url:请求的URL,必须传递的参数,其他都是可选参数
    data:上传的数据,必须传bytes字节流类型的数据,如果它是字典,可以先用urllib.parse模块里的urlencode()编码
    headers:它是一个字典,传递的是请求头数据,可以通过它构造请求头,也可以通过调用请求实例的方法add_header()来添加
    origin_req_host:指请求方的host名称或者IP地址
    unverifiable:表示这个请求是否是无法验证的,默认为False,如我们请求一张图片如果没有权限获取图片那它的值就是true
    method:是一个字符串,用来指示请求使用的方法,如:GET,POST,PUT等
    
    from urllib import request,parse
    
    url='http://httpbin.org/post'
    headers={
        'User-Agent':'Mozilla/5.0 (compatible; MSIE 5.5; Windows NT)',
        'Host':'httpbin.org'
    }  #定义头信息
    
    dict={'name':'germey'}
    data = bytes(parse.urlencode(dict),encoding='utf-8')
    #data需要字节类型的参数,使用bytes()函数转换为字节,使用urllib.parse模块里的urlencode()方法来讲参数字典转换为字符串并指定编码
    
    req = request.Request(url=url,data=data,headers=headers,method='POST')
    #req.add_header('User-Agent','Mozilla/5.0 (compatible; MSIE 8.4; Windows NT') #也可以request的方法来添加
    
    response = request.urlopen(req) 
    print(response.read())
    

    2.4 Get/Post获取网页

    from urllib import request,parse
    
    values ={"id":"2"}
    
    params="?"      #这里是GET传参需要的
    for key in values:
        params = (params + key + "=" + values[key] )
    
    url="http://43.247.91.228:84/Less-1/index.php"
    
    headers = {
        # heard部分直接通过chrome部分request header部分
        # 'Accept': 'application/json, text/plain, */*',
        # 'Accept-Encoding': 'gzip, deflate',
        # 'Accept-Language': 'zh-CN,zh;q=0.8',
        # 'Connection': 'keep-alive',
        # 'Content-Type': 'application/x-www-form-urlencoded',
        'Referer': url,
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'
    }
    
    data = bytes(parse.urlencode(values),encoding='utf-8')
    
    #req = request.Request(url=url, headers=headers, data=data)  #POST方法
    req = request.Request(url+params)   #GET方法
    
    response =request.urlopen(req)
    print (response.read().decode('utf-8'))
    

    2.5 捕获http异常

    from urllib import parse,request
    import urllib.error
    
    url='http://43.247.91.228:80/Less-1/index.php'
    
    headers={
        'User-Agent':'Mozilla/5.0 (compatible; MSIE 5.5; Windows NT)',
        'Host':'43.247.91.228:80'
    }  #定义头信息
    
    data={'id':'1'}
    params='?'
    for key in data:
        params = (params + key + "=" + data[key] )
    
    data = bytes(parse.urlencode(data),encoding='utf-8')
    req = urllib.request.Request(url+params)
    
    try:
        respose=urllib.request.urlopen(req)
        print(respose.read().decode('utf-8'))
    except urllib.error.HTTPError as e:
        print(e.code)
        print(e.read().decode("utf-8"))
    

    2.6 设置代理

    import urllib.request
    
    proxy_support = urllib.request.ProxyHandler({"http" : "39.80.118.178:8060"})
    opener = urllib.request.build_opener(proxy_support)
    
    
    urllib.request.install_opener(opener)
    a = urllib.request.urlopen("http://43.247.91.228:84/Less-1/?id=1").read().decode("utf-8")
    
    print(a)
    

    0x03 Requests库

    3.1 简单的请求

    import requests
    r = requests.get('http://43.247.91.228:84/Less-1/?id=1')
    print r.headers
    print r.status_code
    print r.url
    print r.text
    print r.content
    

    3.2 GET方式

    import requests
    payload ={'id':1}
    r = requests.get('http://43.247.91.228:84/Less-1/',params=payload)
    print(r.url)
    print(r.content.decode("utf-8"))
    

    3.3 POST方式

    import requests
    payload ={'id':1}
    r = requests.post('http://43.247.91.228:84/Less-1/',data=payload)
    print(r.url)
    print(r.content.decode("utf-8"))
    

    3.4 设置headers

    import requests
    url='http://43.247.91.228:84/Less-1/?id=1'
    headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0'}
    r= requests.get(url,headers=headers)
    print(r.text)
    

    3.5 用cookie进行登录

    import requests
    raw_cookies="PHPSESSID=d7kkojg82otnh9c53ao1m87pq3; security=low"
    cookies={}
    for line in raw_cookies.split(';'):
        key,value=line.split('=',1)
        cookies[key]=value
    testurl='http://43.247.91.228:81/'
    s=requests.get(testurl,cookies=cookies)
    print(s.text)
    

    3.6 模拟表单登录

    import requests
    data = {'username':'admin','password':'password','Login':'Login'}
    r=requests.post('http://43.247.91.228:81/login.php',data=data);
    print(r.url)
    print(r.content.decode("utf-8"))

    3.7 SSL证书验证问题

    result=requests.get('https://www.v2ex.com', verify=False)
    

    忽略验证SSL证书,不然会报错

    0x04 参考链接

    https://www.cnblogs.com/xiaozi/category/907305.html

  • 相关阅读:
    lxml webdriver 抓取街拍
    python 正则抓取古诗词
    2021 最新版 Spring Boot 速记教程
    hbase 命令查看表大小
    Spring AOP,应该不会有比这更详细的介绍了!
    SpringBoot实战:整合Redis、mybatis,封装RedisUtils工具类等
    API接口的安全设计验证:ticket,签名,时间戳
    5.控制台输出空心菱形
    4.灯泡开关问题
    EXCEL函数
  • 原文地址:https://www.cnblogs.com/-mo-/p/11733217.html
Copyright © 2011-2022 走看看