Torna indietro   Hardware Upgrade Forum > Software > Programmazione

OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum
Abbiamo partecipato all'OVHcloud Summit 2025, conferenza annuale in cui l'azienda francese presenta le sue ultime novità. Abbiamo parlato di cloud pubblico e privato, d'intelligenza artificiale, di computer quantistici e di sovranità. Che forse, però, dovremmo chiamare solo "sicurezza"
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a
Abbiamo potuto mettere le mani in anteprima sul nuovo monitor MSI dedicato ai giocatori: un mostro che adotta un pannello QD-OLED da 26,5 pollici con risoluzione 2560 x 1440 pixel, frequenza di aggiornamento fino a 500 Hz e tempo di risposta di 0,03 ms GtG
DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro
DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro
DJI aggiorna la sua linea di droni ultraleggeri con Neo 2, un quadricottero da 160 grammi che mantiene la compattezza del predecessore ma introduce una stabilizzazione meccanica a due assi, sensori omnidirezionali e un sistema LiDAR
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 15-02-2017, 22:32   #1
skeleton
Member
 
L'Avatar di skeleton
 
Iscritto dal: Jul 2009
Messaggi: 81
[C++] Errore 403 - comunicare con pagina web tramite socket

Salve a tutti,

stavo cercando di scrivere un programma in grado di comunicare con diverse web page tramite socket e di salvare il loro contenuto html su client. In pratica gli indirizzi si trovano nel file "file.dat" e per ogni riga dello stesso il pc si mette in comunicazione con il server e riceve la pagina. Il problema nasce dal fatto che spesso (ma non sempre) il risultato del salvataggio della pagina html è
Codice:
HTTP/1.1 403 Forbidden

Content-Type: text/html; charset=iso-8859-1

Content-Length: 235

Date: Wed, 15 Feb 2017 20:28:26 GMT



<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//IT">
<HTML><HEAD>
<TITLE>403 Forbidden</TITLE>
</HEAD><BODY>
<H1>Forbidden</H1>
You don't have permission to access 
on this server.<P>
</BODY></HTML>
in cui compare un fatidico errore 403. A cos'è dovuto? E soprattutto come mai questo problema si presenta soltanto alcune volte?


Allego per completezza anche il programma in c++. Perdonate se è scritto male ma è il copia-incolla di diversi file .h e relativi .cpp che ho compattato per non creare ulteriore confusione.

Codice:
#include <winsock2.h>
#include <windows.h>
#include <fstream>
#include <iostream>
#include <string>
using namespace std;


int main(){
	int dataLength = 1;
	char buffer[10000];
	string sendbuf, text_recv;
	string site_name;
	fstream File ("file.dat", ios::in);
	
	cout <<"Download: \n\n";
	
	do{
		WSADATA data;
		WORD p;
		p = MAKEWORD(2, 0);
		if ( WSAStartup(p, &data) != 0){
			cout << "Errore:\n\"Sistema operativo su cui è stato eseguito il programma non valido\"";
			return 1;
		}
	
		SOCKET iResult, server;

		struct sockaddr_in server_addr;
		struct hostent *host;
		
		host = gethostbyname("it.wikipedia.org");
	
		//Inizializzazione della socket
		server = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
		
		//Definisco gli attributi dalla socket attraverso la struttura predefinita sockaddr_in
		server_addr.sin_family = AF_INET; //Address family
		server_addr.sin_port = htons(80); //Porta
		server_addr.sin_addr.s_addr = *((unsigned long*)host->h_addr);
		
		iResult = connect(server,(struct sockaddr*)&server_addr, sizeof(sockaddr_in));
		
		//Se ci sono errori nella connessione
		if (iResult != 0) {
			cout<< "Errore:\n\"Impossibile connettersi\"","Connection - Error";
			return 1;
		}
		
		
		File >> site_name;
		cout <<"\t -> "<<site_name<<endl;
		
		sendbuf = "GET /wiki/" + site_name + " http/1.1\nHOST: it.wikipedia.org\n\n";
		send(server,sendbuf.c_str(), sendbuf.length(), 0);
	
		//Creo file su cui salvo la pagina web
		site_name += ".txt";

		do{
			buffer[0] = 0;
			dataLength = recv(server,buffer,10000,0);
			text_recv.append (buffer, dataLength);
		} while(dataLength != 0);
		
		ofstream SaveFile(site_name.c_str(), ios::out);
		SaveFile<<text_recv;
		SaveFile.close();
		
		text_recv = "";
		
		/* Chiusura Comunicazione col Server */		
		closesocket(server);
		WSACleanup();
		
		Sleep(1500);
	} while (!File.eof());
	
	File.close();
	
	return 0;
}
Saluti a tutti e grazie in anticipo per l'aiuto
skeleton è offline   Rispondi citando il messaggio o parte di esso
Old 27-02-2017, 10:00   #2
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Ciao,
hai provato a navigare con un browser gli url che stai provando a scaricare?
I motivi per cui stai ottenendo 403 possono essere molteplici: pagine dietro autenticazione, controllo lato server sulla presenza di una sessione, cookie...
Ti merita usare una libreria come cUrl per gestire il protocollo http, sempre che tu non abbia voglia e tempo per implementarti un client http. In buona sostanza aprire un socket non è sufficiente
tomminno è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum OVHcloud Summit 2025: le novità del cloud...
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI C...
DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro DJI Neo 2 in prova: il drone da 160 grammi guada...
L'IA "seria" di Appian è diversa: inserita nei processi e rispetta dati e persone L'IA "seria" di Appian è divers...
Polestar 3 Performance, test drive: comodità e potenza possono convivere Polestar 3 Performance, test drive: comodit&agra...
Assassin's Creed: la serie Netflix sar&a...
Black Friday agli sgoccioli: ultime ore ...
Simulato un microchip quantistico con ol...
v16 Piston animal submarine: il nuovo as...
AMD conferma (per errore?) il Ryzen 7 98...
OnlyFans, stangata sui creator: anche i ...
Autovelox, censimento nazionale completa...
Il produttore tedesco di videocamere per...
La missione Transporter-15 di SpaceX ha ...
Il lancio del razzo spaziale riutilizzab...
Google integra la AI Mode anche in Cerch...
Apple Maps e Ads sono Gatekeeper? L'Euro...
Il nuovo pieghevole Huawei Mate X7 &egr...
L'app Apple Podcasts si comporta in modo...
Una copia fisica di Fortnite è st...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 08:56.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v