跳转到主要内容

免费试用Web Unblocker - 一款由AI驱动的代理解决方案,可以绕过最复杂的反机器人系统。

项目描述

Web Unblocker

Web unblocker

简介

Web Unblocker 是一款能够绕过复杂反机器人系统的AI驱动代理解决方案。

Web Unblocker具有以下功能

  • 基于机器学习的代理管理
  • 动态浏览器指纹识别
  • 基于机器学习的响应识别
  • 自动重试功能
  • JavaScript渲染

入门

从您的终端执行以下 curl 命令

curl --insecure --proxy unblock.oxylabs.io:60000 --proxy-user "USERNAME:PASSWORD" https://ip.oxylabs.io

输出应该是随机IP。

请注意以下事项

  • --proxyx 用于代理。这里,我们用它作为Web Unblocker的URL
  • --insecure 或等效的 -k 对于Web Unblocker的正常工作是必需的
  • --proxy-user-U 用于代理用户和密码。如果您没有,请注册 免费试用

如果您观察到成功率低或检索到空内容,请尝试在您的请求中添加额外的 "x-oxylabs-render: html" 标头。

您可以在 getting_started.py 中找到等效的 Python 代码。

import requests

proxies = {
    'http': 'http://USERNAME:PASSWORD@unblock.oxylabs.io:60000',
    'https': 'http://USERNAME:PASSWORD@unblock.oxylabs.io:60000'
}

url = 'https://ip.oxylabs.io'
response = requests.get(url,
        proxies=proxies,
        verify=False) # disable SSL certificate verification

print(response.text)

InsecureRequestWarning

使用 verify=False 的一个副作用是您可能会收到 InsecureRequestWarning 警告。

添加以下两行以抑制这些警告

from requests.packages.urllib3.exceptions import InsecureRequestWarning

requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

抓取Google搜索结果

示例Python脚本

以下是一个 示例脚本,用于抓取 Google 搜索引擎的结果。

import requests
import bs4

keyword = "shoes"
url = f'https://google.com/search?q={keyword}'


request_result = requests.get(url)
soup = bs4.BeautifulSoup(request_result.text, "lxml")
search_headings = soup.find_all('h3')
for info in search_headings:
    print(info.getText())

如果您多次运行此代码,您将被 Google 封禁。

使用Web Unblocker

绕过所有可能的封禁的最简单方法是使用 Web Unblocker。添加以下行以使用 Web Unblocker,就像您使用代理一样。

proxies = {
    'http': 'http://USERNAME:PASSWORD@unblock.oxylabs.io:60000',
    'https': 'http://USERNAME:PASSWORD@unblock.oxylabs.io:60000'
}

# Sending the proxy information
response = requests.get(url,
    proxies=proxies,
    verify=False)

对于完整的代码,请参阅 google_unblocked.py

使用同一IP

如果您使用 Web Unblocker 抓取多个页面,您可能希望保持相同的 IP 或地理位置。

要使用相同的 IP,发送一个 X-Oxylabs-Session-Id 标头并使用任何随机字符串作为其值。

headers = {
    "X-Oxylabs-Session-Id": "aRandomString"
}

response = requests.get(
    'https://www.google.com/search?q=shoes',
    verify=False, 
    proxies=proxies,
    headers=headers,
)

使用同一位置

除了使用相同的 IP,您还可以从特定位置轮换 IP。为此,发送 x-oxylabs-geo-location 标头并将其值设置为国家、州、城市、坐标或半径。

headers = {
    "x-oxylabs-geo-location": "New York,New York,United States"
}

response = requests.get(
    'https://www.google.com/search?q=shoes',
    verify=False, 
    proxies=proxies,
    headers=headers,
)

有关完整示例,请参阅 google_location.py

有关更多详细信息,请参阅 文档

发送自定义头信息

您可以将标准或自定义标头添加到请求中。

一个可能的用例是获取特定设备的搜索结果。

headers = {
    "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 16_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.3 Mobile/15E148 Safari/604.1",
    "Accept-Language": "en-US",
}

response = requests.get(url, 
    proxies=proxies, 
    verify=False, 
    headers=headers)

渲染和截图

Web Unblockers 完全支持渲染。如果您想渲染页面,请添加如下所示的客户标头

headers = {
    "X-Oxylabs-Render": "html"
}

在此特定示例中,Google 不需要渲染。但是,这可以用来截图。发送相同的标头,但将值更改为 png

headers = {
    "X-Oxylabs-Render": "png"
}

response = requests.get(
    url, verify=False, proxies=proxies, headers=headers,
)

# Save screenshot as PNG file
with open("google_rendered.png", 'wb') as f:
    f.write(response.content)

有关完整源代码,请参阅 google_screenshots.py

抓取Amazon

本节向您展示如何使用 Web Unblocker 抓取 Amazon。

我们从一个简单的脚本开始,并将添加更多功能。

示例Python脚本

检查 basic_script.py 中的代码。首先,您会注意到,如果没有有效的用户代理,Amazon 甚至不会返回响应。

其次,执行以下脚本几次后,Amazon 将会封禁您。

import requests
url = 'https://www.amazon.com/Bose-QuietComfort-45-Bluetooth-Canceling-Headphones/dp/B098FKXT8L'
custom_headers = {
    'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36',
    'accept-language': 'en-US,en;q=0.9',
}

response = requests.get(url, headers=custom_headers)

print(response.text)

使用Web Unblocker

绕过所有封禁的最简单方法是使用 Web Unblocker。

添加以下行以使用 Web Unlcoker,就像您使用代理一样。

proxies = {
    'http': 'http://USERNAME:PASSWORD@unblock.oxylabs.io:60000',
    'https': 'http://USERNAME:PASSWORD@unblock.oxylabs.io:60000'
}

response = requests.get(url,
    proxies=proxies,
    verify=False,
    headers=custom_headers
)

一旦您有了响应,您可以使用 BeautifulSoup 按如下方式提取产品标题和价格

soup = bs4.BeautifulSoup(response.text, "lxml")

product_title = soup.find('span', id="productTitle")
price_element = soup.select_one("div[role='radio'] [class='a-price-whole']")

print(product_title.getText())
if price_element:
    print(price_element.getText())

有关完整代码,请参阅 amazon_unblocked.py

发送自定义头信息

如示例 Python 脚本所示,您不能没有至少一个标头(用户代理)抓取 Amazon。

同样,您也可以发送任何其他自定义标头,这些标头将通过 Web Unblocker 转发到 Amazon。

url = 'https://www.amazon.com/Bose-QuietComfort-45-Bluetooth-Canceling-Headphones/dp/B098FKXT8L'

custom_headers = {
    'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36',
    'accept-language': 'en-US,en;q=0.9',
}
proxies = {
    'http': 'http://USERNAME:PASSWORD@unblock.oxylabs.io:60000',
    'https': 'http://USERNAME:PASSWORD@unblock.oxylabs.io:60000'
}


response = requests.get(url,
                        proxies=proxies,
                        verify=False,
                        headers=custom_headers
                        )

有关完整代码,请参阅 amazon_unblocked.py

渲染

通常,发送用户代理就足够用于抓取 Amazon,如前例所示。如果您仍然遇到问题,可以通过发送 X-Oxylabs-Render 标头来渲染页面

custom_headers = {
    "X-Oxylabs-Render": "html"
}
#...
response = requests.get(url,
                        proxies=proxies,
                        verify=False,
                        headers=custom_headers
                        )

其余代码保持不变。

有关完整代码,请参阅 amazon_rendering.py

设置ZIP代码或位置

对于 Amazon 页面使用 x-oxylabs-geo-location 参数值将产生具有相应配送偏好设置的对应结果。

您可以通过几种方式使用此参数来获取正确本地化的 Amazon 结果。对于大多数 Amazon 域,您可以发送邮编或 2 字母 ISO 3166-1 alpha-2 国家代码

请注意,这与抓取 Google 不同,在抓取 Google 时,您不能指定邮编,而是可以发送城市。有关更多详细信息,请参阅 文档

headers = {
    "x-oxylabs-geo-location": "11001" #New York ZIP
}

response = requests.get(
    url,
    verify=False, 
    proxies=proxies,
    headers=headers,
)

结论

您现在应该能够使用Web Unblocker抓取Google和Amazon。我们已在amazongoogle文件夹中提供了许多示例。

了解更多关于Web Unblocker的信息。

如果遇到任何问题,请联系支持。

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

web-unblocker-0.1.0.tar.gz (5.1 kB 查看哈希值)

上传时间

构建分布

web_unblocker-0.1.0-py3-none-any.whl (4.8 kB 查看哈希值)

上传时间 Python 3

支持