Python:在传递参数时从 URL 列表中读取

问题描述 投票:0回答:1

Python 问题在这里...我有两个包含以下数据的文件:

hosts.txt

google.com
target.com
bing.com

strings1.txt

x
y
z

我正在尝试构建 URL 并向它们发出 GET 请求,方法是读取

hosts.txt
中的主机列表,同时传入
strings1.txt
中的字符串列表作为查询参数。但是,My Script 仅向
hosts.txt
的第 1 行以及
strings1.txt
中的所有字符串发出请求,但随后脚本终止(请参阅:Output)。如何将查询参数列表传递到第一个主机,然后使用相同的查询参数移动到
hosts.txt
文件第 2 行中的下一个主机,依此类推?我尝试使用
next()
方法,但遇到了麻烦。任何帮助是极大的赞赏。谢谢你。

我的脚本

    with open('hosts.txt','r') as file:
        with open('strings1.txt','r') as strings:
            for line in file:
                host = line.strip()
                for string in strings:
                    url = f"https://{host}/?test={string}"
                    resp = requests.get((url)).status_code
                    print(f'Results for {url}\n{test}')

输出

Results for https://google.com/?test=x
 302
Results for https://google.com/?test=y
 302
Results for https://google.com/?test=z
 302
[...SCRIPT TERMINATES...]
python python-3.x python-requests
1个回答
0
投票

您正在耗尽

string
迭代器(它对
strings1.txt
中的行进行迭代,因此您只能看到主机上的一次迭代)。相反,将主机/字符串读取到列表中,然后发出请求:

with open("hosts.txt", "r") as f_hosts:
    hosts = list(map(str.strip, f_hosts))


with open("strings.txt", "r") as f_strings:
    strings = list(map(str.strip, f_strings))

for h in hosts:
    for s in strings:
        url = f"https://{h}/?test={s}"
        print(url)
        # requests.get(url)
        # ...

打印:

https://google.com/?test=x
https://google.com/?test=y
https://google.com/?test=z
https://target.com/?test=x
https://target.com/?test=y
https://target.com/?test=z
https://bing.com/?test=x
https://bing.com/?test=y
https://bing.com/?test=z
© www.soinside.com 2019 - 2024. All rights reserved.