Skip to content

Commit 8b2e65a

Browse files
committed
Merge remote-tracking branch 'origin'
2 parents 4d50f4e + 98df056 commit 8b2e65a

File tree

6 files changed

+158
-32
lines changed

6 files changed

+158
-32
lines changed

go.mod

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,24 +19,24 @@ require (
1919
github.com/miekg/dns v1.1.68 // indirect
2020
github.com/pkg/errors v0.9.1
2121
github.com/projectdiscovery/asnmap v1.1.1
22-
github.com/projectdiscovery/cdncheck v1.2.12
22+
github.com/projectdiscovery/cdncheck v1.2.13
2323
github.com/projectdiscovery/clistats v0.1.1
24-
github.com/projectdiscovery/dsl v0.8.6
25-
github.com/projectdiscovery/fastdialer v0.4.18
24+
github.com/projectdiscovery/dsl v0.8.7
25+
github.com/projectdiscovery/fastdialer v0.4.19
2626
github.com/projectdiscovery/fdmax v0.0.4
2727
github.com/projectdiscovery/goconfig v0.0.1
2828
github.com/projectdiscovery/goflags v0.1.74
29-
github.com/projectdiscovery/gologger v1.1.62
30-
github.com/projectdiscovery/hmap v0.0.97
29+
github.com/projectdiscovery/gologger v1.1.63
30+
github.com/projectdiscovery/hmap v0.0.98
3131
github.com/projectdiscovery/mapcidr v1.1.97
32-
github.com/projectdiscovery/networkpolicy v0.1.30
32+
github.com/projectdiscovery/networkpolicy v0.1.31
3333
github.com/projectdiscovery/ratelimit v0.0.82
3434
github.com/projectdiscovery/rawhttp v0.1.90
35-
github.com/projectdiscovery/retryablehttp-go v1.0.133
35+
github.com/projectdiscovery/retryablehttp-go v1.1.0
3636
github.com/projectdiscovery/tlsx v1.2.2
37-
github.com/projectdiscovery/useragent v0.0.104
37+
github.com/projectdiscovery/useragent v0.0.105
3838
github.com/projectdiscovery/utils v0.7.3
39-
github.com/projectdiscovery/wappalyzergo v0.2.57
39+
github.com/projectdiscovery/wappalyzergo v0.2.58
4040
github.com/rs/xid v1.6.0
4141
github.com/spaolacci/murmur3 v1.1.0
4242
github.com/stretchr/testify v1.11.1
@@ -129,7 +129,7 @@ require (
129129
github.com/projectdiscovery/freeport v0.0.7 // indirect
130130
github.com/projectdiscovery/gostruct v0.0.2 // indirect
131131
github.com/projectdiscovery/machineid v0.0.0-20240226150047-2e2c51e35983 // indirect
132-
github.com/projectdiscovery/retryabledns v1.0.109 // indirect
132+
github.com/projectdiscovery/retryabledns v1.0.110 // indirect
133133
github.com/refraction-networking/utls v1.7.1 // indirect
134134
github.com/rivo/uniseg v0.4.7 // indirect
135135
github.com/rogpeppe/go-internal v1.12.0 // indirect

go.sum

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -317,14 +317,14 @@ github.com/projectdiscovery/asnmap v1.1.1 h1:ImJiKIaACOT7HPx4Pabb5dksolzaFYsD1kI
317317
github.com/projectdiscovery/asnmap v1.1.1/go.mod h1:QT7jt9nQanj+Ucjr9BqGr1Q2veCCKSAVyUzLXfEcQ60=
318318
github.com/projectdiscovery/blackrock v0.0.1 h1:lHQqhaaEFjgf5WkuItbpeCZv2DUIE45k0VbGJyft6LQ=
319319
github.com/projectdiscovery/blackrock v0.0.1/go.mod h1:ANUtjDfaVrqB453bzToU+YB4cUbvBRpLvEwoWIwlTss=
320-
github.com/projectdiscovery/cdncheck v1.2.12 h1:hS+CW0S2xOBIq7inKLp8u0/714S/t+X52S5iamVkp+U=
321-
github.com/projectdiscovery/cdncheck v1.2.12/go.mod h1:Rc1G0QQdv3F+n003fksivUmTGitvb5+Gf36FpWkPQZw=
320+
github.com/projectdiscovery/cdncheck v1.2.13 h1:6zs4Mn8JV3yKyMoAr857Hf2NLvyOMpOfqCCT2V2OI1Q=
321+
github.com/projectdiscovery/cdncheck v1.2.13/go.mod h1:/OhuZ9T25yXSqU6+oWvmVQ3QFvtew/Tp03u0jM+NJBE=
322322
github.com/projectdiscovery/clistats v0.1.1 h1:8mwbdbwTU4aT88TJvwIzTpiNeow3XnAB72JIg66c8wE=
323323
github.com/projectdiscovery/clistats v0.1.1/go.mod h1:4LtTC9Oy//RiuT1+76MfTg8Hqs7FQp1JIGBM3nHK6a0=
324-
github.com/projectdiscovery/dsl v0.8.6 h1:kwtJn53UtDVX5vzmSmD/vDS8f1sR5yFyQchFd8Y2Oh8=
325-
github.com/projectdiscovery/dsl v0.8.6/go.mod h1:bKSpMqLfeSllWPHlRuw/L0afAUYL2omA7sT6fGj8Nhc=
326-
github.com/projectdiscovery/fastdialer v0.4.18 h1:jM3DlFjpy+NdmEpMpVdPF6J6hT0tDQcaKX0K2MX8xNU=
327-
github.com/projectdiscovery/fastdialer v0.4.18/go.mod h1:zfpqgPL0LmQMxHC9t0np8B7gHHgYwcQ55f8/NJyUPKM=
324+
github.com/projectdiscovery/dsl v0.8.7 h1:LZpSOgET86X92t7E3f2SY8YZQhGiw7yZ38vSa6pK75s=
325+
github.com/projectdiscovery/dsl v0.8.7/go.mod h1:Dqbtd4nPASPtNpHAweIUhCMLo00S2q6oTIgrZ+kyN+4=
326+
github.com/projectdiscovery/fastdialer v0.4.19 h1:MLHwEGM0x0pyltJaNvAVvwc27bnXdZ5mYr50S/2kMEE=
327+
github.com/projectdiscovery/fastdialer v0.4.19/go.mod h1:HGdVsez+JgJ9/ljXjHRplOqkB7og+nqi0nrNWVNi03o=
328328
github.com/projectdiscovery/fdmax v0.0.4 h1:K9tIl5MUZrEMzjvwn/G4drsHms2aufTn1xUdeVcmhmc=
329329
github.com/projectdiscovery/fdmax v0.0.4/go.mod h1:oZLqbhMuJ5FmcoaalOm31B1P4Vka/CqP50nWjgtSz+I=
330330
github.com/projectdiscovery/freeport v0.0.7 h1:Q6uXo/j8SaV/GlAHkEYQi8WQoPXyJWxyspx+aFmz9Qk=
@@ -333,36 +333,36 @@ github.com/projectdiscovery/goconfig v0.0.1 h1:36m3QjohZvemqh9bkJAakaHsm9iEZ2AcQ
333333
github.com/projectdiscovery/goconfig v0.0.1/go.mod h1:CPO25zR+mzTtyBrsygqsHse0sp/4vB/PjaHi9upXlDw=
334334
github.com/projectdiscovery/goflags v0.1.74 h1:n85uTRj5qMosm0PFBfsvOL24I7TdWRcWq/1GynhXS7c=
335335
github.com/projectdiscovery/goflags v0.1.74/go.mod h1:UMc9/7dFz2oln+10tv6cy+7WZKTHf9UGhaNkF95emh4=
336-
github.com/projectdiscovery/gologger v1.1.62 h1:wzKqvL6HQRzf0/PpBEhInZqqL1q4mKe2gFGJeDG3FqE=
337-
github.com/projectdiscovery/gologger v1.1.62/go.mod h1:YWvMSxlHybU3SkFCcWn+driSJ8yY+3CR3g/textnp+Y=
336+
github.com/projectdiscovery/gologger v1.1.63 h1:oboXTekGtbmo9bPAAzkeCeo4EPHAwAdHmknDSAEo/1c=
337+
github.com/projectdiscovery/gologger v1.1.63/go.mod h1:daez34xaA7LTazBb4t+Ccm9/9Kjvlsu4EY033lQdATA=
338338
github.com/projectdiscovery/gostruct v0.0.2 h1:s8gP8ApugGM4go1pA+sVlPDXaWqNP5BBDDSv7VEdG1M=
339339
github.com/projectdiscovery/gostruct v0.0.2/go.mod h1:H86peL4HKwMXcQQtEa6lmC8FuD9XFt6gkNR0B/Mu5PE=
340-
github.com/projectdiscovery/hmap v0.0.97 h1:rfJt44HOaK5/zkeQXXoDl5tCuiUpc0chuYN43QPnm+E=
341-
github.com/projectdiscovery/hmap v0.0.97/go.mod h1:x7K+2xTDMYLilpZjnnaXufesVVUSfxttXgqsuYvQJVk=
340+
github.com/projectdiscovery/hmap v0.0.98 h1:XxYIi7yJCNiDAKCJXvuY9IBM5O6OgDgx4XHgKxkR4eg=
341+
github.com/projectdiscovery/hmap v0.0.98/go.mod h1:bgN5fuZPJMj2YnAGEEnCypoifCnALJixHEVQszktQIU=
342342
github.com/projectdiscovery/machineid v0.0.0-20240226150047-2e2c51e35983 h1:ZScLodGSezQVwsQDtBSMFp72WDq0nNN+KE/5DHKY5QE=
343343
github.com/projectdiscovery/machineid v0.0.0-20240226150047-2e2c51e35983/go.mod h1:3G3BRKui7nMuDFAZKR/M2hiOLtaOmyukT20g88qRQjI=
344344
github.com/projectdiscovery/mapcidr v1.1.97 h1:7FkxNNVXp+m1rIu5Nv/2SrF9k4+LwP8QuWs2puwy+2w=
345345
github.com/projectdiscovery/mapcidr v1.1.97/go.mod h1:9dgTJh1SP02gYZdpzMjm6vtYFkEHQHoTyaVNvaeJ7lA=
346-
github.com/projectdiscovery/networkpolicy v0.1.30 h1:XvzvRxldndEk7eRwSvuJ4xtGSzSgwZsrZB9VuUEfR1A=
347-
github.com/projectdiscovery/networkpolicy v0.1.30/go.mod h1:/aJZmi2/d41O67wBcTkee/LWhyJnlKxCuWe6cUN2SNU=
346+
github.com/projectdiscovery/networkpolicy v0.1.31 h1:mE6iJeYOSql8gps/91vwiztE/kEHe5Im8oUO5Mkj9Zg=
347+
github.com/projectdiscovery/networkpolicy v0.1.31/go.mod h1:5x4rGh4XhnoYl9wACnZyrjDGKIB/bQqxw2KrIM5V+XU=
348348
github.com/projectdiscovery/ratelimit v0.0.82 h1:rtO5SQf5uQFu5zTahTaTcO06OxmG8EIF1qhdFPIyTak=
349349
github.com/projectdiscovery/ratelimit v0.0.82/go.mod h1:z076BrLkBb5yS7uhHNoCTf8X/BvFSGRxwQ8EzEL9afM=
350350
github.com/projectdiscovery/rawhttp v0.1.90 h1:LOSZ6PUH08tnKmWsIwvwv1Z/4zkiYKYOSZ6n+8RFKtw=
351351
github.com/projectdiscovery/rawhttp v0.1.90/go.mod h1:VZYAM25UI/wVB3URZ95ZaftgOnsbphxyAw/XnQRRz4Y=
352-
github.com/projectdiscovery/retryabledns v1.0.109 h1:2tDpoTRFlWmOsiH5Z/qVGrOzlB/hUO9PF2s6ol9BWcQ=
353-
github.com/projectdiscovery/retryabledns v1.0.109/go.mod h1:yGKECPB69MWT1EZwWj5zejZflgP+KUDd5dBYZm3igxs=
354-
github.com/projectdiscovery/retryablehttp-go v1.0.133 h1:uAIGwsRelrS1Ulelyp9qLtZRDTFHixw4O0cUQWLhTJQ=
355-
github.com/projectdiscovery/retryablehttp-go v1.0.133/go.mod h1:9DU57ezv5cfZSWw/m5XFDTMjy1yKeMyn1kj35lPlcfM=
352+
github.com/projectdiscovery/retryabledns v1.0.110 h1:24p1PzWBdfsRnGsBf6ZxXPzvK0sYaL4q/ju4+2OhJzU=
353+
github.com/projectdiscovery/retryabledns v1.0.110/go.mod h1:GFj5HjxfaGrZeoYf79zI/R99XljBNjmOqNvwOqPepRU=
354+
github.com/projectdiscovery/retryablehttp-go v1.1.0 h1:uYp3EnuhhamTwvG41X6q6TAc/SHEO9pw9CBWbRASIQk=
355+
github.com/projectdiscovery/retryablehttp-go v1.1.0/go.mod h1:9DU57ezv5cfZSWw/m5XFDTMjy1yKeMyn1kj35lPlcfM=
356356
github.com/projectdiscovery/stringsutil v0.0.2 h1:uzmw3IVLJSMW1kEg8eCStG/cGbYYZAja8BH3LqqJXMA=
357357
github.com/projectdiscovery/stringsutil v0.0.2/go.mod h1:EJ3w6bC5fBYjVou6ryzodQq37D5c6qbAYQpGmAy+DC0=
358358
github.com/projectdiscovery/tlsx v1.2.2 h1:Y96QBqeD2anpzEtBl4kqNbwzXh2TrzJuXfgiBLvK+SE=
359359
github.com/projectdiscovery/tlsx v1.2.2/go.mod h1:ZJl9F1sSl0sdwE+lR0yuNHVX4Zx6tCSTqnNxnHCFZB4=
360-
github.com/projectdiscovery/useragent v0.0.104 h1:Gxy5UrZ494Ce8CWicFECqc8LGRVknK5duUfBU39VhG0=
361-
github.com/projectdiscovery/useragent v0.0.104/go.mod h1:dq6N53FgzL5xEQkFBSpAtK70TbEOHZPLeG7LOorSS14=
360+
github.com/projectdiscovery/useragent v0.0.105 h1:yFGFTfWZ/RZP5XbGRJtvKcbRNnlGI6xfPRXHb8DWdhg=
361+
github.com/projectdiscovery/useragent v0.0.105/go.mod h1:jWG1BD2yu8EC3olt6Amke7BiyLkXzpErI7Jtzr/tWZM=
362362
github.com/projectdiscovery/utils v0.7.3 h1:kX+77AA58yK6EZgkTRJEnK9V/7AZYzlXdcu/o/kJhFs=
363363
github.com/projectdiscovery/utils v0.7.3/go.mod h1:uDdQ3/VWomai98l+a3Ye/srDXdJ4xUIar/mSXlQ9gBM=
364-
github.com/projectdiscovery/wappalyzergo v0.2.57 h1:g3M/lEX0epjY2pL5diqVtn3J0meLg8cG6qzX0pCAW+4=
365-
github.com/projectdiscovery/wappalyzergo v0.2.57/go.mod h1:lwuDLdAqWDZ1IL8OQnoNQ0t17UP9AQSvVuFcDAm4FpQ=
364+
github.com/projectdiscovery/wappalyzergo v0.2.58 h1:MpdnqvozBuFZ9lnrkAUJI7mqOTAoMcDMZ3PdvrqE3F0=
365+
github.com/projectdiscovery/wappalyzergo v0.2.58/go.mod h1:lwuDLdAqWDZ1IL8OQnoNQ0t17UP9AQSvVuFcDAm4FpQ=
366366
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
367367
github.com/refraction-networking/utls v1.7.1 h1:dxg+jla3uocgN8HtX+ccwDr68uCBBO3qLrkZUbqkcw0=
368368
github.com/refraction-networking/utls v1.7.1/go.mod h1:TUhh27RHMGtQvjQq+RyO11P6ZNQNBb3N0v7wsEjKAIQ=

runner/banner.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ const banner = `
1616
`
1717

1818
// Version is the current Version of httpx
19-
const Version = `v1.7.3`
19+
const Version = `v1.7.4`
2020

2121
// showBanner is used to show the banner to the user
2222
func showBanner() {

runner/ports_optimization_test.go

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
package runner
2+
3+
import (
4+
"testing"
5+
6+
"github.com/projectdiscovery/httpx/common/httpx"
7+
"github.com/stretchr/testify/require"
8+
)
9+
10+
func TestDetermineMostLikelySchemeOrder(t *testing.T) {
11+
tests := []struct {
12+
name string
13+
input string
14+
expected string
15+
}{
16+
{
17+
name: "port 80 should return HTTP",
18+
input: "example.com:80",
19+
expected: httpx.HTTP,
20+
},
21+
{
22+
name: "port 8080 should return HTTP",
23+
input: "example.com:8080",
24+
expected: httpx.HTTP,
25+
},
26+
{
27+
name: "port 443 should return HTTPS",
28+
input: "example.com:443",
29+
expected: httpx.HTTPS,
30+
},
31+
{
32+
name: "port 8443 should return HTTP (port > 1024)",
33+
input: "example.com:8443",
34+
expected: httpx.HTTP,
35+
},
36+
{
37+
name: "no port should return HTTPS",
38+
input: "example.com",
39+
expected: httpx.HTTPS,
40+
},
41+
{
42+
name: "port 443 with IP should return HTTPS",
43+
input: "1.2.3.4:443",
44+
expected: httpx.HTTPS,
45+
},
46+
{
47+
name: "port 80 with IP should return HTTP",
48+
input: "1.2.3.4:80",
49+
expected: httpx.HTTP,
50+
},
51+
}
52+
53+
for _, tc := range tests {
54+
t.Run(tc.name, func(t *testing.T) {
55+
result := determineMostLikelySchemeOrder(tc.input)
56+
require.Equal(t, tc.expected, result, "unexpected scheme for input %s", tc.input)
57+
})
58+
}
59+
}
60+
61+
func TestSwitchPortForFallback(t *testing.T) {
62+
// Test that when switching from HTTPS to HTTP on port 443, port should become 80
63+
// And when switching from HTTP to HTTPS on port 80, port should become 443
64+
tests := []struct {
65+
name string
66+
inputPort string
67+
inputProtocol string
68+
expectedNewPort string
69+
}{
70+
{
71+
name: "HTTPS:443 fallback should switch to port 80",
72+
inputPort: "443",
73+
inputProtocol: httpx.HTTPS,
74+
expectedNewPort: "80",
75+
},
76+
{
77+
name: "HTTP:80 fallback should switch to port 443",
78+
inputPort: "80",
79+
inputProtocol: httpx.HTTP,
80+
expectedNewPort: "443",
81+
},
82+
{
83+
name: "HTTPS:8443 fallback should keep port 8443",
84+
inputPort: "8443",
85+
inputProtocol: httpx.HTTPS,
86+
expectedNewPort: "8443", // non-default port stays the same
87+
},
88+
{
89+
name: "HTTP:8080 fallback should keep port 8080",
90+
inputPort: "8080",
91+
inputProtocol: httpx.HTTP,
92+
expectedNewPort: "8080", // non-default port stays the same
93+
},
94+
}
95+
96+
for _, tc := range tests {
97+
t.Run(tc.name, func(t *testing.T) {
98+
newPort := getPortForFallback(tc.inputPort, tc.inputProtocol)
99+
require.Equal(t, tc.expectedNewPort, newPort, "unexpected port for fallback")
100+
})
101+
}
102+
}
103+
104+
// getPortForFallback returns the port to use when falling back to the other protocol
105+
// This is the logic used in runner.go analyze function
106+
func getPortForFallback(currentPort, currentProtocol string) string {
107+
if currentProtocol == httpx.HTTPS && currentPort == "443" {
108+
return "80"
109+
}
110+
if currentProtocol == httpx.HTTP && currentPort == "80" {
111+
return "443"
112+
}
113+
return currentPort
114+
}
115+

runner/runner.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1754,10 +1754,21 @@ retry:
17541754
errString = strings.TrimSpace(splitErr[len(splitErr)-1])
17551755

17561756
if !retried && origProtocol == httpx.HTTPorHTTPS {
1757+
// switch protocol and adjust port accordingly
17571758
if protocol == httpx.HTTPS {
17581759
protocol = httpx.HTTP
1760+
// if port is 443 (default HTTPS), switch to 80 (default HTTP)
1761+
if URL.Port() == "443" {
1762+
URL.UpdatePort("80")
1763+
target.Host = net.JoinHostPort(URL.Hostname(), "80")
1764+
}
17591765
} else {
17601766
protocol = httpx.HTTPS
1767+
// if port is 80 (default HTTP), switch to 443 (default HTTPS)
1768+
if URL.Port() == "80" {
1769+
URL.UpdatePort("443")
1770+
target.Host = net.JoinHostPort(URL.Hostname(), "443")
1771+
}
17611772
}
17621773
retried = true
17631774
goto retry

snapcraft.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: httpx
22
summary: httpx is a fast and multi-purpose HTTP toolkit
33
description: |
44
httpx is a fast and multi-purpose HTTP toolkit allow to run multiple probers using retryablehttp library, it is designed to maintain the result reliability with increased threads.
5-
version: 'v1.7.3'
5+
version: 'v1.7.4'
66
icon: static/httpx-logo.png
77
license: MIT
88
base: core18

0 commit comments

Comments
 (0)