为网站、在线服务和第三方私有api自动生成api客户端库/sdk。

rapic的Python项目详细描述


什么是Rapic?在

Rapic是一个简单而快速的轻量级工具,用于自动生成用于网站和在线服务的api客户端库和sdk。它还支持 为第三方公共和私有api自动生成客户端库,这对逆向工程师非常有利。在

安装

pip安装rapic

跑步

有两种方法可以使用rapic

  • 使用rapic客户端生成器从逆向工程工具自动生成客户端文件。在
  • 手动创建rapic api客户端文件。在

使用Rapic客户端生成器

作为一个逆向工程,节省时间是至关重要的,这意味着减少了写作时间 反向私有第三方api、网站或其他互联网服务的api客户端。Rapic制造发电 只需执行以下几步即可轻松完成客户端库:

**注** Rapic自动客户端生成器目前只支持BURPSUITE逆向工程工具

  • 步骤1:使用BurpSite时,右键单击目标下的站点地图选项卡下的网站

  • 步骤2:将请求另存为xml文件并取消选中base64编码请求和响应

  • 步骤3:运行“rapic客户端生成器burp<;网站”“网站”“网站”“或”“api”“名称”>;已保存_文件.xml'

  • 步骤4:打开生成的json文件并命名您的请求,然后使用客户端

       from rapic.client import APIClient
       api = ApiClient(client_name='website_or_service_name', request_file=generated_file_from_rapic.json)
       val = api.get_currency() # A request is named get_currency by changing request_<num> to get_currency for a chosen request in json file
    

使用Rapic客户端JSON文件

程序员也可以在使用rapic为他们的网站和服务创建客户端库/sdk时节省时间。简单地说 创建具有结构的json文件

^{pr2}$

注意:请检查test文件夹以了解更多json文件结构和支持的键

请求也可以在发送到服务器之前进行挂接,以进行额外的处理,如http签名签名、时间戳生成等

    ***json_file.json 
    
            {
             "host": "httpbin.org",
              "scheme": "http",
                  "get_user_followers": {
                        "path": "/get_user_followers/{path_id}",
                        "method": "POST"
                    },
             }
     ***client.py
     
        import hashlib
        from rapic.client import APIClient
        from rapic.hook import APIClientHook
        
        class MyApiClient(APIClient):

            @APIClientHook.hook_client_request_data(client='httpbin',
                                                    requests=['get_user_followers'])
            def set_http_signature_on_header(data, **kwargs):
                sign_request = data['url'] + data['method'] + urlencode(data['body_data'])
                m = hashlib.sha256()
                m.update(bytes(sign_request, encoding='utf8'))
                signature = m.hexdigest()
                data['headers']['signature'] = signature
                self.http_signature = signature
                return data
        api = MyApiClient(client_name='website_or_service_name', request_file=json_file.json)
        val = api.get_user_followers(data={user_id : 67888}, url_data={path_id : 'unique_id_get_set_as_path_id'})

**支持的挂钩列表**

  • 在APIClientHook.hook_客户端_准备好的请求()
  • 在APIClientHook.hook_客户端_响应()
  • 在APIClientHook.hook_客户端_请求_数据()
  • 在APIClientHook.hook_客户端_body_数据()
  • 在APIClientHook.hook_客户端\u url()
  • 在APIClientHook.hook_客户端_标头()

LICENSE

麻省理工学院

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java无法将自定义数据类型转换为字符串?   JavaLog4j和appender,这个Log4j定义正确吗?   用于换行的java Android Eclipse拆分   与某个方法关联的java启用/禁用JButton   java小部件列表视图加载视图   java国家/地区名称中的正则表达式   从Java调用Kotlin时,如何获取错误的行号?   java将视图传递给AsyncTask以访问findViewById   java SQL性能:多个绑定还是绑定到一个SQL变量以供重用?   BluetoothAdapter上的安卓 Java NullPointerException。isEnabled()   在clojure中取消引用java方法   JAVA网SocketException:IP_添加_成员身份失败(硬件筛选器不足?)   java从类对象的方法接收nullpointer异常   java使用for循环创建多个对象   java无法使用NTLM身份验证apache camel cxf   java Eclipse不喜欢@Override注释   java Spark SQL模拟红移(Oracle)“系统日期”或“当前日期”