免费试用Web Unblocker - 一款由AI驱动的代理解决方案,可以绕过最复杂的反机器人系统。
项目描述
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。
请注意以下事项
--proxy
或x
用于代理。这里,我们用它作为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。我们已在amazon和google文件夹中提供了许多示例。
了解更多关于Web Unblocker的信息。
如果遇到任何问题,请联系支持。
项目详情
web-unblocker-0.1.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9bf865bbbb021442e9bfa253e5ad084f9854391d3a820e5140672cb76fffea9e |
|
MD5 | c5a4aa13050269c53a44eaf807baaea9 |
|
BLAKE2b-256 | 419635d5fbadcf242bd8c32964f7f042fc59d2e96d3ea7c30f7f172b4f4fa611 |
web_unblocker-0.1.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | df2060ec4819a13a4e469da3383c0242c0a3d2e5636d4cfed3dc7a78617fefa3 |
|
MD5 | 6dfb00e2296211f5f2e35c75f4aa79c6 |
|
BLAKE2b-256 | 7b0b1f12b1169ee419faa085e087ab3e909be3a3c2f1f8f80d32c5152bcbc8a5 |