python自定义websocket包headers请求头
有一种反爬手段“检测headers请求头中字段的排序”,websocket方式发请求也不例外。
python实现websocket连接,可以使用py包websocket-client
安装
pip install websocket-client
使用
import websocket
def on_message(ws, message):
print(ws)
print(message)
def on_error(ws, error):
print(ws)
print(error)
def on_close(ws):
print(ws)
print("### closed ###")
websocket.enableTrace(True)
ws = websocket.WebSocketApp("ws://127.0.0.1:8888/track",
on_message=on_message,
on_error=on_error,
on_close=on_close)
ws.run_forever()
请求测试默认会添加请求头
如何修改并固定排序规则,重写get_handshake_headers函数
from websocket import _handshake
def get_handshake_headers(resource, url, host, port, options):
headers = [GET /api/challenge64 HTTP/1.1, Host: www.python-spider.com, Connection: Upgrade,
Pragma: no-cache, Cache-Control: no-cache,
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/113.0.0.0 Safari/537.36,
Upgrade: websocket, Origin: https://www.python-spider.com, Sec-WebSocket-Version: 13,
Accept-Encoding: gzip, deflate, br, Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,
Cookie: sessionid=sm85gembpmofo5mhzustgiwgcwkgk5dm;, Sec-WebSocket-Key: y1H/4iwgf/4st9XYL0j+mg==,
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits, , ]
key = y1H/4iwgf/4st9XYL0j+mg==
return headers, key
_handshake._get_handshake_headers = get_handshake_headers
测试
大功告成!
下一篇:
数组名arr与&arr之间的关系
