-
-
Notifications
You must be signed in to change notification settings - Fork 173
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Bug]: Need to follow Cookies' domain rules #75
Labels
bug
Something isn't working
Comments
@hzhan147 here is a plain python implementation of your use case without using the tls_client package your are mentioning. TLDR: seem like you want to open that issue here: https://github.com/FlorianREGAZ/Python-Tls-Client/issues import ctypes
import json
# load the tls-client shared package for your OS you are currently running your python script (i'm running on mac)
library = ctypes.cdll.LoadLibrary('./../dist/tls-client-xgo-1.6.0-linux-amd64.so')
# extract the exposed request function from the shared package
request = library.request
request.argtypes = [ctypes.c_char_p]
request.restype = ctypes.c_char_p
addCookiesToSession = library.addCookiesToSession
addCookiesToSession.argtypes = [ctypes.c_char_p]
addCookiesToSession.restype = ctypes.c_char_p
requestPayload = {
"tlsClientIdentifier": "chrome_105",
"sessionId": "my-session-id",
"followRedirects": True,
"headers": {
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36",
"accept-encoding": "gzip, deflate, br",
"accept-language": "de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7"
},
"headerOrder": [
"accept",
"user-agent",
"accept-encoding",
"accept-language"
],
"requestUrl": "https://httpbin.org/cookies/set/testcookie/12345",
"requestMethod": "GET",
}
# this is a pointer to the response
response = request(json.dumps(requestPayload).encode('utf-8'))
# we dereference the pointer to a byte array
response_bytes = ctypes.string_at(response)
# convert our byte array to a string (tls client returns json)
response_string = response_bytes.decode('utf-8')
# convert response string to json
response_object = json.loads(response_string)
# print out output
print(response_object)
requestPayload = {
"tlsClientIdentifier": "chrome_105",
"sessionId": "my-session-id",
"followRedirects": True,
"headers": {
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36",
"accept-encoding": "gzip, deflate, br",
"accept-language": "de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7"
},
"headerOrder": [
"accept",
"user-agent",
"accept-encoding",
"accept-language"
],
"requestUrl": "https://httpbin.org/cookies/set/abc/67890",
"requestMethod": "GET",
}
# this is a pointer to the response
response = request(json.dumps(requestPayload).encode('utf-8'))
# we dereference the pointer to a byte array
response_bytes = ctypes.string_at(response)
# convert our byte array to a string (tls client returns json)
response_string = response_bytes.decode('utf-8')
# convert response string to json
response_object = json.loads(response_string)
# print out output
print(response_object)
cookiePayload = {
"sessionId": "my-session-id",
"url": "https://example.org",
"cookies": [{
"name": "test123",
"value": "test",
"domain": "example.org",
}]
}
cookieResponse = addCookiesToSession(json.dumps(cookiePayload).encode('utf-8'))
# we dereference the pointer to a byte array
cookieResponse_bytes = ctypes.string_at(cookieResponse)
# convert our byte array to a string (tls client returns json)
cookieResponse_string = cookieResponse_bytes.decode('utf-8')
# convert response string to json
cookieResponse_object = json.loads(cookieResponse_string)
# print out output
print(cookieResponse_object)
requestPayload = {
"tlsClientIdentifier": "chrome_105",
"sessionId": "my-session-id",
"followRedirects": True,
"headers": {
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36",
"accept-encoding": "gzip, deflate, br",
"accept-language": "de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7"
},
"headerOrder": [
"accept",
"user-agent",
"accept-encoding",
"accept-language"
],
"requestUrl": "https://httpbin.org/headers",
"requestMethod": "GET",
}
# this is a pointer to the response
response = request(json.dumps(requestPayload).encode('utf-8'))
# we dereference the pointer to a byte array
response_bytes = ctypes.string_at(response)
# convert our byte array to a string (tls client returns json)
response_string = response_bytes.decode('utf-8')
# convert response string to json
response_object = json.loads(response_string)
# print out output
print(response_object)
requestPayload = {
"tlsClientIdentifier": "chrome_105",
"sessionId": "my-session-id",
"followRedirects": True,
"headers": {
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36",
"accept-encoding": "gzip, deflate, br",
"accept-language": "de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7"
},
"headerOrder": [
"accept",
"user-agent",
"accept-encoding",
"accept-language"
],
"requestUrl": "https://example.org/headers",
"requestMethod": "GET",
}
# this is a pointer to the response
response = request(json.dumps(requestPayload).encode('utf-8'))
# we dereference the pointer to a byte array
response_bytes = ctypes.string_at(response)
# convert our byte array to a string (tls client returns json)
response_string = response_bytes.decode('utf-8')
# convert response string to json
response_object = json.loads(response_string)
# print out output
print(response_object) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
TLS client version
v1.6.0
System information
Windows 10,
Linux Ubuntu
Issue description
Version: 1.6.0
I am using Python_TLS_Client and found this bug.
Python codes that used this project for requests:
`session = tls_client.Session(
client_identifier="chrome107",
random_tls_extension_order=True
)
session.get('https://httpbin.org/cookies/set/testcookie/12345')
session.get('https://httpbin.org/cookies/set/abc/67890')
print(session.cookies.get_dict())
session.cookies.set("test123", "test", domain="example.org")
res = session.get("https://httpbin.org/headers", proxy="http://localhost:8888")
print(res.text)`
Results from Fiddler inspection:
`Request sent 41 bytes of Cookie data:
`
The correct result should be:
`Request sent X bytes of Cookie data:
`
The 'test123' cookie shouldn't be included in the cookies as the domain was different.
Steps to reproduce / Code Sample
The text was updated successfully, but these errors were encountered: