Qt cho phép bạn cung cấp tác nhân người dùng dựa trên URL thay vì một tác nhân người dùng duy nhất cho dù URL là gì. Ý tưởng này sau đó là để trả lại user agent bất cứ lúc nào một trang web mới được tạo ra:
class UserAgentWebPage : public QWebPage {
QString userAgentForUrl(const QUrl &url) const {
return QString("My User Agent");
}
};
Để sử dụng trang thay vì trang tiêu chuẩn mà được tạo ra, bạn có thể thiết lập rằng trang trên đối tượng điều khiển trình duyệt trước đưa ra yêu cầu:
yourWebView->setPage(new UserAgentWebPage(parent));
Tôi thực sự mong đợi một nhà máy có mặt ở nơi nào đó đảm bảo rằng trang web được tạo luôn là một loại nhất định, nhưng tôi không thấy.
Tuy nhiên, tùy chọn khác nên để thiết lập các tiêu đề user agent trong QNetworkRequest:
QNetworkRequest request = new QNetworkRequest();
request->setRawHeader(
QString("User-Agent").toAscii(),
QString("Your User Agent").toAscii()
);
// ... set the URL, etc.
yourWebView->load(request);
Bạn thực sự muốn kiểm tra xem nó toAscii()
hoặc toUtf8()
hoặc một trong những biến thể khác như tôi không chắc chắn chính xác những gì tiêu chuẩn HTTP cho phép.
Nguồn
2010-10-11 14:32:22
Cảm ơn Kaleb! Đó là những gì tôi đang tìm kiếm. –