atproxy 0.0.0-experimental-ce7d7f2 → 0.0.0-experimental-899c0b1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -159
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,166 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
<h1>How it workds</h1>
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
⬆️ H1 HTML heading
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Some feature
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
⬆️ H2 MD heading
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
<h3>Missed in ToC</h3>
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
npx atproxy
|
|
13
|
-
```
|
|
11
|
+
⬆️ H3 HTML heading
|
|
14
12
|
|
|
15
|
-
|
|
13
|
+
### How it workds
|
|
16
14
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
4. Own your data and experience even more
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
## Overview
|
|
23
|
-
|
|
24
|
-
Atproxy consists of two components working together:
|
|
25
|
-
|
|
26
|
-
- **Browser Extension** (Manifest V3): Intercepts XRPC requests from web pages and forwards them to your local proxy server
|
|
27
|
-
- **Proxy Server** (Node.js CLI): A local HTTP server that authenticates with Bluesky, validates permissions, and proxies requests to the atproto network
|
|
28
|
-
|
|
29
|
-
This architecture ensures that all session management, authentication tokens, and request filtering happens on your machine—never in the browser or on external servers.
|
|
30
|
-
|
|
31
|
-
## Privacy & Security
|
|
32
|
-
- **Local-first architecture**: All session data and credentials stored exclusively on your server
|
|
33
|
-
- **Permission-based access control**: Whitelist specific XRPC methods (queries and procedures)
|
|
34
|
-
- **No data collection**: Zero telemetry, tracking, or external data transmission
|
|
35
|
-
- **Transparent proxying**: Requests flow through your server with full visibility
|
|
36
|
-
|
|
37
|
-
### Request Flow
|
|
38
|
-
|
|
39
|
-
1. **Interception**: Injected script overrides `window.fetch()` and matches requests against configured regex pattern (default: `^.*/xrpc/`)
|
|
40
|
-
2. **Extension Bridge**: Content script forwards serialized request to background service worker
|
|
41
|
-
3. **Proxy Forwarding**: Background worker sends HTTP request to local proxy server (default: `http://localhost:9523`)
|
|
42
|
-
4. **Permission Check**: Proxy validates request path against whitelisted permissions
|
|
43
|
-
5. **Authentication**: Proxy uses stored Bluesky credentials to authenticate with atproto network
|
|
44
|
-
6. **XRPC Call**: Proxy makes authenticated call using `@atproto/api` Agent
|
|
45
|
-
7. **Response**: Response flows back through the chain to the original web application
|
|
46
|
-
|
|
47
|
-
## API Reference
|
|
48
|
-
|
|
49
|
-
### Proxy Server CLI
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
atproxy [options]
|
|
53
|
-
|
|
54
|
-
Options:
|
|
55
|
-
--handle <string> Bluesky handle (e.g., handle.bsky.social)
|
|
56
|
-
--permissions <...> Permission IDs (can specify multiple times)
|
|
57
|
-
--port <number> Server port (default: 9523)
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
### Proxy Server Endpoints
|
|
61
|
-
|
|
62
|
-
- `GET /xrpc/<method>` - Proxy GET requests (queries)
|
|
63
|
-
- `POST /xrpc/<method>` - Proxy POST requests (procedures)
|
|
64
|
-
- `GET /` - Health check endpoint
|
|
65
|
-
|
|
66
|
-
### Extension Configuration
|
|
67
|
-
|
|
68
|
-
Extension settings are stored in Chrome's sync storage and accessible via the popup:
|
|
69
|
-
|
|
70
|
-
- **Enabled**: Toggle to enable/disable request proxying
|
|
71
|
-
- **Proxyfying rule**: Regex pattern to match URLs (default: `^.*/xrpc/`)
|
|
72
|
-
|
|
73
|
-
## Use Cases
|
|
74
|
-
|
|
75
|
-
### For Developers
|
|
76
|
-
|
|
77
|
-
- **Testing & Development**: Test Bluesky integrations without affecting production accounts
|
|
78
|
-
- **API Experimentation**: Explore atproto APIs with full request/response visibility
|
|
79
|
-
- **Custom Clients**: Build or use Bluesky clients with custom authentication or filtering logic
|
|
80
|
-
- **Debugging**: Inspect XRPC traffic and understand application behavior
|
|
81
|
-
|
|
82
|
-
### For Privacy-Conscious Users
|
|
83
|
-
|
|
84
|
-
- **Session Control**: Keep authentication tokens on your machine, not in browser storage
|
|
85
|
-
- **Request Filtering**: Block or modify specific API calls before they reach Bluesky
|
|
86
|
-
- **Traffic Analysis**: Monitor and log all XRPC requests for security auditing
|
|
87
|
-
|
|
88
|
-
## Troubleshooting
|
|
89
|
-
|
|
90
|
-
### Extension shows "Not started"
|
|
91
|
-
|
|
92
|
-
- Verify the proxy server is running: `curl http://localhost:9523/`
|
|
93
|
-
- Check the port matches in extension configuration
|
|
94
|
-
- Ensure no firewall is blocking `localhost:9523`
|
|
95
|
-
|
|
96
|
-
### Requests not being intercepted
|
|
97
|
-
|
|
98
|
-
- Verify the regex pattern matches your application's XRPC URLs
|
|
99
|
-
- Check browser console for injection errors
|
|
100
|
-
- Ensure extension is enabled in the popup
|
|
101
|
-
|
|
102
|
-
## Local Usage
|
|
103
|
-
|
|
104
|
-
### Installation
|
|
105
|
-
|
|
106
|
-
**Prerequisites**
|
|
107
|
-
|
|
108
|
-
- Node.js >= 18.0.0
|
|
109
|
-
- pnpm (recommended) or npm
|
|
110
|
-
- Chrome, Edge, or other Chromium-based browser
|
|
111
|
-
|
|
112
|
-
```bash
|
|
113
|
-
git clone <repository-url>
|
|
114
|
-
cd atproxy
|
|
115
|
-
pnpm install
|
|
116
|
-
pnpm build
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
### Starting the Proxy Server
|
|
120
|
-
|
|
121
|
-
The proxy server requires Bluesky credentials and permission configuration:
|
|
122
|
-
|
|
123
|
-
```bash
|
|
124
|
-
pnpm start:proxy
|
|
125
|
-
pnpm start:proxy --handle yourhandle.bsky.social \
|
|
126
|
-
--permissions app.bsky.feed.getTimeline \
|
|
127
|
-
--permissions app.bsky.actor.getProfile \
|
|
128
|
-
--port 9523
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
**Server setup:**
|
|
132
|
-
1. Enter your Bluesky handle (e.g., `yourhandle.bsky.social`)
|
|
133
|
-
2. Enter your account or app password
|
|
134
|
-
3. Select permissions from the interactive list (use arrow keys, space to select)
|
|
135
|
-
4. Configuration (excluding password) is saved to `~/.atproxy.json` for future runs
|
|
136
|
-
|
|
137
|
-
### Installing the Extension
|
|
138
|
-
|
|
139
|
-
1. Build the extension:
|
|
140
|
-
```bash
|
|
141
|
-
pnpm build:extension
|
|
142
|
-
```
|
|
143
|
-
2. Load in Chrome/Edge:
|
|
144
|
-
- Open `chrome://extensions/` (or `edge://extensions/`)
|
|
145
|
-
- Enable "Developer mode"
|
|
146
|
-
- Click "Load unpacked"
|
|
147
|
-
- Select `packages/extension/dist`
|
|
148
|
-
3. Configure the extension:
|
|
149
|
-
- Click the extension icon in your toolbar
|
|
150
|
-
- Toggle the switch to enable proxying
|
|
151
|
-
- Adjust the regex pattern if needed (default: `^.*/xrpc/`)
|
|
152
|
-
- Verify the status indicator shows "Connected"
|
|
153
|
-
|
|
154
|
-
## Resources
|
|
155
|
-
|
|
156
|
-
- [AT Protocol Documentation](https://atproto.com)
|
|
157
|
-
- [XRPC Specification](https://atproto.com/specs/xrpc)
|
|
158
|
-
- [Bluesky Developer Resources](https://docs.bsky.app)
|
|
159
|
-
|
|
160
|
-
---
|
|
161
|
-
|
|
162
|
-
**Note**: This extension does not collect, store, or transmit any data outside of your local machine. All request handling, session management, and data processing occurs entirely under your control.
|
|
163
|
-
|
|
164
|
-
## License
|
|
165
|
-
|
|
166
|
-
MIT License
|
|
15
|
+
⬆️ H3 MD heading
|