diff --git a/CHANGELOG.md b/CHANGELOG.md index d6d9768..4a11f80 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,26 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.1.1] - 2024-10-05 + +### Added + +- Option to export the KID and key based on the service in the server settings. +- Introduced a rule to monitor and manage the usage count for users with free tickets. +- Rule to keep track of updates for users with free tickets. +- Rule to disable the evolution of the license, preventing unwanted advertisements. +- New server specifically designed to bypass trial limitations for DRM services. + +### Changed + +- Enhanced the documentation for better clarity and usability. +- New method for bypassing restrictions using the KID. + +### Fixed + +- Fixed issues in the trial disc patch. +- Resolved issues with the expiration date display for `LIFETIME` tickets. + ## [1.1.0] - 2024-09-29 ### Added @@ -54,7 +74,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Initial release of the project, laying the foundation for future enhancements and features. -[1.1.0]: https://cdm-project.com/hyugogirubato/DVDFabLifetimeActivation -[1.0.2]: https://cdm-project.com/hyugogirubato/DVDFabLifetimeActivation -[1.0.1]: https://cdm-project.com/hyugogirubato/DVDFabLifetimeActivation -[1.0.0]: https://cdm-project.com/hyugogirubato/DVDFabLifetimeActivation +[1.1.1]: https://cdm-project.com/hyugogirubato/DVDFabExtendedLicense/releases/tag/v1.1.1 +[1.1.0]: https://cdm-project.com/hyugogirubato/DVDFabExtendedLicense/releases/tag/v1.1.0 +[1.0.2]: https://cdm-project.com/hyugogirubato/DVDFabExtendedLicense/releases/tag/v1.0.2 +[1.0.1]: https://cdm-project.com/hyugogirubato/DVDFabExtendedLicense/releases/tag/v1.0.1 +[1.0.0]: https://cdm-project.com/hyugogirubato/DVDFabExtendedLicense/releases/tag/v1.0.0 diff --git a/README.md b/README.md index f4191a5..b036a9d 100644 --- a/README.md +++ b/README.md @@ -1,47 +1,49 @@ # DVDFab: Extended License -This tool provides advanced license management and ticketing capabilities for DVDFab software, bypassing limitations and enabling unrestricted access to all available features. +The **DVDFab Extended License** is designed to manage licenses for DVDFab software effectively. It offers advanced features that enable unrestricted access to all DVDFab products while ensuring user privacy and security. ## Features -The DVDFab Extended License tool offers a wide range of features, including: - -- πŸ”’ **Analytics Deactivation:** Disables all data collection and analytics within DVDFab to protect user privacy. -- πŸ”“ **Unlock All Products & Features:** Provides access to every product and feature available within the DVDFab suite without limitations. -- πŸ’» **Cross-Platform Support:** Works across multiple operating systems, including Windows, macOS, and Android (with appropriate configurations). -- πŸ› οΈ **Custom Ticket Generation:** Create fully customized tickets with various licensing options such as "Lifetime," "Subscriber," "Free," or "No Login." -- 🌐 **Mocking Server Support:** Integrates with HTTP interception tools to patch requests and bypass server-side verification. +- πŸ”’ **Analytics Deactivation**: Completely disable data collection and analytics in DVDFab to protect user privacy. +- πŸ”“ **Unlock All Products & Features**: Gain unrestricted access to every product and feature available within the DVDFab suite. +- πŸ’» **Cross-Platform Support**: Compatible with multiple operating systems, including Windows, macOS, and Android. +- πŸ› οΈ **Custom Ticket Generation**: Generate fully customized tickets with various licensing options, including "Lifetime," "Subscriber," "Free," or "No Login." +- 🌐 **Mocking Server Support**: Integrate with HTTP interception tools to modify requests and bypass server-side verification for enhanced functionality. ## Prerequisites -You'll need **HTTP Toolkit (Pro)** to intercept and modify network traffic. Download it from the [HTTP Toolkit Website](https://httptoolkit.com/). +To use this tool, you will need **HTTP Toolkit (Pro)** for intercepting and modifying network traffic. You can download it from the [HTTP Toolkit Website](https://httptoolkit.com/). ## Installation -1. **Clone the Repository** - Open your terminal and run the following commands: - ```bash - git clone https://cdm-project.com/hyugogirubato/DVDFabExtendedLicense.git - cd dvdfabextendedlicense - ``` +### Step 1: Clone the Repository -2. **Install Python Dependencies** - Run the following command to install the required packages: - ```bash - pip install -r requirements.txt - ``` +Open your terminal and run the following commands: + +```bash +git clone https://cdm-project.com/hyugogirubato/DVDFabExtendedLicense +``` + +### Step 2: Install Python Dependencies + +Install the required packages by running: + +```bash +pip install -r requirements.txt +``` ## Usage ### 1. Import Certificates -In the **HTTP Toolkit** settings, you need to import the `.crt` certificates located in the `docs` folder to intercept the network traffic of applications. +Import the `.crt` certificates located in the `docs` folder into the **HTTP Toolkit** settings to enable interception of the application's network traffic. + ### 2. Generate Custom Mock Rules -You will need to generate mock rules to be used in **HTTP Toolkit** for intercepting and modifying network traffic. +Create mock rules to be used with **HTTP Toolkit** for intercepting and modifying network traffic. Run the following command: ```bash @@ -55,20 +57,32 @@ python rules.py --rules template.json --output my_rules.json After generating the rules, import the resulting file into HTTP Toolkit. -### 3. Bypass License Authentication +### 3. Run the Mock Server -After generating the ticket, enable the **Bypass Auth Ticket** rule in HTTP Toolkit. Then, launch the DVDFab software through an intercepted terminal and log in with your credentials. +> [!WARNING] +> This step is required for applications that process DRM content but optional for others. -Once logged in, close the software, enable the **Bypass Auth Ticket** rule, and relaunch the software. +Before launching any DVDFab product with the mock rules, ensure the server is running. + +To run the server: +```bash +python server.py --export +``` + +### 4. Bypass License Authentication + +After generating custom mock rules, import them into **HTTP Toolkit**. Launch the DVDFab software through an intercepted terminal and log in with your credentials. After logging in, close the software and enable the **Bypass Auth Ticket** rule to activate the software. -### 4. Advanced License Management +### 5. Advanced License Management + +> [!NOTE] +> By default, the generated ticket corresponds to a Fab365 ticket. However, this module allows users to generate other ticket formats based on their preferences. This tool provides multiple ways to manage tickets, including logging in, using an existing token, or extracting information from old tickets. - - + #### Command Options for Ticket Management @@ -78,55 +92,44 @@ usage: ticket.py [-h] [--type {SUBSCRIBER,LIFETIME,FREE,NO_LOGIN}] {login,token,ticket,info} ... ``` -**Positional Arguments:** +**Positional Arguments**: + - `login` – Log in using account credentials. - `token` – Use an existing user token. - `ticket` – Use a pre-existing ticket string. - `info` – Extract ticket information from a serialized ticket string. -**Optional Arguments:** -- `--type` – Ticket type, options: `SUBSCRIBER`, `LIFETIME`, `FREE`, `NO_LOGIN`. +**Optional Arguments**: + +- `--type` – Ticket type options: `SUBSCRIBER`, `LIFETIME`, `FREE`, `NO_LOGIN`. - `--version` – Specify software version (default: 6200). -- `--expire` – Number of days until the ticket expires (default: 365 days). +- `--expire` – Specify the number of days until the ticket expires (default: 365 days). #### Example Ticket Generation -1. **Log in and Generate Ticket:** +1. **Log in and Generate a Ticket**: + ```bash python ticket.py login myemail@example.com mypassword --client WINDOWS ``` -2. **Use an Existing Token:** +2. **Use an Existing Token**: + ```bash python ticket.py token "your-32-char-token" ``` -3. **Extract Information from a Ticket:** +3. **Extract Information from a Ticket**: + ```bash python ticket.py info "serialized-ticket-string" ``` -## Advanced Features - -### IP/MAC-Based DRM Restriction Circumvention - -> [!WARNING] -> Avoid using the same account across multiple regions or devices simultaneously, as it could lead to account suspension or banning. - -Some DRM-protected services may block access based on the IP or MAC address of the user. To avoid this, the tool includes a **mocking server** that can spoof the device identity and circumvent such restrictions. - -To run the server: -```bash -python server.py --email "user@example.com" -``` - -At the same time, enable the mock rules in HTTP Toolkit that are associated with DRM services. - ## Common Issues -- **Invalid Token Error:** Ensure that your token is exactly 32 characters long. If it's shorter or longer, regenerate it or verify the token source. -- **Expired License:** If you encounter an expired license error, check the expiration date of your ticket using the `info` command and extend it by generating a new ticket. -- **DRM Block:** If the software blocks your IP/MAC address, ensure you're using the correct DRM circumvention server configuration. +- **Invalid Token Error**: Ensure that your token is exactly 32 characters long. If it's shorter or longer, regenerate it or verify the token source. +- **Expired License**: If you encounter an expired license error, check the expiration date of your ticket using the `info` command and generate a new ticket if necessary. +- **DRM Block**: If the software blocks your IP/MAC address, verify that you’re using the correct DRM circumvention server configuration. ## License @@ -134,4 +137,4 @@ This project is licensed under the MIT License. See the [LICENSE](LICENSE) file ## Disclaimer -This tool is provided for **educational purposes only**. Unauthorized use of software tools to bypass security mechanisms, including licensing, may violate laws and terms of service. Always ensure compliance with software terms of use before attempting any modifications. +This tool is provided for **educational purposes only**. Unauthorized use of software tools to bypass security mechanisms, including licensing, may violate laws and terms of service. Always ensure compliance with software terms of use before attempting any modifications. \ No newline at end of file diff --git a/docs/images/mock_rules.png b/docs/images/mock_rules.png index fd67d79..b40f948 100644 Binary files a/docs/images/mock_rules.png and b/docs/images/mock_rules.png differ diff --git a/docs/images/ticket_info.png b/docs/images/ticket_info.png new file mode 100644 index 0000000..afe309d Binary files /dev/null and b/docs/images/ticket_info.png differ diff --git a/src/requirements.txt b/src/requirements.txt index 89b6747..cd15f90 100644 --- a/src/requirements.txt +++ b/src/requirements.txt @@ -1,3 +1,5 @@ pathlib~=1.0.1 requests~=2.31.0 -requests-toolbelt~=1.0.0 \ No newline at end of file +requests-toolbelt~=1.0.0 +xmltodict~=0.13.0 +flask~=3.0.3 \ No newline at end of file diff --git a/src/server.py b/src/server.py index fe3de3b..2f18c36 100644 --- a/src/server.py +++ b/src/server.py @@ -3,25 +3,29 @@ import json import re import secrets import string + from enum import Enum import requests +import xmltodict + from flask import Flask, Response, jsonify, request from pathlib import Path from requests_toolbelt import MultipartEncoder +# Path to export data EXPORTS = Path(__file__).parent / 'exports.json' def parse_boundary(data: str) -> dict: """ - Parse the multipart form data to extract fields. + Parse multipart form data to extract fields. Parameters: - - data (str): The raw multipart form data as a string. + - data (str): Raw multipart form data as a string. Returns: - - dict: A dictionary with form field names as keys and field values as values. + - dict: A dictionary with form field names as keys and values as values. """ fields = {} # Split parts using the boundary (separator) and process each part @@ -38,11 +42,28 @@ def parse_boundary(data: str) -> dict: class ServiceType(Enum): - STREAM = 'Stream' # StreamFab, PlayerFab + STREAM = 'Stream' # StreamFab MUSIC = 'Music' # MusicFab class Session: + """ + Session class to manage and generate random user-related data (email, MAC, etc.). + + Attributes: + - DOMAINS (list): Predefined list of popular email domains. + - CHARACTERS (str): Character set used for generating random local email parts. + - type (ServiceType): The type of service (Stream or Music). + - max (int): Maximum number of session usages before resetting. + - export (bool): Flag to determine if data should be exported. + - running (dict): Stores information about the current active session. + + Methods: + - email (property): Generates or returns the current session email. + - mac (property): Generates or returns the current session MAC address. + - patch(data: dict): Patches the incoming data with session-specific fields. + """ + DOMAINS = ['hotmail.com', 'gmail.com', 'yahoo.com', 'outlook.com', 'protonmail.com', 'yandex.com'] CHARACTERS = string.ascii_lowercase + string.digits + '.-' @@ -56,6 +77,12 @@ class Session: @property def email(self) -> str: + """ + Generate a random email address if not already set. + + Returns: + - str: Randomly generated or pre-set email address. + """ length = secrets.choice(range(5, 15)) return self._email or '{local}@{domain}'.format( local=''.join(secrets.choice(self.CHARACTERS) for _ in range(length)), @@ -64,10 +91,19 @@ class Session: @email.setter def email(self, value: str) -> None: + """ + Set the email manually if provided. + """ self._email = value @property def mac(self) -> str: + """ + Generate a random MAC address if not already set. + + Returns: + - str: Randomly generated or pre-set MAC address. + """ return self._mac or ':'.join([ '-'.join(f'{b:02x}' for b in secrets.token_bytes(6)), '-'.join(f'{b:02x}' for b in secrets.token_bytes(6)) @@ -75,10 +111,25 @@ class Session: @mac.setter def mac(self, value: str) -> None: + """ + Set the MAC address manually if provided. + """ self._mac = value def patch(self, data: dict) -> dict: - kid = data['KD'] + """ + Patch the data dictionary with dynamic fields (email, mac, etc.). + + Parameters: + - data (dict): Incoming data dictionary to be patched. + + Returns: + - dict: Modified data dictionary with session-specific fields. + """ + # Use kid or current running session's kid + kid = data.get('KD', self.running.get('kid')) + + # Initialize new session if no session exists or conditions change if not self.running or self.running.get('kid') != kid or self.running.get('count') >= self.max: self.running = { 'kid': kid, @@ -87,50 +138,76 @@ class Session: 'count': 0 } + # Update necessary fields for key, value in data.items(): - if key in ('MD'): + if key in ('MD', 'EM'): data[key] = self.running['mac'] - elif key in ('EM'): - data[key] = self.running['email'] + elif key in ('PW', 'TK'): + data[key] = '' # Empty password/token elif key in ('RT'): data[key] = 'trial' + elif key in ('DS', 'IS', 'BI'): + # Random token for certain fields + data[key] = secrets.token_hex(16) elif key in ('PS'): data[key] = self.type.value - elif key in ('PW', 'TK'): - data[key] = secrets.token_hex(16) + + # Generate an invalid KID + data['KD'] = secrets.token_hex(16) elif key == 'DT' and self.export: + # Export data if 'DT' key and export is enabled exports = json.loads(EXPORTS.read_bytes()) if EXPORTS.is_file() else {} - exports[data['PD']] = value + exports.setdefault(data['TB'], {}).setdefault(data['PD'], value) EXPORTS.write_text(json.dumps(exports, indent=2)) self.running['count'] += 1 return data +# Initialize session and Flask app session = Session() app = Flask(__name__) -app.config.update(ALLOWED_HOSTS=['127.0.0.1', 'localhost']) @app.route('/', defaults={'path': ''}) -@app.route('/', methods=['POST', 'GET']) +@app.route('/', methods=['POST']) def catch_all(path: str) -> Response: + """ + Catch-all route to proxy requests. + Parses the multipart form data, modifies it, and forwards the request. + + Parameters: + - path (str): The request path for matching. + + Returns: + - Response: A Flask Response object containing the forwarded request's response. + """ global session + # Remove unnecessary headers headers = dict(request.headers) - del headers['Connection'] - del headers['Content-Length'] + headers.pop('Connection', None) + headers.pop('Content-Length', None) + # Get raw body data body = request.get_data() - boundary = parse_boundary(body.decode('utf-8')) - patched = session.patch(boundary) # TODO: fix patch - # patched = boundary - mp_encoder = MultipartEncoder(patched) + # Extract boundary from content-type + content_type = headers.get('Content-Type', '') + boundary_match = re.search(r'boundary=(.*)', content_type) + if not boundary_match: + return Response(status=400, response='Invalid or missing boundary') + + # Parse and patch the multipart form data + boundary_data = parse_boundary(body.decode('utf-8')) + patched = session.patch(boundary_data) + + # Re-encode patched data using MultipartEncoder + mp_encoder = MultipartEncoder(fields=patched) headers['Content-Type'] = mp_encoder.content_type body = mp_encoder.read() - # Forward the request to the same URL over HTTPS + # Forward the request to the target URL over HTTPS r = requests.request( method=request.method, url=request.url.replace('http://', 'https://'), @@ -141,11 +218,41 @@ def catch_all(path: str) -> Response: ) # Return the response from the forwarded request - return Response(status=r.status_code, response=r.content) + return Response(status=r.status_code, response=r.content, headers={'Content-Type': 'text/html; charset=UTF-8'}) -@app.route('/session', methods=['GET']) +@app.route('/auth/trial_disc.php', methods=['POST']) +def trial_disc() -> Response: + """ + Trial endpoint to provide disc information with MacID. + + Returns: + - Response: XML response containing trial disc information with the generated MacID. + """ + global session + + params = request.args.to_dict() + data = { + 'TrialOpenDiscInfo': { + '@Client': params.get('Client', 49), + '@MacID': params.get('MacID', session.mac) + } + } + + content = xmltodict.unparse(data, pretty=False, full_document=True).encode('utf-8') + return Response(status=200, response=content, headers={'Content-Type': 'text/html'}) + + +@app.route('/debug', methods=['GET']) def session_info() -> Response: + """ + Debug endpoint to display session information (email, MAC, etc.). + + Returns: + - Response: JSON response with current session data. + """ + global session + return jsonify({ 'email': session.email, 'mac': session.mac, @@ -155,13 +262,13 @@ def session_info() -> Response: # Add the catch_all route to Flask - app.add_url_rule('/', 'catch_all', catch_all, defaults={'path': ''}) app.add_url_rule('/', 'catch_all', catch_all, defaults={'path': ''}) +app.config.update(ALLOWED_HOSTS=['127.0.0.1', 'localhost']) if __name__ == '__main__': # Set up argument parsing - parser = argparse.ArgumentParser(description='DVDFab-Server: ') + parser = argparse.ArgumentParser(description='DVDFab-Server: A server for proxying requests and managing sessions for DVDFab-related services.') # Command-line arguments parser.add_argument('--email', type=str, metavar='', help='Email address (default: random)') @@ -173,17 +280,12 @@ if __name__ == '__main__': # Parse the arguments args = parser.parse_args() - try: - # Set session values from the command-line arguments - session.email = args.email - session.mac = args.mac - session.type = ServiceType[args.type] - session.max = args.max - session.export = args.export + # Set session parameters based on arguments + session.email = args.email + session.mac = args.mac + session.type = ServiceType[args.type] + session.max = args.max + session.export = args.export - # Start the Flask app - app.run(host='127.0.0.1', port=5000, debug=True) - except KeyboardInterrupt: - pass - except Exception as e: - print(f'[!] {e}') + # Start the Flask app + app.run(host='127.0.0.1', port=5000, debug=False) diff --git a/src/template.json b/src/template.json index d61dc92..6d6c130 100644 --- a/src/template.json +++ b/src/template.json @@ -1,1758 +1,2127 @@ { - "id": "root", - "title": "HTTP Toolkit Rules", - "isRoot": true, - "items": [ + "id": "root", + "title": "HTTP Toolkit Rules", + "isRoot": true, + "items": [ + { + "id": "dvdfab-group", + "title": "DVDFab", + "items": [ { - "id": "dvdfab-group", - "title": "DVDFab", - "items": [ - { - "id": "09e78065-5c8d-41d2-8efe-16a9ef11c179", - "type": "http", - "title": "Bypass Trial Info", - "activated": true, - "matchers": [ - { - "method": 1, - "type": "method", - "uiType": "POST" - }, - { - "type": "regex-path", - "regexSource": "https?:\\/\\/.+\\/auth\\/trial_disc.php", - "regexFlags": "" - }, - { - "type": "query", - "queryObject": { - "Mode": "Download" - } - } - ], - "handler": { - "type": "close-connection" - }, - "completionChecker": { - "type": "always" - } - }, - { - "id": "6955a688-8bc2-4f63-92cd-141f9debb97a", - "type": "http", - "title": "Bypass Auth Ticket", - "activated": false, - "matchers": [ - { - "method": 1, - "type": "method", - "uiType": "POST" - }, - { - "type": "regex-path", - "regexSource": "https?:\\/\\/.+\\/auth\\/v5\\/", - "regexFlags": "" - } - ], - "handler": { - "data": { - "type": "Buffer", - "data": [ - 49, - 124, - 86, - 80, - 58, - 45, - 49, - 124, - 86, - 80, - 84, - 58, - 48, - 124, - 79, - 86, - 58, - 54, - 50, - 48, - 48, - 124, - 66, - 86, - 58, - 124, - 83, - 85, - 66, - 58, - 124, - 85, - 84, - 58, - 48, - 124, - 85, - 76, - 58, - 49, - 124, - 77, - 76, - 58, - 48, - 45, - 54, - 45, - 49, - 124, - 84, - 73, - 58, - 49, - 55, - 50, - 55, - 55, - 49, - 51, - 54, - 57, - 54, - 124, - 84, - 77, - 58, - 48 - ] - }, - "status": 200, - "statusMessage": "OK", - "headers": { - "content-type": "text/html" - }, - "type": "simple" - }, - "completionChecker": { - "type": "always" - } - }, - { - "id": "de6f5f95-3b42-45a0-b255-a70a5e8d8aed", - "title": "Download", - "items": [ - { - "id": "322c8f6f-b438-4883-944e-9a77ce54ddbe", - "type": "http", - "title": "Disable download count", - "activated": true, - "matchers": [ - { - "method": 1, - "type": "method", - "uiType": "POST" - }, - { - "type": "regex-path", - "regexSource": "https?:\\/\\/.+\\/ak\\/dl_re\\/", - "regexFlags": "" - } - ], - "handler": { - "data": { - "type": "Buffer", - "data": [ - 123, - 34, - 82, - 34, - 58, - 34, - 48, - 34, - 44, - 34, - 110, - 117, - 109, - 34, - 58, - 34, - 49, - 48, - 48, - 34, - 44, - 34, - 99, - 111, - 117, - 110, - 116, - 34, - 58, - 34, - 49, - 48, - 48, - 34, - 125 - ] - }, - "status": 200, - "statusMessage": "OK", - "headers": { - "content-type": "text/html; charset=UTF-8" - }, - "type": "simple" - }, - "completionChecker": { - "type": "always" - } - }, - { - "id": "7beca383-bfb9-41d6-9a44-e42bf4d4e970", - "type": "http", - "title": "Disable user check", - "activated": true, - "matchers": [ - { - "method": 1, - "type": "method", - "uiType": "POST" - }, - { - "type": "regex-path", - "regexSource": "https?:\\/\\/.+\\/ak\\/v2\\/st\\/", - "regexFlags": "" - } - ], - "handler": { - "data": { - "type": "Buffer", - "data": [ - 123, - 34, - 82, - 34, - 58, - 34, - 48, - 34, - 125 - ] - }, - "status": 200, - "statusMessage": "OK", - "headers": { - "content-type": "text/html; charset=UTF-8" - }, - "type": "simple" - }, - "completionChecker": { - "type": "always" - } - }, - { - "id": "0d915541-72f2-4580-9f32-e2b67b778016", - "type": "http", - "title": "Disable download request", - "activated": true, - "matchers": [ - { - "method": 1, - "type": "method", - "uiType": "POST" - }, - { - "type": "regex-path", - "regexSource": "https?:\\/\\/.+\\/ak\\/re\\/downloadex\\/", - "regexFlags": "" - } - ], - "handler": { - "data": { - "type": "Buffer", - "data": [ - 123, - 34, - 82, - 34, - 58, - 34, - 48, - 34, - 44, - 34, - 114, - 101, - 116, - 34, - 58, - 34, - 115, - 117, - 99, - 99, - 101, - 115, - 115, - 34, - 125 - ] - }, - "status": 200, - "statusMessage": "OK", - "headers": { - "content-type": "text/html; charset=UTF-8" - }, - "type": "simple" - }, - "completionChecker": { - "type": "always" - } - }, - { - "id": "4b29bae4-71dc-47ad-933a-cee30e0423cd", - "type": "http", - "title": "Disable key check", - "activated": true, - "matchers": [ - { - "method": 1, - "type": "method", - "uiType": "POST" - }, - { - "type": "regex-path", - "regexSource": "https?:\\/\\/.+\\/ak\\/re\\/keycheck\\/", - "regexFlags": "" - } - ], - "handler": { - "data": { - "type": "Buffer", - "data": [ - 123, - 34, - 82, - 34, - 58, - 34, - 48, - 34, - 44, - 34, - 114, - 101, - 116, - 34, - 58, - 34, - 115, - 117, - 99, - 99, - 101, - 115, - 115, - 34, - 125 - ] - }, - "status": 200, - "statusMessage": "OK", - "headers": { - "content-type": "text/html; charset=UTF-8" - }, - "type": "simple" - }, - "completionChecker": { - "type": "always" - } - } - ] - }, - { - "id": "fcfe3cb6-99cb-4bbe-b74f-584c3be579bd", - "title": "Client", - "items": [ - { - "id": "32287ccf-fca7-48b1-9dce-f0ece3a33802", - "type": "http", - "title": "Disable license upgrade", - "activated": true, - "matchers": [ - { - "method": 1, - "type": "method", - "uiType": "POST" - }, - { - "type": "regex-path", - "regexSource": "https?:\\/\\/.+\\/products\\/client_upgrade_license_v[0-9]", - "regexFlags": "" - } - ], - "handler": { - "type": "close-connection" - }, - "completionChecker": { - "type": "always" - } - }, - { - "id": "4c0ee360-3e42-4ca4-bde9-c34a52f9ad5a", - "type": "http", - "title": "Disable update", - "activated": false, - "matchers": [ - { - "method": 1, - "type": "method", - "uiType": "POST" - }, - { - "type": "regex-path", - "regexSource": "https?:\\/\\/.+\\/update\\/get_latest_version.php", - "regexFlags": "" - } - ], - "handler": { - "type": "close-connection" - }, - "completionChecker": { - "type": "always" - } - }, - { - "id": "399eabc1-a550-41d5-99f1-c296787f7293", - "type": "http", - "title": "Disable license info", - "activated": true, - "matchers": [ - { - "method": 1, - "type": "method", - "uiType": "POST" - }, - { - "type": "regex-path", - "regexSource": "https?:\\/\\/.+\\/products\\/client_get_license_info", - "regexFlags": "" - } - ], - "handler": { - "data": { - "type": "Buffer", - "data": [ - 123, - 34, - 99, - 115, - 99, - 111, - 100, - 101, - 34, - 58, - 48, - 44, - 34, - 100, - 97, - 116, - 97, - 34, - 58, - 123, - 34, - 112, - 114, - 111, - 100, - 117, - 99, - 116, - 95, - 105, - 110, - 102, - 111, - 34, - 58, - 91, - 93, - 44, - 34, - 118, - 101, - 114, - 115, - 105, - 111, - 110, - 34, - 58, - 49, - 125, - 44, - 34, - 116, - 105, - 109, - 101, - 95, - 110, - 111, - 119, - 34, - 58, - 48, - 125 - ] - }, - "status": 200, - "statusMessage": "OK", - "headers": { - "content-type": "application/json" - }, - "type": "simple" - }, - "completionChecker": { - "type": "always" - } - }, - { - "id": "b856d1bb-ed1a-4f03-9171-1ba9bb42ed44", - "type": "http", - "title": "Disable reports", - "activated": true, - "matchers": [ - { - "method": 1, - "type": "method", - "uiType": "POST" - }, - { - "type": "regex-path", - "regexSource": "https?:\\/\\/.+\\/report\\/service\\/", - "regexFlags": "" - } - ], - "handler": { - "data": { - "type": "Buffer", - "data": [ - 79, - 75 - ] - }, - "status": 200, - "statusMessage": "OK", - "headers": { - "content-type": "text/html" - }, - "type": "simple" - }, - "completionChecker": { - "type": "always" - } - }, - { - "id": "9cf0ca01-74a7-4c74-9e30-94285404056d", - "type": "http", - "title": "Disable DRM control", - "activated": true, - "matchers": [ - { - "method": 1, - "type": "method", - "uiType": "POST" - }, - { - "type": "regex-path", - "regexSource": "https?:\\/\\/.+\\/api\\/drm_control\\/", - "regexFlags": "" - } - ], - "handler": { - "data": { - "type": "Buffer", - "data": [ - 123, - 34, - 114, - 101, - 115, - 117, - 108, - 116, - 34, - 58, - 123, - 34, - 114, - 101, - 115, - 34, - 58, - 34, - 116, - 114, - 117, - 101, - 34, - 44, - 34, - 118, - 101, - 114, - 115, - 105, - 111, - 110, - 34, - 58, - 48, - 44, - 34, - 115, - 105, - 116, - 101, - 115, - 34, - 58, - 91, - 93, - 125, - 125 - ] - }, - "status": 200, - "statusMessage": "OK", - "headers": { - "content-type": "text/html; charset=UTF-8" - }, - "type": "simple" - }, - "completionChecker": { - "type": "always" - } - }, - { - "id": "d9b517bc-13b6-4f8f-8ee0-1d7862fa8df8", - "type": "http", - "title": "Disable info control", - "activated": true, - "matchers": [ - { - "method": 1, - "type": "method", - "uiType": "POST" - }, - { - "type": "regex-path", - "regexSource": "https?:\\/\\/.+\\/api\\/info_control\\/", - "regexFlags": "" - } - ], - "handler": { - "data": { - "type": "Buffer", - "data": [ - 123, - 34, - 114, - 101, - 115, - 117, - 108, - 116, - 34, - 58, - 123, - 34, - 114, - 101, - 115, - 34, - 58, - 34, - 116, - 114, - 117, - 101, - 34, - 44, - 34, - 109, - 115, - 103, - 34, - 58, - 34, - 111, - 107, - 34, - 44, - 34, - 100, - 97, - 116, - 97, - 34, - 58, - 91, - 123, - 34, - 112, - 111, - 115, - 95, - 105, - 100, - 34, - 58, - 49, - 44, - 34, - 105, - 100, - 34, - 58, - 45, - 49, - 44, - 34, - 101, - 110, - 97, - 98, - 108, - 101, - 34, - 58, - 102, - 97, - 108, - 115, - 101, - 44, - 34, - 112, - 111, - 115, - 34, - 58, - 34, - 65, - 100, - 32, - 119, - 104, - 101, - 110, - 32, - 97, - 112, - 112, - 32, - 115, - 116, - 97, - 114, - 116, - 34, - 44, - 34, - 114, - 101, - 99, - 111, - 109, - 109, - 101, - 110, - 100, - 95, - 100, - 97, - 116, - 97, - 34, - 58, - 34, - 34, - 125, - 44, - 123, - 34, - 112, - 111, - 115, - 95, - 105, - 100, - 34, - 58, - 50, - 44, - 34, - 105, - 100, - 34, - 58, - 53, - 48, - 48, - 50, - 44, - 34, - 101, - 110, - 97, - 98, - 108, - 101, - 34, - 58, - 102, - 97, - 108, - 115, - 101, - 44, - 34, - 112, - 111, - 115, - 34, - 58, - 34, - 78, - 101, - 119, - 32, - 112, - 114, - 111, - 100, - 117, - 99, - 116, - 32, - 97, - 100, - 32, - 119, - 104, - 101, - 110, - 32, - 97, - 112, - 112, - 32, - 115, - 116, - 97, - 114, - 116, - 34, - 44, - 34, - 114, - 101, - 99, - 111, - 109, - 109, - 101, - 110, - 100, - 95, - 100, - 97, - 116, - 97, - 34, - 58, - 34, - 34, - 125, - 44, - 123, - 34, - 112, - 111, - 115, - 95, - 105, - 100, - 34, - 58, - 53, - 44, - 34, - 105, - 100, - 34, - 58, - 53, - 48, - 48, - 48, - 44, - 34, - 101, - 110, - 97, - 98, - 108, - 101, - 34, - 58, - 102, - 97, - 108, - 115, - 101, - 44, - 34, - 112, - 111, - 115, - 34, - 58, - 34, - 65, - 100, - 32, - 97, - 116, - 32, - 98, - 111, - 116, - 116, - 111, - 109, - 32, - 111, - 102, - 32, - 117, - 105, - 34, - 44, - 34, - 114, - 101, - 99, - 111, - 109, - 109, - 101, - 110, - 100, - 95, - 100, - 97, - 116, - 97, - 34, - 58, - 34, - 34, - 125, - 44, - 123, - 34, - 112, - 111, - 115, - 95, - 105, - 100, - 34, - 58, - 54, - 44, - 34, - 105, - 100, - 34, - 58, - 45, - 49, - 44, - 34, - 101, - 110, - 97, - 98, - 108, - 101, - 34, - 58, - 102, - 97, - 108, - 115, - 101, - 44, - 34, - 112, - 111, - 115, - 34, - 58, - 34, - 65, - 100, - 32, - 97, - 116, - 32, - 108, - 101, - 102, - 116, - 32, - 98, - 111, - 116, - 116, - 111, - 109, - 32, - 99, - 111, - 114, - 110, - 101, - 114, - 34, - 44, - 34, - 114, - 101, - 99, - 111, - 109, - 109, - 101, - 110, - 100, - 95, - 100, - 97, - 116, - 97, - 34, - 58, - 34, - 34, - 125, - 44, - 123, - 34, - 112, - 111, - 115, - 95, - 105, - 100, - 34, - 58, - 50, - 48, - 48, - 48, - 44, - 34, - 105, - 100, - 34, - 58, - 49, - 49, - 48, - 50, - 44, - 34, - 101, - 110, - 97, - 98, - 108, - 101, - 34, - 58, - 102, - 97, - 108, - 115, - 101, - 44, - 34, - 112, - 111, - 115, - 34, - 58, - 34, - 65, - 100, - 32, - 105, - 110, - 32, - 108, - 105, - 118, - 101, - 117, - 112, - 100, - 97, - 116, - 101, - 32, - 100, - 105, - 97, - 108, - 111, - 103, - 34, - 44, - 34, - 114, - 101, - 99, - 111, - 109, - 109, - 101, - 110, - 100, - 95, - 100, - 97, - 116, - 97, - 34, - 58, - 34, - 34, - 125, - 44, - 123, - 34, - 112, - 111, - 115, - 95, - 105, - 100, - 34, - 58, - 56, - 44, - 34, - 105, - 100, - 34, - 58, - 53, - 49, - 48, - 49, - 44, - 34, - 101, - 110, - 97, - 98, - 108, - 101, - 34, - 58, - 102, - 97, - 108, - 115, - 101, - 44, - 34, - 112, - 111, - 115, - 34, - 58, - 34, - 65, - 100, - 32, - 97, - 116, - 32, - 108, - 105, - 99, - 101, - 110, - 115, - 101, - 32, - 105, - 110, - 102, - 111, - 34, - 44, - 34, - 114, - 101, - 99, - 111, - 109, - 109, - 101, - 110, - 100, - 95, - 100, - 97, - 116, - 97, - 34, - 58, - 34, - 34, - 125, - 93, - 125, - 125 - ] - }, - "status": 200, - "statusMessage": "OK", - "headers": { - "content-type": "text/html; charset=UTF-8" - }, - "type": "simple" - }, - "completionChecker": { - "type": "always" - } - }, - { - "id": "4911f050-9697-452e-a163-7007d4926ba8", - "type": "http", - "title": "Disable client command", - "activated": true, - "matchers": [ - { - "type": "wildcard" - }, - { - "type": "regex-path", - "regexSource": "https?:\\/\\/.+\\/client\\/command", - "regexFlags": "" - } - ], - "handler": { - "type": "close-connection" - }, - "completionChecker": { - "type": "always" - } - }, - { - "id": "8ea23e97-08f5-4ae1-8a2b-4695c6dd664c", - "type": "http", - "title": "Disable recommend", - "activated": true, - "matchers": [ - { - "method": 1, - "type": "method", - "uiType": "POST" - }, - { - "type": "regex-path", - "regexSource": "https?:\\/\\/.+\\/recommend\\/", - "regexFlags": "" - } - ], - "handler": { - "type": "close-connection" - }, - "completionChecker": { - "type": "always" - } - }, - { - "id": "49cbe5da-6fe5-4f31-b0b4-2fcfe50f8021", - "type": "http", - "title": "Disable recommend client", - "activated": true, - "matchers": [ - { - "method": 1, - "type": "method", - "uiType": "POST" - }, - { - "type": "regex-path", - "regexSource": "https?:\\/\\/.+\\/recommend\\/client\\/best\\/list", - "regexFlags": "" - } - ], - "handler": { - "data": { - "type": "Buffer", - "data": [ - 123, - 34, - 99, - 115, - 99, - 111, - 100, - 101, - 34, - 58, - 50, - 48, - 48, - 44, - 34, - 118, - 101, - 114, - 115, - 105, - 111, - 110, - 34, - 58, - 34, - 49, - 46, - 48, - 46, - 48, - 34, - 44, - 34, - 100, - 97, - 116, - 97, - 34, - 58, - 91, - 93, - 125 - ] - }, - "status": 200, - "headers": { - "content-type": "application/json" - }, - "type": "simple" - }, - "completionChecker": { - "type": "always" - } - }, - { - "id": "4a0e5f52-2a9d-497e-a61d-8836e78f2781", - "type": "http", - "title": "Disable recommend update", - "activated": true, - "matchers": [ - { - "method": 1, - "type": "method", - "uiType": "POST" - }, - { - "type": "regex-path", - "regexSource": "https?:\\/\\/.+\\/update\\/recommend.php", - "regexFlags": "" - } - ], - "handler": { - "data": { - "type": "Buffer", - "data": [ - 123, - 34, - 99, - 115, - 99, - 111, - 100, - 101, - 34, - 58, - 48, - 44, - 34, - 118, - 101, - 114, - 115, - 105, - 111, - 110, - 34, - 58, - 49, - 44, - 34, - 101, - 110, - 97, - 98, - 108, - 101, - 34, - 58, - 102, - 97, - 108, - 115, - 101, - 44, - 34, - 100, - 97, - 116, - 97, - 34, - 58, - 91, - 93, - 125 - ] - }, - "status": 200, - "headers": { - "content-type": "text/html" - }, - "type": "simple" - }, - "completionChecker": { - "type": "always" - } - }, - { - "id": "7845742b-c36e-446d-862e-f27ba70eca71", - "type": "http", - "title": "Disable analytics", - "activated": true, - "matchers": [ - { - "method": 1, - "type": "method", - "uiType": "POST" - }, - { - "type": "regex-path", - "regexSource": "https?:\\/\\/.+\\/api\\/common_json_post\\/", - "regexFlags": "" - } - ], - "handler": { - "data": { - "type": "Buffer", - "data": [ - 123, - 34, - 114, - 101, - 115, - 117, - 108, - 116, - 34, - 58, - 123, - 34, - 114, - 101, - 115, - 34, - 58, - 116, - 114, - 117, - 101, - 44, - 34, - 109, - 115, - 103, - 34, - 58, - 34, - 78, - 79, - 95, - 69, - 82, - 82, - 79, - 82, - 34, - 125, - 125 - ] - }, - "status": 200, - "statusMessage": "OK", - "headers": { - "content-type": "text/html; charset=UTF-8" - }, - "type": "simple" - }, - "completionChecker": { - "type": "always" - } - } - ] - }, - { - "id": "327a5857-2d1f-4359-a287-2cbe9750fc48", - "title": "DRM", - "items": [ - { - "id": "e475ed5b-262c-45c9-9138-dbdc7618985d", - "type": "http", - "activated": false, - "matchers": [ - { - "method": 1, - "type": "method", - "uiType": "POST" - }, - { - "type": "regex-path", - "regexSource": "https?:\\/\\/.+\\/ak\\/uc_v[0-9]\\/", - "regexFlags": "" - } - ], - "completionChecker": { - "type": "always" - }, - "handler": { - "uiType": "forward-to-host", - "type": "passthrough", - "forwarding": { - "targetHost": "http://127.0.0.1:5000", - "updateHostHeader": false - } - }, - "title": "Cached Key" - }, - { - "id": "02e8e25b-9c0e-4bef-bc2f-da66f9130da8", - "type": "http", - "activated": false, - "matchers": [ - { - "method": 1, - "type": "method", - "uiType": "POST" - }, - { - "type": "regex-path", - "regexSource": "https?:\\/\\/.+\\/c1\\/", - "regexFlags": "" - } - ], - "completionChecker": { - "type": "always" - }, - "handler": { - "uiType": "forward-to-host", - "type": "passthrough", - "forwarding": { - "targetHost": "http://127.0.0.1:5000", - "updateHostHeader": false - } - }, - "title": "Get Challenge" - }, - { - "id": "e584a281-f88d-41c1-a584-1e10907b870a", - "type": "http", - "activated": false, - "matchers": [ - { - "method": 1, - "type": "method", - "uiType": "POST" - }, - { - "type": "regex-path", - "regexSource": "https?:\\/\\/.+\\/c2\\/", - "regexFlags": "" - } - ], - "completionChecker": { - "type": "always" - }, - "handler": { - "uiType": "forward-to-host", - "type": "passthrough", - "forwarding": { - "targetHost": "http://127.0.0.1:5000", - "updateHostHeader": false - } - }, - "title": "Parse License" - } - ] - } - ] + "id": "6955a688-8bc2-4f63-92cd-141f9debb97a", + "type": "http", + "title": "Bypass auth ticket", + "activated": false, + "matchers": [ + { + "method": 1, + "type": "method", + "uiType": "POST" + }, + { + "type": "regex-path", + "regexSource": "https?:\\/\\/.+\\/auth\\/v5\\/", + "regexFlags": "" + } + ], + "handler": { + "data": { + "type": "Buffer", + "data": [ + 49, + 124, + 86, + 80, + 58, + 45, + 49, + 124, + 86, + 80, + 84, + 58, + 48, + 124, + 79, + 86, + 58, + 54, + 50, + 48, + 48, + 124, + 66, + 86, + 58, + 124, + 83, + 85, + 66, + 58, + 124, + 85, + 84, + 58, + 48, + 124, + 85, + 76, + 58, + 49, + 124, + 77, + 76, + 58, + 48, + 45, + 54, + 45, + 49, + 124, + 84, + 73, + 58, + 49, + 55, + 50, + 56, + 49, + 49, + 57, + 56, + 51, + 52, + 124, + 84, + 77, + 58, + 48 + ] + }, + "status": 200, + "statusMessage": "OK", + "headers": { + "content-type": "text/html" + }, + "type": "simple" + }, + "completionChecker": { + "type": "always" + } }, { - "id": "default-group", - "title": "Default rules", - "items": [ + "id": "de6f5f95-3b42-45a0-b255-a70a5e8d8aed", + "title": "Download", + "items": [ + { + "id": "3bfadd91-a222-49fc-9981-37116d5f1cef", + "type": "http", + "activated": true, + "matchers": [ { - "id": "default-android-certificate", - "type": "http", - "activated": true, - "priority": 2, - "matchers": [ - { - "method": 0, - "type": "method", - "uiType": "GET" - }, - { - "path": "http://android.httptoolkit.tech/config", - "type": "simple-path" - } - ], - "handler": { - "data": "{\"certificate\":\"-----BEGIN CERTIFICATE-----\\r\\nMIIDTzCCAjegAwIBAgIRCt9IkUiBw0INpkuSHtvzfewwDQYJKoZIhvcNAQELBQAw\\r\\nQTEYMBYGA1UEAxMPSFRUUCBUb29sa2l0IENBMQswCQYDVQQGEwJYWDEYMBYGA1UE\\r\\nChMPSFRUUCBUb29sa2l0IENBMB4XDTI0MDkyMDA4MTk0NloXDTI1MDkyMTA4MTk0\\r\\nNlowQTEYMBYGA1UEAxMPSFRUUCBUb29sa2l0IENBMQswCQYDVQQGEwJYWDEYMBYG\\r\\nA1UEChMPSFRUUCBUb29sa2l0IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\\r\\nCgKCAQEAsh2gFrsXAZgObYb5jKi6OA0Wb2r+sZLPZU5uBiOfbvDLb4Cb/xIg0iqz\\r\\n8ZBX84jeP773vS4aMDVEeWpjTSFh39K2WvtQ5AdDSoMekIYWHSdk+pf1U0AQU1qT\\r\\nPeVE5m8XpB+EzjB7zXjRD9RlqFzyHYNbGrt5AJL1Kq4ZI5zQOoVvH+HglabVsW8L\\r\\nuQFdPG6NAy6Vx91aXjiZMBh2f1e9T/8J7lsz/k6C89RZrxRcWnSjAoGR4c2o+aor\\r\\nxwdI0u8kqzXBQ7pur5aMkEceNXyiEgaJm2Y9sLfabPEwxhyFczsnW0HTEL/9N2t4\\r\\nnLVmGiIBWF5p86voNl6oSawZo+FVfwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/\\r\\nMA4GA1UdDwEB/wQEAwIBxjAdBgNVHQ4EFgQUKzBjrwEImJmvoZqd/oa0mlAEmT4w\\r\\nDQYJKoZIhvcNAQELBQADggEBACcFhZh0eUS72017JyXvVWJQDFyg9gb5wFnbjqE4\\r\\nB72/Rnb1wiVxlMk+qfHW2Mdf/PZruoTyzfVGIKZ/wtvfWalovgV9gx1+VJYJVUhY\\r\\nNGpjoD32hOGuEp7qGvGQJK5tgxMNGOoTYM+Jjdy+C8MW5kprdp76TGSK3bixwJGf\\r\\nJdNd9nYOhfZJ2QR66VWH2NjLBNAf/csUlMNDnz7yX11+lgpOT/G0WlNe6jDGvegd\\r\\nrx5FKMEe9ImxM6ZUn/CsVL+Ajw9TU1EVQInhpFvHPLQRRug9Mz0eKE+O7pIpcohM\\r\\nCXvrFbBEOPmyfelKDAxRg/s54LdFmUhVdAM8YiUvoEEMoc8=\\r\\n-----END CERTIFICATE-----\\r\\n\"}", - "status": 200, - "headers": { - "content-type": "application/json" - }, - "type": "simple" - }, - "completionChecker": { - "type": "always" - } + "method": 1, + "type": "method", + "uiType": "POST" }, { - "id": "default-amiusing", - "type": "http", - "activated": true, - "priority": 2, - "matchers": [ - { - "method": 0, - "type": "method", - "uiType": "GET" - }, - { - "type": "regex-path", - "regexSource": "^https?:\\/\\/amiusing\\.httptoolkit\\.tech\\/?$", - "regexFlags": "", - "uiType": "am-i-using" - } - ], - "handler": { - "data": "\n\n\n \n \n \n \n Are you using HTTP Toolkit? Yes!\n \n \n \n\n\n
\n

You're being intercepted by HTTP Toolkit

\n

\n This response came from HTTP Toolkit, which is currently intercepting this connection.\n

\n

\n All requests made by this browser will be recorded by HTTP Toolkit.\n Take a look at the 'View' tab there now to see the request & response\n that brought you this page, or start browsing elsewhere to collect more data.\n

\n
\n \n\n", - "status": 200, - "headers": { - "content-type": "text/html", - "cache-control": "no-store", - "httptoolkit-active": "true" - }, - "type": "simple" - }, - "completionChecker": { - "type": "always" - } + "type": "regex-path", + "regexSource": "https?:\\/\\/.+\\/auth\\/trial_disc.php", + "regexFlags": "" }, { - "id": "default-certificate", - "type": "http", - "activated": true, - "priority": 2, - "matchers": [ - { - "method": 0, - "type": "method", - "uiType": "GET" - }, - { - "path": "amiusing.httptoolkit.tech/certificate", - "type": "simple-path" - } - ], - "handler": { - "status": 200, - "filePath": "C:\\Users\\DVDFab\\AppData\\Local\\httptoolkit\\Config\\ca.pem", - "headers": { - "content-type": "application/x-x509-ca-cert" - }, - "type": "file" - }, - "completionChecker": { - "type": "always" - } - }, - { - "id": "default-wildcard", - "type": "http", - "activated": true, - "matchers": [ - { - "type": "wildcard", - "uiType": "default-wildcard" - } - ], - "handler": { - "type": "passthrough" - }, - "completionChecker": { - "type": "always" - } - }, - { - "id": "default-ws-wildcard", - "type": "websocket", - "activated": true, - "matchers": [ - { - "type": "wildcard", - "uiType": "default-ws-wildcard" - } - ], - "handler": { - "type": "ws-passthrough" - }, - "completionChecker": { - "type": "always" - } + "type": "query", + "queryObject": { + "Mode": "Upload" + } } - ] + ], + "completionChecker": { + "type": "always" + }, + "handler": { + "data": { + "type": "Buffer", + "data": [ + 79, + 75 + ] + }, + "status": 200, + "headers": { + "content-type": "text/html" + }, + "type": "simple" + }, + "title": "Disable trial update" + }, + { + "id": "2fd50e01-eb31-49ba-9ab9-deb3485eb096", + "type": "http", + "activated": true, + "matchers": [ + { + "method": 1, + "type": "method", + "uiType": "POST" + }, + { + "type": "regex-path", + "regexSource": "https?:\\/\\/.+\\/ak\\/dl_tr\\/", + "regexFlags": "" + } + ], + "completionChecker": { + "type": "always" + }, + "handler": { + "data": { + "type": "Buffer", + "data": [ + 123, + 34, + 82, + 34, + 58, + 34, + 48, + 34, + 44, + 34, + 110, + 117, + 109, + 34, + 58, + 51, + 44, + 34, + 99, + 111, + 117, + 110, + 116, + 34, + 58, + 51, + 125 + ] + }, + "status": 200, + "headers": { + "content-type": "text/html; charset=UTF-8" + }, + "type": "simple" + }, + "title": "Disable trial count" + }, + { + "id": "322c8f6f-b438-4883-944e-9a77ce54ddbe", + "type": "http", + "title": "Disable download count", + "activated": true, + "matchers": [ + { + "method": 1, + "type": "method", + "uiType": "POST" + }, + { + "type": "regex-path", + "regexSource": "https?:\\/\\/.+\\/ak\\/dl_re\\/", + "regexFlags": "" + } + ], + "handler": { + "data": { + "type": "Buffer", + "data": [ + 123, + 34, + 82, + 34, + 58, + 34, + 48, + 34, + 44, + 34, + 110, + 117, + 109, + 34, + 58, + 34, + 49, + 48, + 48, + 34, + 44, + 34, + 99, + 111, + 117, + 110, + 116, + 34, + 58, + 34, + 49, + 48, + 48, + 34, + 125 + ] + }, + "status": 200, + "statusMessage": "OK", + "headers": { + "content-type": "text/html; charset=UTF-8" + }, + "type": "simple" + }, + "completionChecker": { + "type": "always" + } + }, + { + "id": "7beca383-bfb9-41d6-9a44-e42bf4d4e970", + "type": "http", + "title": "Disable user check", + "activated": true, + "matchers": [ + { + "method": 1, + "type": "method", + "uiType": "POST" + }, + { + "type": "regex-path", + "regexSource": "https?:\\/\\/.+\\/ak\\/v2\\/st\\/", + "regexFlags": "" + } + ], + "handler": { + "data": { + "type": "Buffer", + "data": [ + 123, + 34, + 82, + 34, + 58, + 34, + 48, + 34, + 125 + ] + }, + "status": 200, + "statusMessage": "OK", + "headers": { + "content-type": "text/html; charset=UTF-8" + }, + "type": "simple" + }, + "completionChecker": { + "type": "always" + } + }, + { + "id": "0d915541-72f2-4580-9f32-e2b67b778016", + "type": "http", + "title": "Disable download request", + "activated": true, + "matchers": [ + { + "method": 1, + "type": "method", + "uiType": "POST" + }, + { + "type": "regex-path", + "regexSource": "https?:\\/\\/.+\\/ak\\/re\\/downloadex\\/", + "regexFlags": "" + } + ], + "handler": { + "data": { + "type": "Buffer", + "data": [ + 123, + 34, + 82, + 34, + 58, + 34, + 48, + 34, + 44, + 34, + 114, + 101, + 116, + 34, + 58, + 34, + 115, + 117, + 99, + 99, + 101, + 115, + 115, + 34, + 125 + ] + }, + "status": 200, + "statusMessage": "OK", + "headers": { + "content-type": "text/html; charset=UTF-8" + }, + "type": "simple" + }, + "completionChecker": { + "type": "always" + } + }, + { + "id": "4b29bae4-71dc-47ad-933a-cee30e0423cd", + "type": "http", + "title": "Disable key check", + "activated": true, + "matchers": [ + { + "method": 1, + "type": "method", + "uiType": "POST" + }, + { + "type": "regex-path", + "regexSource": "https?:\\/\\/.+\\/ak\\/re\\/keycheck\\/", + "regexFlags": "" + } + ], + "handler": { + "data": { + "type": "Buffer", + "data": [ + 123, + 34, + 82, + 34, + 58, + 34, + 48, + 34, + 44, + 34, + 114, + 101, + 116, + 34, + 58, + 34, + 115, + 117, + 99, + 99, + 101, + 115, + 115, + 34, + 125 + ] + }, + "status": 200, + "statusMessage": "OK", + "headers": { + "content-type": "text/html; charset=UTF-8" + }, + "type": "simple" + }, + "completionChecker": { + "type": "always" + } + } + ] + }, + { + "id": "fcfe3cb6-99cb-4bbe-b74f-584c3be579bd", + "title": "Client", + "items": [ + { + "id": "3f5eb415-2253-44cb-a1f8-b34e4d5c4e78", + "type": "http", + "activated": true, + "matchers": [ + { + "method": 1, + "type": "method", + "uiType": "POST" + }, + { + "type": "regex-path", + "regexSource": "https?:\\/\\/.+\\/member\\/recalled_reset_trial", + "regexFlags": "" + } + ], + "completionChecker": { + "type": "always" + }, + "handler": { + "type": "close-connection" + }, + "title": "Disable trial reset" + }, + { + "id": "32287ccf-fca7-48b1-9dce-f0ece3a33802", + "type": "http", + "title": "Disable license upgrade", + "activated": true, + "matchers": [ + { + "method": 1, + "type": "method", + "uiType": "POST" + }, + { + "type": "regex-path", + "regexSource": "https?:\\/\\/.+\\/products\\/client_upgrade_license_v[0-9]", + "regexFlags": "" + } + ], + "handler": { + "type": "close-connection" + }, + "completionChecker": { + "type": "always" + } + }, + { + "id": "4c0ee360-3e42-4ca4-bde9-c34a52f9ad5a", + "type": "http", + "title": "Disable update", + "activated": false, + "matchers": [ + { + "method": 1, + "type": "method", + "uiType": "POST" + }, + { + "type": "regex-path", + "regexSource": "https?:\\/\\/.+\\/update\\/get_latest_version.php", + "regexFlags": "" + } + ], + "handler": { + "type": "close-connection" + }, + "completionChecker": { + "type": "always" + } + }, + { + "id": "399eabc1-a550-41d5-99f1-c296787f7293", + "type": "http", + "title": "Disable license info", + "activated": true, + "matchers": [ + { + "method": 1, + "type": "method", + "uiType": "POST" + }, + { + "type": "regex-path", + "regexSource": "https?:\\/\\/.+\\/products\\/client_get_license_info", + "regexFlags": "" + } + ], + "handler": { + "data": { + "type": "Buffer", + "data": [ + 123, + 34, + 99, + 115, + 99, + 111, + 100, + 101, + 34, + 58, + 48, + 44, + 34, + 100, + 97, + 116, + 97, + 34, + 58, + 123, + 34, + 112, + 114, + 111, + 100, + 117, + 99, + 116, + 95, + 105, + 110, + 102, + 111, + 34, + 58, + 91, + 93, + 44, + 34, + 118, + 101, + 114, + 115, + 105, + 111, + 110, + 34, + 58, + 49, + 125, + 44, + 34, + 116, + 105, + 109, + 101, + 95, + 110, + 111, + 119, + 34, + 58, + 48, + 125 + ] + }, + "status": 200, + "statusMessage": "OK", + "headers": { + "content-type": "application/json" + }, + "type": "simple" + }, + "completionChecker": { + "type": "always" + } + }, + { + "id": "b856d1bb-ed1a-4f03-9171-1ba9bb42ed44", + "type": "http", + "title": "Disable reports", + "activated": true, + "matchers": [ + { + "method": 1, + "type": "method", + "uiType": "POST" + }, + { + "type": "regex-path", + "regexSource": "https?:\\/\\/.+\\/report\\/service\\/", + "regexFlags": "" + } + ], + "handler": { + "data": { + "type": "Buffer", + "data": [ + 79, + 75 + ] + }, + "status": 200, + "statusMessage": "OK", + "headers": { + "content-type": "text/html" + }, + "type": "simple" + }, + "completionChecker": { + "type": "always" + } + }, + { + "id": "9cf0ca01-74a7-4c74-9e30-94285404056d", + "type": "http", + "title": "Disable DRM control", + "activated": true, + "matchers": [ + { + "method": 1, + "type": "method", + "uiType": "POST" + }, + { + "type": "regex-path", + "regexSource": "https?:\\/\\/.+\\/api\\/drm_control\\/", + "regexFlags": "" + } + ], + "handler": { + "data": { + "type": "Buffer", + "data": [ + 123, + 34, + 114, + 101, + 115, + 117, + 108, + 116, + 34, + 58, + 123, + 34, + 114, + 101, + 115, + 34, + 58, + 34, + 116, + 114, + 117, + 101, + 34, + 44, + 34, + 118, + 101, + 114, + 115, + 105, + 111, + 110, + 34, + 58, + 48, + 44, + 34, + 115, + 105, + 116, + 101, + 115, + 34, + 58, + 91, + 93, + 125, + 125 + ] + }, + "status": 200, + "statusMessage": "OK", + "headers": { + "content-type": "text/html; charset=UTF-8" + }, + "type": "simple" + }, + "completionChecker": { + "type": "always" + } + }, + { + "id": "d9b517bc-13b6-4f8f-8ee0-1d7862fa8df8", + "type": "http", + "title": "Disable info control", + "activated": true, + "matchers": [ + { + "method": 1, + "type": "method", + "uiType": "POST" + }, + { + "type": "regex-path", + "regexSource": "https?:\\/\\/.+\\/api\\/info_control\\/", + "regexFlags": "" + } + ], + "handler": { + "data": { + "type": "Buffer", + "data": [ + 123, + 34, + 114, + 101, + 115, + 117, + 108, + 116, + 34, + 58, + 123, + 34, + 114, + 101, + 115, + 34, + 58, + 34, + 116, + 114, + 117, + 101, + 34, + 44, + 34, + 109, + 115, + 103, + 34, + 58, + 34, + 111, + 107, + 34, + 44, + 34, + 100, + 97, + 116, + 97, + 34, + 58, + 91, + 123, + 34, + 112, + 111, + 115, + 95, + 105, + 100, + 34, + 58, + 49, + 44, + 34, + 105, + 100, + 34, + 58, + 45, + 49, + 44, + 34, + 101, + 110, + 97, + 98, + 108, + 101, + 34, + 58, + 102, + 97, + 108, + 115, + 101, + 44, + 34, + 112, + 111, + 115, + 34, + 58, + 34, + 65, + 100, + 32, + 119, + 104, + 101, + 110, + 32, + 97, + 112, + 112, + 32, + 115, + 116, + 97, + 114, + 116, + 34, + 44, + 34, + 114, + 101, + 99, + 111, + 109, + 109, + 101, + 110, + 100, + 95, + 100, + 97, + 116, + 97, + 34, + 58, + 34, + 34, + 125, + 44, + 123, + 34, + 112, + 111, + 115, + 95, + 105, + 100, + 34, + 58, + 50, + 44, + 34, + 105, + 100, + 34, + 58, + 53, + 48, + 48, + 50, + 44, + 34, + 101, + 110, + 97, + 98, + 108, + 101, + 34, + 58, + 102, + 97, + 108, + 115, + 101, + 44, + 34, + 112, + 111, + 115, + 34, + 58, + 34, + 78, + 101, + 119, + 32, + 112, + 114, + 111, + 100, + 117, + 99, + 116, + 32, + 97, + 100, + 32, + 119, + 104, + 101, + 110, + 32, + 97, + 112, + 112, + 32, + 115, + 116, + 97, + 114, + 116, + 34, + 44, + 34, + 114, + 101, + 99, + 111, + 109, + 109, + 101, + 110, + 100, + 95, + 100, + 97, + 116, + 97, + 34, + 58, + 34, + 34, + 125, + 44, + 123, + 34, + 112, + 111, + 115, + 95, + 105, + 100, + 34, + 58, + 53, + 44, + 34, + 105, + 100, + 34, + 58, + 53, + 48, + 48, + 48, + 44, + 34, + 101, + 110, + 97, + 98, + 108, + 101, + 34, + 58, + 102, + 97, + 108, + 115, + 101, + 44, + 34, + 112, + 111, + 115, + 34, + 58, + 34, + 65, + 100, + 32, + 97, + 116, + 32, + 98, + 111, + 116, + 116, + 111, + 109, + 32, + 111, + 102, + 32, + 117, + 105, + 34, + 44, + 34, + 114, + 101, + 99, + 111, + 109, + 109, + 101, + 110, + 100, + 95, + 100, + 97, + 116, + 97, + 34, + 58, + 34, + 34, + 125, + 44, + 123, + 34, + 112, + 111, + 115, + 95, + 105, + 100, + 34, + 58, + 54, + 44, + 34, + 105, + 100, + 34, + 58, + 45, + 49, + 44, + 34, + 101, + 110, + 97, + 98, + 108, + 101, + 34, + 58, + 102, + 97, + 108, + 115, + 101, + 44, + 34, + 112, + 111, + 115, + 34, + 58, + 34, + 65, + 100, + 32, + 97, + 116, + 32, + 108, + 101, + 102, + 116, + 32, + 98, + 111, + 116, + 116, + 111, + 109, + 32, + 99, + 111, + 114, + 110, + 101, + 114, + 34, + 44, + 34, + 114, + 101, + 99, + 111, + 109, + 109, + 101, + 110, + 100, + 95, + 100, + 97, + 116, + 97, + 34, + 58, + 34, + 34, + 125, + 44, + 123, + 34, + 112, + 111, + 115, + 95, + 105, + 100, + 34, + 58, + 50, + 48, + 48, + 48, + 44, + 34, + 105, + 100, + 34, + 58, + 49, + 49, + 48, + 50, + 44, + 34, + 101, + 110, + 97, + 98, + 108, + 101, + 34, + 58, + 102, + 97, + 108, + 115, + 101, + 44, + 34, + 112, + 111, + 115, + 34, + 58, + 34, + 65, + 100, + 32, + 105, + 110, + 32, + 108, + 105, + 118, + 101, + 117, + 112, + 100, + 97, + 116, + 101, + 32, + 100, + 105, + 97, + 108, + 111, + 103, + 34, + 44, + 34, + 114, + 101, + 99, + 111, + 109, + 109, + 101, + 110, + 100, + 95, + 100, + 97, + 116, + 97, + 34, + 58, + 34, + 34, + 125, + 44, + 123, + 34, + 112, + 111, + 115, + 95, + 105, + 100, + 34, + 58, + 56, + 44, + 34, + 105, + 100, + 34, + 58, + 53, + 49, + 48, + 49, + 44, + 34, + 101, + 110, + 97, + 98, + 108, + 101, + 34, + 58, + 102, + 97, + 108, + 115, + 101, + 44, + 34, + 112, + 111, + 115, + 34, + 58, + 34, + 65, + 100, + 32, + 97, + 116, + 32, + 108, + 105, + 99, + 101, + 110, + 115, + 101, + 32, + 105, + 110, + 102, + 111, + 34, + 44, + 34, + 114, + 101, + 99, + 111, + 109, + 109, + 101, + 110, + 100, + 95, + 100, + 97, + 116, + 97, + 34, + 58, + 34, + 34, + 125, + 93, + 125, + 125 + ] + }, + "status": 200, + "statusMessage": "OK", + "headers": { + "content-type": "text/html; charset=UTF-8" + }, + "type": "simple" + }, + "completionChecker": { + "type": "always" + } + }, + { + "id": "4911f050-9697-452e-a163-7007d4926ba8", + "type": "http", + "title": "Disable client command", + "activated": true, + "matchers": [ + { + "type": "wildcard" + }, + { + "type": "regex-path", + "regexSource": "https?:\\/\\/.+\\/client\\/command", + "regexFlags": "" + } + ], + "handler": { + "type": "close-connection" + }, + "completionChecker": { + "type": "always" + } + }, + { + "id": "8ea23e97-08f5-4ae1-8a2b-4695c6dd664c", + "type": "http", + "title": "Disable recommend", + "activated": true, + "matchers": [ + { + "method": 1, + "type": "method", + "uiType": "POST" + }, + { + "type": "regex-path", + "regexSource": "https?:\\/\\/.+\\/recommend\\/", + "regexFlags": "" + } + ], + "handler": { + "type": "close-connection" + }, + "completionChecker": { + "type": "always" + } + }, + { + "id": "49cbe5da-6fe5-4f31-b0b4-2fcfe50f8021", + "type": "http", + "title": "Disable recommend client", + "activated": true, + "matchers": [ + { + "method": 1, + "type": "method", + "uiType": "POST" + }, + { + "type": "regex-path", + "regexSource": "https?:\\/\\/.+\\/recommend\\/client\\/best\\/list", + "regexFlags": "" + } + ], + "handler": { + "data": { + "type": "Buffer", + "data": [ + 123, + 34, + 99, + 115, + 99, + 111, + 100, + 101, + 34, + 58, + 50, + 48, + 48, + 44, + 34, + 118, + 101, + 114, + 115, + 105, + 111, + 110, + 34, + 58, + 34, + 49, + 46, + 48, + 46, + 48, + 34, + 44, + 34, + 100, + 97, + 116, + 97, + 34, + 58, + 91, + 93, + 125 + ] + }, + "status": 200, + "headers": { + "content-type": "application/json" + }, + "type": "simple" + }, + "completionChecker": { + "type": "always" + } + }, + { + "id": "4a0e5f52-2a9d-497e-a61d-8836e78f2781", + "type": "http", + "title": "Disable recommend update", + "activated": true, + "matchers": [ + { + "method": 1, + "type": "method", + "uiType": "POST" + }, + { + "type": "regex-path", + "regexSource": "https?:\\/\\/.+\\/update\\/recommend.php", + "regexFlags": "" + } + ], + "handler": { + "data": { + "type": "Buffer", + "data": [ + 123, + 34, + 99, + 115, + 99, + 111, + 100, + 101, + 34, + 58, + 48, + 44, + 34, + 118, + 101, + 114, + 115, + 105, + 111, + 110, + 34, + 58, + 49, + 44, + 34, + 101, + 110, + 97, + 98, + 108, + 101, + 34, + 58, + 102, + 97, + 108, + 115, + 101, + 44, + 34, + 100, + 97, + 116, + 97, + 34, + 58, + 91, + 93, + 125 + ] + }, + "status": 200, + "headers": { + "content-type": "text/html" + }, + "type": "simple" + }, + "completionChecker": { + "type": "always" + } + }, + { + "id": "7845742b-c36e-446d-862e-f27ba70eca71", + "type": "http", + "title": "Disable analytics", + "activated": true, + "matchers": [ + { + "method": 1, + "type": "method", + "uiType": "POST" + }, + { + "type": "regex-path", + "regexSource": "https?:\\/\\/.+\\/api\\/common_json_post\\/", + "regexFlags": "" + } + ], + "handler": { + "data": { + "type": "Buffer", + "data": [ + 123, + 34, + 114, + 101, + 115, + 117, + 108, + 116, + 34, + 58, + 123, + 34, + 114, + 101, + 115, + 34, + 58, + 116, + 114, + 117, + 101, + 44, + 34, + 109, + 115, + 103, + 34, + 58, + 34, + 78, + 79, + 95, + 69, + 82, + 82, + 79, + 82, + 34, + 125, + 125 + ] + }, + "status": 200, + "statusMessage": "OK", + "headers": { + "content-type": "text/html; charset=UTF-8" + }, + "type": "simple" + }, + "completionChecker": { + "type": "always" + } + } + ] + }, + { + "id": "327a5857-2d1f-4359-a287-2cbe9750fc48", + "title": "DRM", + "items": [ + { + "id": "0f042efb-172d-4722-8f88-e50df8101189", + "type": "http", + "title": "Bypass trial info", + "activated": true, + "matchers": [ + { + "method": 1, + "type": "method", + "uiType": "POST" + }, + { + "type": "regex-path", + "regexSource": "https?:\\/\\/.+\\/auth\\/trial_disc.php", + "regexFlags": "" + }, + { + "type": "query", + "queryObject": { + "Mode": "Download" + } + } + ], + "handler": { + "uiType": "forward-to-host", + "type": "passthrough", + "forwarding": { + "targetHost": "http://127.0.0.1:5000", + "updateHostHeader": false + } + }, + "completionChecker": { + "type": "always" + } + }, + { + "id": "e475ed5b-262c-45c9-9138-dbdc7618985d", + "type": "http", + "title": "Cached keys", + "activated": true, + "matchers": [ + { + "method": 1, + "type": "method", + "uiType": "POST" + }, + { + "type": "regex-path", + "regexSource": "https?:\\/\\/.+\\/ak\\/uc_v[0-9]\\/", + "regexFlags": "" + } + ], + "handler": { + "uiType": "forward-to-host", + "type": "passthrough", + "forwarding": { + "targetHost": "http://127.0.0.1:5000", + "updateHostHeader": false + } + }, + "completionChecker": { + "type": "always" + } + } + ] + }, + { + "id": "14c5aff7-d82b-498d-b310-be78529cd3cf", + "title": "Debug", + "items": [ + { + "id": "09e78065-5c8d-41d2-8efe-16a9ef11c179", + "type": "http", + "title": "Bypass trial info (static)", + "activated": false, + "matchers": [ + { + "method": 1, + "type": "method", + "uiType": "POST" + }, + { + "type": "regex-path", + "regexSource": "https?:\\/\\/.+\\/auth\\/trial_disc.php", + "regexFlags": "" + }, + { + "type": "query", + "queryObject": { + "Mode": "Download" + } + } + ], + "handler": { + "data": { + "type": "Buffer", + "data": [ + 60, + 63, + 120, + 109, + 108, + 32, + 118, + 101, + 114, + 115, + 105, + 111, + 110, + 61, + 34, + 49, + 46, + 48, + 34, + 32, + 101, + 110, + 99, + 111, + 100, + 105, + 110, + 103, + 61, + 34, + 117, + 116, + 102, + 45, + 56, + 34, + 32, + 63, + 62, + 13, + 10, + 60, + 84, + 114, + 105, + 97, + 108, + 79, + 112, + 101, + 110, + 68, + 105, + 115, + 99, + 73, + 110, + 102, + 111, + 32, + 67, + 108, + 105, + 101, + 110, + 116, + 61, + 34, + 48, + 48, + 34, + 32, + 77, + 97, + 99, + 73, + 68, + 61, + 34, + 48, + 48, + 45, + 48, + 48, + 45, + 48, + 48, + 45, + 48, + 48, + 45, + 48, + 48, + 45, + 48, + 48, + 58, + 48, + 48, + 45, + 48, + 48, + 45, + 48, + 48, + 45, + 48, + 48, + 45, + 48, + 48, + 45, + 48, + 48, + 34, + 62, + 60, + 47, + 84, + 114, + 105, + 97, + 108, + 79, + 112, + 101, + 110, + 68, + 105, + 115, + 99, + 73, + 110, + 102, + 111, + 62 + ] + }, + "status": 200, + "headers": { + "content-type": "text/html" + }, + "type": "simple" + }, + "completionChecker": { + "type": "always" + } + }, + { + "id": "02e8e25b-9c0e-4bef-bc2f-da66f9130da8", + "type": "http", + "title": "Get challenge (dvdfab.cn)", + "activated": false, + "matchers": [ + { + "method": 1, + "type": "method", + "uiType": "POST" + }, + { + "type": "regex-path", + "regexSource": "https?:\\/\\/.+\\/c1\\/", + "regexFlags": "" + } + ], + "handler": { + "uiType": "forward-to-host", + "type": "passthrough", + "forwarding": { + "targetHost": "http://127.0.0.1:5000", + "updateHostHeader": false + } + }, + "completionChecker": { + "type": "always" + } + }, + { + "id": "520a52f8-9f8c-412c-9d0a-7eeed296b103", + "type": "http", + "activated": false, + "matchers": [ + { + "method": 1, + "type": "method", + "uiType": "POST" + }, + { + "type": "regex-path", + "regexSource": "https?:\\/\\/.+\\/v[0-9]\\/ss\\/", + "regexFlags": "" + } + ], + "completionChecker": { + "type": "always" + }, + "handler": { + "uiType": "forward-to-host", + "type": "passthrough", + "forwarding": { + "targetHost": "http://127.0.0.1:5000", + "updateHostHeader": false + } + }, + "title": "Get challenge (deuhd.ru)" + }, + { + "id": "e584a281-f88d-41c1-a584-1e10907b870a", + "type": "http", + "title": "Parse license (dvdfab.cn)", + "activated": false, + "matchers": [ + { + "method": 1, + "type": "method", + "uiType": "POST" + }, + { + "type": "regex-path", + "regexSource": "https?:\\/\\/.+\\/c2\\/", + "regexFlags": "" + } + ], + "handler": { + "uiType": "forward-to-host", + "type": "passthrough", + "forwarding": { + "targetHost": "http://127.0.0.1:5000", + "updateHostHeader": false + } + }, + "completionChecker": { + "type": "always" + } + }, + { + "id": "968846a4-9bc7-4b6f-ba2a-201f8bbf4af9", + "type": "http", + "activated": false, + "matchers": [ + { + "method": 1, + "type": "method", + "uiType": "POST" + }, + { + "type": "regex-path", + "regexSource": "https?:\\/\\/.+\\/v[0-9]\\/le\\/", + "regexFlags": "" + } + ], + "completionChecker": { + "type": "always" + }, + "handler": { + "uiType": "forward-to-host", + "type": "passthrough", + "forwarding": { + "targetHost": "http://127.0.0.1:5000", + "updateHostHeader": false + } + }, + "title": "Parse license (deuhd.ru)" + } + ] } - ] + ] + }, + { + "id": "default-group", + "title": "Default rules", + "items": [ + { + "id": "default-android-certificate", + "type": "http", + "activated": true, + "priority": 2, + "matchers": [ + { + "method": 0, + "type": "method", + "uiType": "GET" + }, + { + "path": "http://android.httptoolkit.tech/config", + "type": "simple-path" + } + ], + "handler": { + "data": "{\"certificate\":\"-----BEGIN CERTIFICATE-----\\r\\nMIIDTzCCAjegAwIBAgIRCt9IkUiBw0INpkuSHtvzfewwDQYJKoZIhvcNAQELBQAw\\r\\nQTEYMBYGA1UEAxMPSFRUUCBUb29sa2l0IENBMQswCQYDVQQGEwJYWDEYMBYGA1UE\\r\\nChMPSFRUUCBUb29sa2l0IENBMB4XDTI0MDkyMDA4MTk0NloXDTI1MDkyMTA4MTk0\\r\\nNlowQTEYMBYGA1UEAxMPSFRUUCBUb29sa2l0IENBMQswCQYDVQQGEwJYWDEYMBYG\\r\\nA1UEChMPSFRUUCBUb29sa2l0IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\\r\\nCgKCAQEAsh2gFrsXAZgObYb5jKi6OA0Wb2r+sZLPZU5uBiOfbvDLb4Cb/xIg0iqz\\r\\n8ZBX84jeP773vS4aMDVEeWpjTSFh39K2WvtQ5AdDSoMekIYWHSdk+pf1U0AQU1qT\\r\\nPeVE5m8XpB+EzjB7zXjRD9RlqFzyHYNbGrt5AJL1Kq4ZI5zQOoVvH+HglabVsW8L\\r\\nuQFdPG6NAy6Vx91aXjiZMBh2f1e9T/8J7lsz/k6C89RZrxRcWnSjAoGR4c2o+aor\\r\\nxwdI0u8kqzXBQ7pur5aMkEceNXyiEgaJm2Y9sLfabPEwxhyFczsnW0HTEL/9N2t4\\r\\nnLVmGiIBWF5p86voNl6oSawZo+FVfwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/\\r\\nMA4GA1UdDwEB/wQEAwIBxjAdBgNVHQ4EFgQUKzBjrwEImJmvoZqd/oa0mlAEmT4w\\r\\nDQYJKoZIhvcNAQELBQADggEBACcFhZh0eUS72017JyXvVWJQDFyg9gb5wFnbjqE4\\r\\nB72/Rnb1wiVxlMk+qfHW2Mdf/PZruoTyzfVGIKZ/wtvfWalovgV9gx1+VJYJVUhY\\r\\nNGpjoD32hOGuEp7qGvGQJK5tgxMNGOoTYM+Jjdy+C8MW5kprdp76TGSK3bixwJGf\\r\\nJdNd9nYOhfZJ2QR66VWH2NjLBNAf/csUlMNDnz7yX11+lgpOT/G0WlNe6jDGvegd\\r\\nrx5FKMEe9ImxM6ZUn/CsVL+Ajw9TU1EVQInhpFvHPLQRRug9Mz0eKE+O7pIpcohM\\r\\nCXvrFbBEOPmyfelKDAxRg/s54LdFmUhVdAM8YiUvoEEMoc8=\\r\\n-----END CERTIFICATE-----\\r\\n\"}", + "status": 200, + "headers": { + "content-type": "application/json" + }, + "type": "simple" + }, + "completionChecker": { + "type": "always" + } + }, + { + "id": "default-amiusing", + "type": "http", + "activated": true, + "priority": 2, + "matchers": [ + { + "method": 0, + "type": "method", + "uiType": "GET" + }, + { + "type": "regex-path", + "regexSource": "^https?:\\/\\/amiusing\\.httptoolkit\\.tech\\/?$", + "regexFlags": "", + "uiType": "am-i-using" + } + ], + "handler": { + "data": "\n\n\n \n \n \n \n Are you using HTTP Toolkit? Yes!\n \n \n \n\n\n
\n

You're being intercepted by HTTP Toolkit

\n

\n This response came from HTTP Toolkit, which is currently intercepting this connection.\n

\n

\n All requests made by this browser will be recorded by HTTP Toolkit.\n Take a look at the 'View' tab there now to see the request & response\n that brought you this page, or start browsing elsewhere to collect more data.\n

\n
\n \n\n", + "status": 200, + "headers": { + "content-type": "text/html", + "cache-control": "no-store", + "httptoolkit-active": "true" + }, + "type": "simple" + }, + "completionChecker": { + "type": "always" + } + }, + { + "id": "default-certificate", + "type": "http", + "activated": true, + "priority": 2, + "matchers": [ + { + "method": 0, + "type": "method", + "uiType": "GET" + }, + { + "path": "amiusing.httptoolkit.tech/certificate", + "type": "simple-path" + } + ], + "handler": { + "status": 200, + "filePath": "C:\\Users\\DVDFab\\AppData\\Local\\httptoolkit\\Config\\ca.pem", + "headers": { + "content-type": "application/x-x509-ca-cert" + }, + "type": "file" + }, + "completionChecker": { + "type": "always" + } + }, + { + "id": "default-wildcard", + "type": "http", + "activated": true, + "matchers": [ + { + "type": "wildcard", + "uiType": "default-wildcard" + } + ], + "handler": { + "type": "passthrough" + }, + "completionChecker": { + "type": "always" + } + }, + { + "id": "default-ws-wildcard", + "type": "websocket", + "activated": true, + "matchers": [ + { + "type": "wildcard", + "uiType": "default-ws-wildcard" + } + ], + "handler": { + "type": "ws-passthrough" + }, + "completionChecker": { + "type": "always" + } + } + ] + } + ] } \ No newline at end of file