【发布时间】:2018-06-05 07:34:16
【问题描述】:
我正在尝试抓取一个网站,我在 python 中使用 Tor 模块生成代理,然后使用 requests 模块抓取该网站。但是,带有代理的请求模块由网站识别并返回一个 api 页面(带有显示一些 api 信息的消息的 html)。但是,当我使用没有代理的请求时(使用我的原始 IP 地址),我得到了正确的响应。我的问题是:网站如何正确识别来自代理的呼叫必须被阻止并且必须接受来自原始 ip(我当前的 ip)的呼叫。
import requests
from stem import Signal
from stem.control import Controller
def renew_connection():
with Controller.from_port(port=9051) as controller:
controller.authenticate(password="my_password")
controller.signal(Signal.NEWNYM)
proxies_http = {
'http': 'http://127.0.0.1:8118'
}
url = 'http://www.websitename.com' #### Not showing real address
page_with_proxy = requests.get(url , headers=random_header , proxies = proxies_http , timeout = 5)
page = requests.get(url , headers=random_header , proxies = None , timeout = 5)
这里page_with_proxy 有一些 api 信息(获得一些链接并注册 api),但 page(其中proxies == None)有正确的网页信息和所有 html 详细信息(我能够找到所有 xpath) .有没有办法绕过这个,或者如果使用代理,网站如何轻松理解请求?
【问题讨论】:
标签: python html web-scraping proxy python-requests