Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
R
requests
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wangmingming
requests
Commits
d313f60f
Commit
d313f60f
authored
May 24, 2023
by
wangmingming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
组合session和request的 header cookie redirect 等
parent
3fd88b99
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
41 additions
and
32 deletions
+41
-32
sessions.go
sessions.go
+40
-31
Requests.go
url/Requests.go
+1
-1
No files found.
sessions.go
View file @
d313f60f
...
...
@@ -8,13 +8,11 @@ import (
"encoding/json"
"github.com/andybalholm/brotli"
http
"github.com/bogdanfinn/fhttp"
"github.com/bogdanfinn/fhttp/cookiejar"
tls_client
"github.com/bogdanfinn/tls-client"
"github.com/wmm1996528/requests/models"
"github.com/wmm1996528/requests/tls"
"github.com/wmm1996528/requests/url"
"io"
"io/ioutil"
url2
"net/url"
"strings"
)
...
...
@@ -25,18 +23,15 @@ func NewSession(tlsVersion tls.TlsVersion) *Session {
}
type
Session
struct
{
Params
*
url
.
Params
Headers
*
url
.
Header
Cookies
*
cookiejar
.
Jar
Params
map
[
string
]
string
Headers
map
[
string
]
string
Cookies
map
[
string
]
string
Auth
[]
string
Prox
ies
string
Prox
y
string
Verify
bool
Cert
[]
string
Ja3
string
MaxRedirects
int
request
*
url
.
Request
tlsVersion
int
Client
tls_client
.
HttpClient
AllowRedirects
bool
}
// 预请求处理
...
...
@@ -99,18 +94,6 @@ func (s *Session) Do(method string, request *url.Request) (*models.Response, err
// 初始化个新的
s
.
Client
=
tls
.
NewClient
(
request
.
TlsProfile
)
}
// 处理cookie
if
request
.
Cookies
!=
nil
{
var
cks
[]
*
http
.
Cookie
for
k
,
v
:=
range
request
.
Cookies
{
cks
=
append
(
cks
,
&
http
.
Cookie
{
Name
:
k
,
Value
:
v
,
})
}
uri
,
_
:=
url2
.
Parse
(
request
.
Url
)
s
.
Client
.
SetCookies
(
uri
,
cks
)
}
request
.
Method
=
method
preq
,
err
:=
s
.
PreRequest
(
request
)
...
...
@@ -134,13 +117,39 @@ func (s *Session) PreRequest(request *url.Request) (*http.Request, error) {
if
err
!=
nil
{
return
nil
,
err
}
// * 处理cookie
if
request
.
Cookies
!=
nil
{
var
cks
[]
*
http
.
Cookie
for
k
,
v
:=
range
request
.
Cookies
{
cks
=
append
(
cks
,
&
http
.
Cookie
{
Name
:
k
,
Value
:
v
,
})
}
uri
,
_
:=
url2
.
Parse
(
request
.
Url
)
s
.
Client
.
SetCookies
(
uri
,
cks
)
}
// * 处理代理
if
request
.
Proxy
!=
""
{
s
.
Client
.
SetProxy
(
request
.
Proxy
)
}
else
{
if
s
.
Proxy
!=
""
{
s
.
Client
.
SetProxy
(
s
.
Proxy
)
}
}
// * 是否自动跳转
s
.
Client
.
SetFollowRedirect
(
request
.
AllowRedirects
)
// * 组合header
var
headers
map
[
string
]
string
if
request
.
Headers
!=
nil
{
headers
=
request
.
Headers
.
GetAll
()
}
else
{
if
len
(
s
.
Headers
)
!=
0
{
headers
=
s
.
Headers
}
else
{
headers
=
url
.
DefaultHeaders
}
}
for
k
,
v
:=
range
headers
{
req
.
Header
.
Set
(
k
,
v
)
}
...
...
@@ -227,7 +236,7 @@ func decodeGZip(content *[]byte) error {
return
err
}
defer
r
.
Close
()
*
content
,
err
=
io
util
.
ReadAll
(
r
)
*
content
,
err
=
io
.
ReadAll
(
r
)
if
err
!=
nil
{
return
err
}
...
...
@@ -242,7 +251,7 @@ func decodeDeflate(content *[]byte) error {
}
r
:=
flate
.
NewReader
(
bytes
.
NewReader
(
*
content
))
defer
r
.
Close
()
*
content
,
err
=
io
util
.
ReadAll
(
r
)
*
content
,
err
=
io
.
ReadAll
(
r
)
if
err
!=
nil
{
return
err
}
...
...
@@ -256,7 +265,7 @@ func decodeBrotli(content *[]byte) error {
return
err
}
r
:=
brotli
.
NewReader
(
bytes
.
NewReader
(
*
content
))
*
content
,
err
=
io
util
.
ReadAll
(
r
)
*
content
,
err
=
io
.
ReadAll
(
r
)
if
err
!=
nil
{
return
err
}
...
...
url/Requests.go
View file @
d313f60f
...
...
@@ -22,10 +22,10 @@ type Request struct {
Auth
[]
string
Timeout
time
.
Duration
AllowRedirects
bool
Proxies
string
Verify
bool
ForceHTTP1
bool
TlsProfile
tls
.
TlsVersion
Method
string
Url
string
Proxy
string
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment