Accesser icon indicating copy to clipboard operation
Accesser copied to clipboard

HTTPS (proxy) protocol

Open gomggx opened this issue 6 years ago • 2 comments

accesser work for Firefox 66.0.3 (with SwitchyOmega), but not work for chrome 74.0.3724.8 64bit (with SwitchyOmega). here is the debug message:

D:\Projects\Accesser>python accesser.py
Accesser v0.6.1  Copyright (C) 2018-2019  URenko
2019-04-27 13:14:33 INFO     Accesser.DoH: Selecting DoH server...
2019-04-27 13:14:33 INFO     Accesser: server started at 127.0.0.1:7655
2019-04-27 13:14:38 INFO     Accesser.DoH: Auto selected DoH server: sdns.233py.com
 "ÚÚÀ+À/À,À0̨̩ÀÀ œ  / 5 r:   ü'Ýô4æZç¨Ôe²BýNª7²¶ÞÁEAiÏù »ˆh{¿9LûßWk§1uéÊڂCÊ[ÁO3på\
2019-04-27 13:14:44 DEBUG    Accesser:   üŸïïòØeRhôiüêþ8×0©U‡ç¸‰6F ßp8aülD`Kp Ž(hYbâ¨ÿ·õ Éòñ "êêÀ+À/À,À0̨̩ÀÀ œ  / 5
2019-04-27 13:14:44 DEBUG    Accesser:   ü‘©ýMiÌ;¼:ȍãk4Ž@]!…^ðòˆŠº(T˜‰
R©Y[¬«;¼7#8e³‡ÑvŒGM  ªTÇö8ãO*Ág€‡Óø³ï‹˜:ËtÒä·] "ÊÊÀ+À/À,À0̨̩ÀÀ œ  / 5
2019-04-27 13:14:45 DEBUG    Accesser:   üÂa†õß —]çâ}ð˜˜Ú`vi›…¥sÌ[bŒ?2• òñ8ë 6 ÈÊL'xgÌ¥ñr‚?⩀^K2¬`UE¥Œ "**À+À/À,À0̨̩ÀÀ œ  / 5
2019-04-27 13:14:47 DEBUG    Accesser:   üãaŽÚý\]/µÁöü¼®È²·bcՅßg±¿D?òý ×gšàò©œùOI[ÌT~¨¦}ŸÍß<ᓗΠêˆã+ "úúÀ+À/À,À0̨̩ÀÀ œ  / 5
qÔBm\NðcPJH¨²¼.ÀX €<¤ò "cesser:   üe0¢7@ù~yÊZ¢vÀB-Rã~Ë'ˏU`ícÉ| ž´Ä
2019-04-27 13:14:54 DEBUG    Accesser:   üN¾Ï1ãËQs`ûŸä®£h;A²TQ+#®Ç®ŒÐp" ³Ù‚ÁË6°ÐÞNK_t/ð›=°ÈÙD¯BÝÌ-.œ¼ "
2019-04-27 13:14:56 DEBUG    Accesser:   ülÕÝVÓúÎMtl^ñðˆaäkøJëøÚ¿+ÆÖ"†Kò ;÷gØÜ€lɳ#”RÞ:«.ÎïÊI£h½š9Ú§Fï "ÊÊÀ+À/À,À0̨̩ÀÀ œ  / 5
2019-04-27 13:14:57 WARNING  aioh2: Remote peer sent GOAWAY [ERR: ErrorCodes.NO_ERROR], disconnect now.
2019-04-27 13:15:01 DEBUG    Accesser:   üÆ,üáøÞS©Ä³¤âŽD’Q  =ªÒ‚ˆhöâ1R¹ ¬—É'òА!Ûü8TÿâFG×ñïújDãýÑôP "ššÀ+À/À,À0̨̩ÀÀ œ  / 5
2019-04-27 13:15:17 DEBUG    Accesser:   üÑnŒžÞÓ}"úSœÓZ¢¸×wžT|·Ív‚ ô[g @ôÙ²µ¦X¡Ï‘‹å¡3Õui¥ª5§»¶xà"êêÀ+À/À,À0̨̩ÀÀ œ  / 5
¬Ž8RÖÌ "**À+À/À,À0̨̩ÀÀ œ  / 5  üj­š
2019-04-27 13:15:19 DEBUG    Accesser:   ü{Q불ßcł»âùß­;0ô£Ü—ªˆëo£8( !%?lõ[+î™;~}Ù_Ô¬T”â
2019-04-27 13:15:19 DEBUG    Accesser:   üI—•¼‚µ¸;_òƄœ\+¯›47}Ô._ý”m ÔôhªIYÆÌ.5aT4Ô[Å+9pjšk "
2019-04-27 13:15:19 DEBUG    Accesser:   üÅ®—Fɹ±é iF–¾k&¸Óe¨ùЇïZ»Ý Üènë³æ´ò\É-ýµÖ‡ooj Äïl "zzÀ+À/À,À0̨̩ÀÀ œ  / 5
 *Ä5‡/ÙUY坢éîIkÜÌU.ñq†5`v&Q­esser:   ü*1,&yÀٷΤtuÕÙäs5C©z:©‘ˆ
2019-04-27 13:15:22 DEBUG    Accesser:   üƒƒº2c@Þ0Ùe¬àšo1#˲–j*Ã¼1¶þ z­,_@·"Ÿi㚔±.ȕ%Àþ½†µÊ5Ñ ê "êêÀ+À/À,À0̨̩ÀÀ œ  / 5
2019-04-27 13:15:22 DEBUG    Accesser:   üì,~c¦[$F¼ú|KŠIøÝË&®°} Ä6}µúP’[ ¤kѶ@ÛY÷DçLG¬H@öÉÖV]Ût¼Ã¯MÍú|Ï "úúÀ+À/À,À0̨̩ÀÀ œ  / 5
2019-04-27 13:15:25 DEBUG    Accesser:   üi=6:ՄÜd¤[µdÌûü3À1‚ÑQøœziøB3 0Ðeœ`JUVÒ±=–¶\;ÿ—zטmËC‹ñ÷òO "ZZÀ+À/À,À0̨̩ÀÀ œ  / 5
2019-04-27 13:15:25 DEBUG    Accesser:   ür{³X¶Hq`—/਌7XÏ­¹ôYiÕI ^jâ ÓSÚB¸®¸Çhͨèâ[³_¢Æ‹þƒ¥ç¶˜R‹ñ "ººÀ+À/À,À0̨̩ÀÀ œ  / 5
2019-04-27 13:15:26 DEBUG    Accesser:   ü#ß¡¦ÛpA¬š¿ÌR)µsé-báëX}<fm l6X*2Ž/šõbêÓ|¯Üöé½,º¸ûá… "
2019-04-27 13:15:26 DEBUG    Accesser:   üGšvGq(ðaQ¢vÚ8Âå陂DuA¥ŒF¿IÝ´ pº‚ýcWØo%}.SiK­©ßF%~ôð<iÍ4Éø "**À+À/À,À0̨̩ÀÀ œ  / 5
2019-04-27 13:15:31 DEBUG    Accesser:   ü•D#/E›¿±yÉ)™a dpT¦¬˜S¡öNÒhxBVž Á~WgZ€•a5ÝS¡
2019-04-27 13:15:31 DEBUG    Accesser:   üزÎÖ÷Pq¡ÈËËpÕ=SֆÿVG‹™
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 50372)
Traceback (most recent call last):
  File "D:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\socketserver.py", line 650, in process_request_thread
    self.finish_request(request, client_address)
  File "D:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\socketserver.py", line 360, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "D:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\socketserver.py", line 720, in __init__
    self.handle()
  File "accesser.py", line 194, in handle
    if not self.parse_host():
  File "accesser.py", line 103, in parse_host
    command, path = words[:2]
ValueError: not enough values to unpack (expected 2, got 1)
----------------------------------------
2019-04-27 13:15:33 DEBUG    Accesser:   üégz!Ð0YO5¼6áf_Pvú™k"Æ<ŸYú¬Ÿ Ðùƒ”âúë:lÜûXú£ZÕ]6?’€7šÓU½´ "
2019-04-27 13:15:37 DEBUG    Accesser:   üLx=ŒeWÈeñHÆ= Áò1÷VÇF%\ì×%}© C¹Îë*£i² DZ¼®gÉkæ5üWŽë4K²„ "ªªÀ+À/À,À0̨̩ÀÀ œ  / 5
3¾~ôÐ7ýyã-_&§rÆO\ máBšù|Ì$òÊÚӛ¿jÚã¬núÄ"õ{"c‚$ÿ "úúÀ+À/À,À0̨̩ÀÀ œ  / 5

gomggx avatar Apr 27 '19 05:04 gomggx

so

Solution:

use HTTP as protocol, also for HTTPS.

Technical details:

These garbled characters are the head of HTTPS.

In fact, the HTTP (proxy) protocol will send a CONNECT head first, then start HTTPS handshake (for HTTPS traffic). Most proxy applications use this. But the HTTPS (proxy) protocol will start HTTPS handshake directly, thus we get the wrong head.

To avoid the problem, we may add auto-detection for these two protocols. But it need some time as we use CONNECT head to detect the remote server now.

URenko avatar May 27 '19 07:05 URenko

Two issues in wrap SSLSocket instance: https://github.com/SeaHOH/extproxy/blob/master/extproxy/ssl_wrap_socket.py

SeaHOH avatar Dec 12 '19 15:12 SeaHOH