-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrequest.py
More file actions
executable file
·62 lines (50 loc) · 1.43 KB
/
Copy pathrequest.py
File metadata and controls
executable file
·62 lines (50 loc) · 1.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import socket
import struct
import json
from typing import Any
proxy = {
"url": ('127.0.0.1', 1081)
}
def str2bytes(string: str):
return bytes(string, "utf8")
def obj2bytes(obj : Any):
s = json.dumps(obj)
return str2bytes(s)
# bytes("\uxxx", "unicode")
# SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: truncated \uXXXX escape
def requestDirect(address: tuple, options: dict = {}):
sock = socket.socket()
# des = proxy['url']
des = address
sock.connect(des)
print("connected", des)
data = b'aaa'
pData = obj2bytes(address) + data
sock.send(pData)
print("sent", pData)
result = sock.recv(1024)
print("received", result)
def request(address: tuple, options: dict = {}):
sock = socket.socket()
des = proxy['url']
sock.connect(des)
print("connected", des)
# 1. init stage
sock.send(b'\x00\x00\x05\x00')
result = sock.recv(10)
print("init stage received", result)
# 1. addr stage
data = obj2bytes(address)
# data = data + b'\n'
sock.send(data)
result = sock.recv(1024)
# why result = sock.recv(10) will throw error (SOCK_EMPTY_DATA_TRY[sock] > e)?
print("addr stage received", result)
data = b'aaa'
pData = data
sock.send(pData)
print("sent", pData)
result = sock.recv(1024)
print("received", result)
# requestDirect(('127.0.0.1', 8001))
request(('127.0.0.1', 8001))