如何自动将从代理API获取IP更改为用于Selenium

yx2lnoni  于 2022-12-04  发布在  其他
关注(0)|答案(2)|浏览(171)
from selenium import webdriver
from selenium.webdriver.common.proxy import *
from selenium.webdriver.common.by import By
from time import sleep
import requests

response = requests.get("http://proxy.tinsoftsv.com/api/changeProxy.php?key=mykey_apiG&location=0")
print(response.json())

proxy_url = "127.0.0.1:9009"
proxy = Proxy({
    'proxyType': ProxyType.MANUAL,
    'httpProxy': proxy_url,
    'sslProxy': proxy_url,
    'noProxy': ''})

capabilities = webdriver.DesiredCapabilities.CHROME
proxy.add_to_capabilities(capabilities)

driver = webdriver.Chrome(desired_capabilities=capabilities)
driver.get("https://whoer.net/zh")

我遇到了一个问题。我从一个web服务租用了一个循环代理,我想通过api不断地改变IP。我用请求模块获得新的IP,它怎么能自动获得新的IP并替换旧的IP使用呢?我是一个新手,真的不太懂,希望有人能帮助我。非常感谢!
我阅读了服务网站的说明,但他们没有Python的教程

iswrvxsc

iswrvxsc1#

要更改Selenium webdriver使用的IP地址,可以执行以下操作:

from selenium import webdriver
from selenium.webdriver.common.proxy import *
from selenium.webdriver.common.by import By
from time import sleep
import requests

# Get the latest IP address from the proxy service
response = requests.get("http://proxy.tinsoftsv.com/api/changeProxy.php?key=mykey_apiG&location=0")
ip = response.json()["ip"]
port = response.json()["port"]

# Update the proxy URL with the new IP address
proxy_url = f"{ip}:{port}"

# Create a proxy object with the updated proxy URL
proxy = Proxy({
    'proxyType': ProxyType.MANUAL,
    'httpProxy': proxy_url,
    'sslProxy': proxy_url,
    'noProxy': ''})

# Update the capabilities object to use the new proxy
capabilities = webdriver.DesiredCapabilities.CHROME
proxy.add_to_capabilities(capabilities)

# Create a new instance of the webdriver with the updated capabilities
driver = webdriver.Chrome(desired_capabilities=capabilities)
driver.get("https://whoer.net/zh")
nhaq1z21

nhaq1z212#

代码似乎正确导入了必要的模块,并使用它们创建了一个Proxy对象和一个webdriver.chrome对象。
但是,该代码存在一些问题,可能会导致其无法按预期方式工作:
proxy_url变量被设置为“127.0.0.1:9009”,这是本地主机的IP地址和端口号。这不是一个有效的代理服务器,它将不允许webdriver.Chrome对象访问互联网。您应该将其替换为有效的代理服务器IP地址和端口号。
代码中未使用响应变量。requests.get()方法用于从代理API获取响应,但未以任何方式保存或使用该响应。应使用该响应获取有效的代理服务器IP地址和端口号,或从代码中删除requests.get()方法。
sleep()方法被导入但未在代码中使用。这不会导致任何错误,但它是不必要的,可以从代码中删除。
下面是更正后的代码:

from selenium import webdriver
from selenium.webdriver.common.proxy import *
from selenium.webdriver.common.by import By
import requests

response = requests.get("http://proxy.tinsoftsv.com/api/changeProxy.php?key=mykey_apiG&location=0")
proxy_url = response.json()["ip"]

proxy = Proxy({
    'proxyType': ProxyType.MANUAL,
    'httpProxy': proxy_url,
    'sslProxy': proxy_url,
    'noProxy': ''})

capabilities = webdriver.DesiredCapabilities.CHROME
proxy.add_to_capabilities(capabilities)

driver = webdriver.Chrome(desired_capabilities=capabilities)
driver.get("https://whoer.net/zh")

相关问题