[17920] 2021-03-12_projectdiscovery之httpx源码学习.

文档创建者:s7ckTeam
浏览次数:2
最后更新:2025-01-18
2021-03-12_projectdiscovery之httpx源码学习.md p r o j e c t d i s c o v e r y h t t p x . m d   w 8 a y   H a c k i n g   2 0 2 1 - 0 3 - 1 2 h t t p x   i s   a   f a s t   a n d   m u l t i - p u r p o s e   H T T P   t o o l k i t   a l l o w s   t o   r u n   m u l t i p l e   p r o b e r s   u s i n g   r e t r y a b l e h t t p   l i b r a r y ,   i t   i s   d e s i g n e d   t o   m a i n t a i n   t h e   r e s u l t r e l i a b i l i t y   w i t h   i n c r e a s e d   t h r e a d s . h t t p x h t t p h t t p s : / / g i t h u b . c o m / p r o j e c t d i s c o v e r y / h t t p x p y t h o n
g o h t t p g o h t t p x 1 .   i m p o r t   r e q u e s t s 2 .   u r l   =   " h t t p s : / / x . h a c k i n g 8 . c o m " 3 .   r   =   r e q u e s t s . g e t ( u r l ) 4 .   r e s p   =   r . t e x t 5 .   s t a t u s _ c o d e   =   r . s t a t u s _ c o d e 1 .   . 2 .     c m d 3 .           h t t p x   #   4 .     c o m m o n   #   5 .           c u s t o m h e a d e r   #   h e a d e r 6 .           c u s t o m p o r t s   #   7 .           f i l e u t i l   #   8 .           h t t p u t i l z   #   h t t p 9 .           h t t p x   #   1 0 .           i p u t i l   #   i p 1 1 .           s l i c e   #   g o 1 2 .           s t r i n g z   #   s t r i n g 1 3 .     i n t e r n a l   #   1 4 .           r u n n e r 1 5 .     s c r i p t s   #   1 6 .     s t a t i c   #   c m d / h t t p x / h t t p x . g o
2 .   7 .   1 1 .   1 7 .   2 0 .   , G o h t t p g o h t t p x 使 1 .   p a c k a g e   m a i n 3 .   i m p o r t   ( 4 .           " g i t h u b . c o m / p r o j e c t d i s c o v e r y / g o l o g g e r " 5 .           " g i t h u b . c o m / p r o j e c t d i s c o v e r y / h t t p x / i n t e r n a l / r u n n e r " 6 .   ) 8 .   f u n c   m a i n ( )   { 9 .           / /   1 0 .           o p t i o n s   : =   r u n n e r . P a r s e O p t i o n s ( ) 1 2 .           / /   1 3 .           r u n ,   e r r   : =   r u n n e r . N e w ( o p t i o n s ) 1 4 .           i f   e r r   ! =   n i l   { 1 5 .                   g o l o g g e r . F a t a l f ( " C o u l d   n o t   c r e a t e   r u n n e r :   % s n " ,   e r r ) 1 6 .           } 1 8 .           / /   1 9 .           r u n . R u n E n u m e r a t i o n ( ) 2 1 .           / /   2 2 .           r u n . C l o s e ( ) 2 3 .   } 线 h t t p s : / / g i t h u b . c o m / r e m e h / s i z e d w a i t g r o u p
使 使 , 使 p r o j e c t d i s c o v e r 使 使 使 w g . A d d ( ) w g . D o n e ( ) n u c l e i s i z e d w a i t g r o u p g o . u b e r . o r g / r a t e l i m i t
2 .   6 .   9 .   1 2 .   2 1 .   h t t p x h t t p C d n   c h e c k 1 .   p a c k a g e   m a i n 3 .   i m p o r t   ( 4 .           " f m t " 5 .           " t i m e " 7 .           " g o . u b e r . o r g / r a t e l i m i t " 8 .   ) 1 0 .   f u n c   m a i n ( )   { 1 1 .           r l   : =   r a t e l i m i t . N e w ( 1 )   / /   p e r   s e c o n d 1 3 .           p r e v   : =   t i m e . N o w ( ) 1 4 .           f o r   i   : =   0 ;   i   <   1 0 ;   i + +   { 1 5 .                   n o w   : =   r l . T a k e ( )   / /   1 6 .                   i f   i   >   0   { 1 7 .                           f m t . P r i n t l n ( i ,   n o w . S u b ( p r e v ) ) 1 8 .                   } 1 9 .                   p r e v   =   n o w 2 0 .           } 2 2 .   } T a k e ( ) c o m m o n / h t t p x c o m m o n / h t t p x / c d n . g o n a a b u
  h t t p s : / / x . h a c k i n g 8 . c o m / p o s t - 4 0 6 . h t m l c d n C D N i p i p i p C S P h e a d e r H T T P 2 . 0 h t t p x n a a b u g i t h u b . c o m / p r o j e c t d i s c o v e r y / c d n c h e c k c o m m o n / h t t p x / c s p . g o 1 .   / /   C S P H e a d e r s   i s   a n   i n c o m p l e t e   l i s t   o f   m o s t   c o m m o n   C S P   h e a d e r s 2 .   v a r   C S P H e a d e r s   [ ] s t r i n g   =   [ ] s t r i n g { 3 .           " C o n t e n t - S e c u r i t y - P o l i c y " ,                               / /   s t a n d a r d 4 .           " C o n t e n t - S e c u r i t y - P o l i c y - R e p o r t - O n l y " ,       / /   s t a n d a r d 5 .           " X - C o n t e n t - S e c u r i t y - P o l i c y - R e p o r t - O n l y " ,   / /   n o n   -   s t a n d a r d 6 .           " X - W e b k i t - C s p - R e p o r t - O n l y " ,                             / /   n o n   -   s t a n d a r d 7 .   } h t t p 2 . 0 1 .   h t t p x . c l i e n t 2   =   & h t t p . C l i e n t { 2 .                   T r a n s p o r t :   & h t t p 2 . T r a n s p o r t { 3 .                           T L S C l i e n t C o n f i g :   & t l s . C o n f i g { 4 .                                   I n s e c u r e S k i p V e r i f y :   t r u e , 5 .                           } , 6 .                           A l l o w H T T P :   t r u e , 7 .                   } , 8 .                   T i m e o u t :   h t t p x . O p t i o n s . T i m e o u t , 9 .           }
P i p e l i n e   h t t p   1 . 1 3 .   6 .   2 .   1 0 .   1 .   G E T   /   H T T P / 1 . 1 2 .   H O S T :   1 2 7 . 0 . 0 . 1 4 .   G E T   /   H T T P / 1 . 1 5 .   H O S T :   1 2 7 . 0 . 0 . 1 7 .   G E T   /   H T T P / 1 . 1 8 .   H O S T :   1 2 7 . 0 . 0 . 1 1 .   p a c k a g e   h t t p x 3 .   i m p o r t   ( 4 .           " c r y p t o / t l s " 5 .           " f m t " 6 .           " n e t " 7 .           " s t r i n g s " 8 .           " t i m e " 9 .   ) 1 1 .   / /   S u p p o r t P i p e l i n e   c h e c k s   i f   t h e   t a r g e t   h o s t   s u p p o r t s   H T T P 1 . 1   p i p e l i n i n g   b y   s e n d i n g   x   p r o b e s 1 2 .   / /   a n d   r e a d i n g   b a c k   r e s p o n s e s   e x p e c t i n g   a t   l e a s t   2   w i t h   H T T P / 1 . 1   o r   H T T P / 1 . 0 1 3 .   f u n c   ( h   * H T T P X )   S u p p o r t P i p e l i n e ( p r o t o c o l ,   m e t h o d ,   h o s t   s t r i n g ,   p o r t   i n t )   b o o l   { 1 4 .           a d d r   : =   h o s t 1 5 .           i f   p o r t   = =   0   { 1 6 .                   p o r t   =   8 0 1 7 .                   i f   p r o t o c o l   = =   " h t t p s "   { 1 8 .                           p o r t   =   4 4 3 1 9 .                   } 2 0 .           } 2 1 .           i f   p o r t   >   0   { 2 2 .                   a d d r   =   f m t . S p r i n t f ( " % s : % d " ,   h o s t ,   p o r t )
4 4 .   4 8 .   5 6 .   2 3 .           } 2 4 .           / /   d u m m y   m e t h o d   w h i l e   a w a i t i n g   f o r   f u l l   r a w h t t p   i m p l e m e n t a t i o n 2 5 .           d u m m y R e q   : =   f m t . S p r i n t f ( " % s   /   H T T P / 1 . 1 n H o s t :   % s n n " ,   m e t h o d ,   a d d r ) 2 6 .           c o n n ,   e r r   : =   p i p e l i n e D i a l ( p r o t o c o l ,   a d d r ) 2 7 .           i f   e r r   ! =   n i l   { 2 8 .                   r e t u r n   f a l s e 2 9 .           } 3 0 .           / /   s e n d   s o m e   p r o b e s 3 1 .           n p r o b e s   : =   1 0 3 2 .           f o r   i   : =   0 ;   i   <   n p r o b e s ;   i + +   { 3 3 .                   i f   _ ,   e r r   =   c o n n . W r i t e ( [ ] b y t e ( d u m m y R e q ) ) ;   e r r   ! =   n i l   { 3 4 .                           r e t u r n   f a l s e 3 5 .                   } 3 6 .           } 3 7 .           g o t R e p l i e s   : =   0 3 8 .           r e p l y   : =   m a k e ( [ ] b y t e ,   1 0 2 4 ) 3 9 .           f o r   i   : =   0 ;   i   <   n p r o b e s ;   i + +   { 4 0 .                   e r r   : =   c o n n . S e t R e a d D e a d l i n e ( t i m e . N o w ( ) . A d d ( 1   *   t i m e . S e c o n d ) ) 4 1 .                   i f   e r r   ! =   n i l   { 4 2 .                           r e t u r n   f a l s e 4 3 .                   } 4 5 .                   i f   _ ,   e r r   : =   c o n n . R e a d ( r e p l y ) ;   e r r   ! =   n i l   { 4 6 .                           b r e a k 4 7 .                   } 4 9 .                   / /   T h e   c h e c k   i s   v e r y   n a i v e ,   b u t   i t   w o r k s   m o s t   o f   t h e   t i m e s 5 0 .                   f o r   _ ,   s   : =   r a n g e   s t r i n g s . S p l i t ( s t r i n g ( r e p l y ) ,   " n n " )   { 5 1 .                           i f   s t r i n g s . C o n t a i n s ( s ,   " H T T P / 1 . 1 " )   | |   s t r i n g s . C o n t a i n s ( s ,   " H T T P / 1 . 0 " )   { 5 2 .                                   g o t R e p l i e s + + 5 3 .                           } 5 4 .                   } 5 5 .           } 5 7 .           / /   e x p e c t   a t   l e a s t   2   r e p l i e s
6 0 .   6 6 .   T i t l e h t t p x t i t l e 5 8 .           r e t u r n   g o t R e p l i e s   > =   2 5 9 .   } 6 1 .   f u n c   p i p e l i n e D i a l ( p r o t o c o l ,   a d d r   s t r i n g )   ( n e t . C o n n ,   e r r o r )   { 6 2 .           / /   h t t p 6 3 .           i f   p r o t o c o l   = =   " h t t p "   { 6 4 .                   r e t u r n   n e t . D i a l ( " t c p " ,   a d d r ) 6 5 .           } 6 7 .           / /   h t t p s 6 8 .           r e t u r n   t l s . D i a l ( " t c p " ,   a d d r ,   & t l s . C o n f i g { I n s e c u r e S k i p V e r i f y :   t r u e } ) 6 9 .   }
m e t a g b k p r H T T P   g o t l s
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则